使用双网口有两种情况,以下以MYD-AM335X为例,说明如何同时使用开发板的两个网口。第一种:不同网段如果两个网口配置成不同网段,那就很简单,分别把两个网口配置成对应的IP地址,比如eth0连接到路由器上(网关192.168.1.1),eth1连接到本地电脑上(网关169.254.1.1),那么,配置好eth0和eth1的IP地址就可以了:12
ifconfig
eth0 192.169.1.100 up
ifconfig
eth1 169.254.1.100 up
在开发板上,通过分别 PING 路由器上其他电脑,以及本地PC的IP地址可以验证是否已经连通:12
ping
eth0 192.169.1.99 (路由器上某台电脑 IP)
ping
eth1 169.254.1.99 (本地电脑 IP)
第二种:相同网段注意:这个方法暂未验证通过,谨慎使用!1)配置两个网卡的IP地址为静态IP,1
vi
/etc/network/interfaces
输入如下内容:01020304050607080910111213
auto eth0
iface eth0 inet static
address 192.168.1.250
netmask 255.255.255.0
gateway 192.168.1.1
auto eth1
iface eth1 inet static
address 169.254.1.250
netmask 255.255.0.0
gateway 169.254.1.1
保存配置信息并重新启动网卡,使配置生效:1
/etc/init
.d
/networking
restart
或者1
/etc/init
.d
/S40network
restart
2)设置路由表使用route命设置第一块网卡eth0的路由表:route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0设置第二块网卡eth1的路由表:route add -net 169.254.1.0 netmask 255.255.0.0 dev eth1使用route命令来观察路由情况: 1234567
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 169.254.1.1 0.0.0.0 UG 0 0 0 eth1
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth1
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
通过以下命令可以看到网口的网关:12
netstat
–r
ip route show
3.增加路由规则
# ip route flush table tel # ip route add default via 114.80.0.3 dev eth0 src 114.80.0.4 table tel # ip ruleadd from 114.80.0.4 table tel此处是设置电信的网关,并可实现让电信的资源访问只从eth0网卡出去# ip route flush table cnc # ip route add default via 112.65.0.1 dev eth1 src 112.65.0.2 table cnc # ip rule add from 112.65.0.2 table cnc此处是设置联通的网关,并可实现让联通的资源访问只从eth1网卡出去4.配置networking启动脚本文件 在结尾exit 0之前增加如下内容
# vi /etc/init.d/networkingip route flush table tel ip route add default via 114.80.0.3 dev eth0 src 114.80.0.4 table tel ip rule add from 114.80.0.4 table telip route flush table cnc ip route add default via 112.65.0.1 dev eth1 src 112.65.0.2 table cnc ip rule add from 112.65.0.2 table cncexit 05,退出并重启网络
# /etc/init.d/networking restart此时再测试机器网络情况,就会发现电信和联通的地址都可以正常访问了。此方法还可以实现让从电信IP过来的请求按照电信路由返回,从网通IP过来的请求从网通路由返回。补充:网上有些大神说如果服务器重启,或者网络服务重启,上述的路由规则就失效了,所以你需要把上面这段命令写入系统启动脚本和网络启动脚本如果是ubuntu/debian,系统启动脚本是/etc/rc.local 如果是RedHat/centos,系统启动脚本是/etc/rc.d/rc.local如果是ubuntu/debian,网络启动脚本是/etc/init.d/networking 如果是RedHat/centos,网络启动脚本是/etc/rc.d/init.d/network如果是MYD-SAM9X5开发板,系统启动脚本是/etc/rc5.d/对于系统启动脚本本次并没有做更改只是更改了网络启动脚本,有兴趣的同学可以测试下。本文出自 “longWind” 博客,请务必保留此出处http://longwind.blog.51cto.com/419072/806302