开启内核路由转发使内网机器通过Gnu/Linux上网
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开启内核路由转发使内网机器通过Gnu/Linux上网相关的知识,希望对你有一定的参考价值。
问题描述
内网客户机器通过一台Gnu/Linux服务器访问互联网。服务器的eth0网卡可以访问互联网,eth1网卡与内网相连。客户端要通过该服务端访问互联网。
实验环境
服务器: |
网卡 | IP | 子网掩码 | 网关 |
---|---|---|---|---|
eth0 | 192.168.16.220 | 255.255.255.0 | 192.168.16.1 | |
eth1 | 192.168.15.222 | 255.255.255.0 | 192.168.15.1 |
客户端:
网卡 | IP | 子网掩码 | 网关 |
---|---|---|---|
eth0 | 192.168.15.111 | 255.255.255.0 | 192.168.15.222 |
服务器与客户端的配置
服务器端的配置
查看服务器上的路由表信息,
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.16.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.15.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 192.168.16.1 0.0.0.0 UG 0 0 0 eth0
开启服务器内核的路由转发功能,使其具有路由功能
# echo 1 > /proc/sys/net/ipv4/ip_forward
# 或者使用下面的方式
# sysctl -w net.ipv4.ip_forward=1
# sysctl -p
最好修改/etc/sysctl.conf
配置文件,使其配置永久生效。
配置NAT规则
经过第二部分配置后,虽然可以ping相关的IP地址,但是内网主机还是无法上网。问题在于内网主机的IP地址是无法在公网上路由的。因此,需要转换成Linux系统主机可以上网的IP(注:这里我们之所以不说是公网IP,是因为Linux系统可以直接上外网的IP同样是内网IP。但是该内网IP(192.168.16.220)已经通过一些机制,实际上同样是NAT的方式,可以访问外网了,因此我们只需将Host A的IP转换成Linux系统eth0接口的IP即可)。
以下是我们配置的NAT规则:
# iptables -t nat -A POSTROUTING -s 192.168.15.0/24 -o eth0 -j SNAT --to-source 192.168.16.220
# iptables -A FORWARD -i eth1 -j ACCEPT
客户端的配置
客户端的设置比较简单,客户端的网关IP地址为服务器内网IP地址,DNS与服务器的一样即可。
测试
如果客户端可以ping的通www.baidu.com,则说明内网可以访问互联网。
以上是关于开启内核路由转发使内网机器通过Gnu/Linux上网的主要内容,如果未能解决你的问题,请参考以下文章