linux双网卡配置路由的实战讲解
一、环境:
三台直接相连的计算机主机
PC1<------>PC2<------>PC3
其中PC2上有两块网卡eth0、eth1,分别与PC3、PC1相连
------代表网线
二、需求:
将PC2配置为路由器模式,用来在PC1、PC3之间转发报文
三、方法:
将三台主机按照环境所要求用交叉线直接连网后,为三台主机分配网段并配置IP地址。
网段及IP地址分配如下:
主机名 所在网段 分配IP 网关
PC1: 192.168.2.0/24 192.168.2.2/24 192.168.2.1
PC2: 192.168.2.0/24 192.168.2.1/24 '与PC1相连的网卡的配置' eth1
192.168.1.0/24 192.168.1.1/24 '与PC3相连的网卡的配置' eth0
PC3: 192.168.1.0/24 192.168.1.2/24 192.168.1.1
按照上表所示分别将主机IP地址配置好,其中要注意的是,要想使PC2具有报文转发功能,在PC2
上检查/proc/sys/net/ipv4/ip_forward中的值是否为1
命令:
#more /proc/sys/net/ipv4/ip_forward
如果显示其值不为1而是0 输入以下命令:
#echo '1' > /proc/sys/net/ipv4/ip_forward
打开IP转发功能
PC2中的其它配置:
为PC2添加路由,命令:
#route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
#route add -net 192.168.2.0 netmask 255.255.255.0 dev eth1
四、验证:
PC1:
ping网关
#ping 192.168.2.1
#ping 192.168.1.1
ping PC3:
#ping 192.168.1.2
PC3:
ping网关
#ping 192.168.1.1
#ping 192.168.2.1
pint PC1
#ping 192.168.2.2
五、Bug调试:
出错的原因主要集中在PC2两个地方
1.检查PC2是否允许IP报文转发(/proc/sys/net/ipv4/ip_forward的值是否为1)
2.路由设置是否正确(#route 回车查看)
其中可能出现问题:(默认路由的改变)
linux主机原网卡eth0,IP地址为172.19.74.X/24,新增一块网卡eth1,配置另外一个网段的IP 10.219.17.X/24,发现各自到网关都通,但原172.19.74.X段的主机不能访问这台主机了。
查看路由表发现,默认路由走到新增的那块网卡eth1上去了:
要删掉这条默认的路由,再亲增一条默认路由走原来的eth0
命令:
route del default gw 10.219.17.1 dev eth1
route add default gw 172.19.74.1 dev eth0
再查看路由表:
[root@CallCenter-SIP ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
172.19.74.0 * 255.255.255.0 U 0 0 0 eth0
10.219.17.0 * 255.255.255.0 U 0 0 0 eth1
link-local * 255.255.0.0 U 0 0 0 eth1
default 172.19.74.1 0.0.0.0 UG 0 0 0 eth0
然后,组网的一切设备都恢复正常了。
另一种方法可以通过iptables端口转发来实现
共享语句:192.168.1.0/24内网 221.235.206.51外网
iptables-APOSTROUTING-tnat-s192.168.1.0/24 -oeth1-jSNAT--to-source221.235.206.51
echo1>/proc/sys/net/ipv4/ip_forward