/****************************截屏******************************************/
root@freescale /mnt$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
/****************************截屏******************************************/
用route -n命令看:
1. 第一行表示,发往192.168.0.0这个网络的数据包,不需要经过网关(也即GateWay为0.0.0.0),且数据包经由eth0这个接口出去。
执行ip route add default via 192.168.0.1 dev
eth0这条命令后,出现第二行(注意:如果设置了default默认路由,则所有网卡的包都会走这个路由,无线也会,所以会造成
无线出问题,尽量不用这个方式,而是应当具体指定目标地址)
2. 第二行表示,所有没有明确地址的数据包(也即Destination为0.0.0.0),全都经由eth0这个接口发往192.168.0.1这个地址。
注意:0.0.0.0在不同的地方表示不同的含义,例如在netstat -n结果里
0.0.0.0表示本机所有地址。
在一些老的软件里,0.0.0.0还被用作广播地址。
3. 仅仅ip route add default dev eth0可以添加一条路由:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 eth0
也就是说,没指定网关,但是,这样ping 8.8.8.8是不通的。
4. ifconfig eth0 192.168.0.10 netmask 255.255.255.0会生成一条路由:
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
也就是说,即使不指定网关,系统也会根据IP和子网掩码自动计算出网段,从而eth0能与网段内的地址通信。也就是说,除了指定默认网关(路由)时网关是有一条命令执行到系统中的,给其它网口指定的网关实际上只是个配置项,它并非存在一条命令执行到系统中,而是在以后添加特殊路由时用它,例如下面的./route
add -host 219.143.118.169 gw 192.168.0.2。
一个无线和有线共用的配置:
./route add -host 219.143.118.169 gw 192.168.0.2
./route add -host 222.133.11.150 gw 192.168.0.2
./route add -host 10.102.204.118 gw 192.168.0.1
# make the iptables rules take effect
iptables -F
echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE