现在的位置: 首页 > 综合 > 正文

双网卡网络转发

2013年09月21日 ⁄ 综合 ⁄ 共 1548字 ⁄ 字号 评论关闭

现有双网卡的ubuntu连接内外两个网

外网网卡eth0, 网段 192.168.63.0

内网网卡eth1, 网段 10.147.9.0

目标,内网其他设备如10.147.9.70可以访问外网的设备如192.168.63.1

首先要设置双网卡同时使用 

$ sudo vim /etc/network/interfaces

内容如下

auto lo

iface lo inet loopback

iface eth1 inet static
address 10.147.9.250
netmask 255.255.0.0
gateway 10.147.9.1

auto eth1

注,其中外网段似乎是在gnome里设的,所以没有提及,具体有待研究。

此时内外网基本联通

在内网其他设备如 10.147.9.70上边增加一条临时路由,重启后失效

windows这样设

route add 192.168.63.0 mask 255.255.255.0 10.147.9.250

如果是永久性设置

route add -p 192.168.63.0 mask 255.255.255.0 10.147.9.250

linux 临时路由添加

route add -net 192.168.63.0 netmask 255.255.255.0 gateway 10.147.9.250

ubuntu 永久静态路由添加

$sudo vim /etc/rc.local

route add -net 192.168.63.0 netmask 255.255.255.0 gateway 10.147.9.250

把上面这句加到exit 0 上边就行

意思是说所有发往192.168.63这个网段的地址全部先发往10.147.9.250

而不是系统原来的默认网关10.147.9.1


从10.147.9.70 ping 10.147.9.250 通

从10.147.9.70 ping 192.168.63.50 (同一设备的外网卡地址) 通

从10.147.9.70 ping 192.168.63.1 外网网关 不通

从10.147.9.250 ping 10.147.9.70 通

从192.168.63.50 ping 192.168.63.1 通


参考了很多资料, 说iptables可以实验网桥或路由的转发功能

具体操作如下:

开启ipv4的转发功能

2个地方要改

$ sudo vim /etc/sysctl.conf

把下面这句的#号去掉

#net.ipv4.ip_forward=1

还有

$ sudo vim /proc/sys/net/ipv4/ip_forward

把0改成1

然后运行下列命令iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface eth1 -j ACCEPT

然后测试从10.147.9.70 ping 192.168.63.1通了,庆祝一下
还有个问题,就是关机以后不能保存设置,就是说再次开机要再次运行上边4条命令
研究了一下午,终于搞定。
把上边4条命令加到开机自动运行的脚本里面即可。
这也是Ubuntu的小窍门
$sudo vim /etc/rc.local
把上边四条命令加到
exit 0 上边就行

短短一篇文章, 好长时间的探索,拿出来跟大家分享,我是从别人那里学到的经验,也把经验分享给更多的人,让大家少走弯路。

续:
其实这就是个网桥转发的例子
内网与外网通过一个双网卡的服务器相连
当内网访问一个外网的地址是,它把请求发到了网关的内网网卡上,iptablesd再通过另一个连接外网的网卡把这个请求发到对应的外网服务器上,完成转发。

抱歉!评论已关闭.