用出站接口,意思就是去往指定目标网络从这个接口丢出去,适用于点到点网络,和ARP无关,点到点网络本身是可以不需要地址的。除了你就是我,除了我就是,你要不要地址、寻址根本没什么意思。所以用出站接口写静态路由,路由表里显示的是直连。
用下一跳IP地址,下一跳IP地址,叫递归静态路由,路由器在转发数据包到目标网络的时候,首先要先解析下一跳的可达性,换句话说总共要解析两次,从转发效率上来说低于直连静态路由(用出站口)。递归静态路由一般用在多路访问环境,所以下一跳理论上来说必须指定一个IP地址,不能像点到点那样随便乱丢包。
现在的新问题是,按照这个原理,我们在以太网上做静态路由的时候,为什么下一跳指定出站接口,路由器依然知道如何转发数据包呢?按照我们刚才讲的理论,在多路访问环境下如果用出站接口做静态路由,路由器应该不知道下一跳是谁才对。这是为什么呢?
答案是代理ARP。但是这样做也有很大的缺点,就是说理论上本机最多会产生2^32条ARP缓存,相当消耗内存。所以多路访问环境不建议使用直连静态路由,建议采用递归静态路由。
在配置静态路由时,即可指定接口,也可指定下一跳。使不同的网段的主机通信,到底采用哪种方法,需要根据实际情况而定,在点到点的网络环境中,无论是指定下一跳地址还是接口地址,其效果都一样。但是在广播网络环境下,指定下一跳地址或接口地址就会起到不同的效果,如果指定为接口地址的话,那么不管数据包的目标地址是否有效,每次数据包到达时都会触发一个ARP请求,又因为ARP代理在IOS环境下默认是打开的,这意味着路由器需要配备大量的ARP高速缓存,而如果指定为下一跳地址的话,仅当第一个去往目的地址的数据包到达时才会触发ARP请求。
网关和接口确定过程
在确定使用的路由项后,网关和接口通过以下方式确定:
如果路由项中的网关地址为空或者为本地计算机上的某个网络接口,那么在发送数据包时:
如果路由项中的网关地址并不属于本地计算机上的任何网络接口,那么在发送数据包时:
-
通过路由项中对应的网络接口发送;
-
源IP地址为路由项中对应网络接口的IP地址;
-
源MAC地址路由项中对应网络接口的MAC地址;
-
目的IP地址为接收此数据包的目的主机的IP地址;
-
目的MAC地址为网关的MAC地址;
在此以上面的路由表为基础,举例进行说明:
http://wdqfirst.blog.163.com/blog/static/113347411201122825221701/
和单播IP地址 192.168.1.8 的通信:在进行相与计算时,1、3 项匹配,但是3项为最长匹配路由,因此选择3项。3项的网关地址为本地计算机的网络接口192.168.1.6,因此发送数据包时,目的IP地址为 192.168.1.8、目的MAC地址为192.168.1.8的MAC地址(通过ARP解析获得)。
和单播IP地址 192.168.1.6 的通信:在进行相与计算时,1、3、6 项匹配,但是6项为最长匹配路由,因此选择6项。6项的网关地址为本地环回地址127.0.0.1,因此直接将数据包发送至本地环回地址。
和单播IP地址 192.168.1.245 的通信:在进行相与计算时,1、3、4、5 项匹配,但是4、5项均为最长匹配路由,所以此时根据跃点数进行选择,5 项具有更低的跃点数,因此选择5项;在发送数据包时,目的IP地址为192.168.1.254、目的MAC地址为192.168.1.7的MAC地址 (通过ARP解析获得)。
和单播IP地址 10.1.1.1 的通信:在进行相与计算时,只有 1 项匹配;在发送数据包时,目的IP地址为10.1.1.1、目的MAC地址为192.168.1.1的MAC地址(通过ARP解析获得)。
和子网广播地址 192.168.1.255 的通信:在进行相与计算时,1、3、4、5、7 项匹配,但是7项为最长匹配路由,因此选择7项。7项的网关地址为本地计算机的网络接口,因此在发送数据包时,目的IP地址为 192.168.1.255,目的MAC地址为以太网广播地址FF:FF:FF:FF:FF:FF。
配好ethWan 但是不能ping通网关?
> ping 192.168.10.134
PING 192.168.10.134 (192.168.10.134): 56 data bytes
--- 192.168.10.134 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss
>
>
> wan show
VCC Con. Service Interface Proto. IGMP Status IP
ID Name Name address
N/A 0 pppoe_usb3g ppp7 PPPoE Disable Unconfigured (null)
N/A 0 ipoe_eth0 eth0 IPoE Enable Connected 192.168.10.86
>
> route show
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.0 * 255.255.255.0 U 0 0 0 br0
192.168.10.0 * 255.255.255.0 U 0 0 0 eth0
192.168.10.0 192.168.10.134 255.255.255.0 UG 1 0 0 br0
default 192.168.10.134 0.0.0.0 UG 0 0 0 eth0
>
> ping 192.168.10.134
PING 192.168.10.134 (192.168.10.134): 56 data bytes
^C
--- 192.168.10.134 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss
>
>
> ifconfig br0
br0 Link encap:Ethernet HWaddr 00:1A:2B:07:11:00
inet addr:192.168.10.85 Bcast:192.168.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING ALLMULTI MULTICAST MTU:1500 Metric:1
RX packets:3121 errors:0 dropped:0 overruns:0 frame:0
TX packets:2477 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:391982 (382.7 KiB) TX bytes:2480685 (2.3 MiB)
> ifconfig br0 192.168.1.85
> route show
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 br0
192.168.10.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.10.134 0.0.0.0 UG 0 0 0 eth0
>
> ping 192.168.10.134
PING 192.168.10.134 (192.168.10.134): 56 data bytes
64 bytes from 192.168.10.134: seq=0 ttl=64 time=1.221 ms
64 bytes from 192.168.10.134: seq=1 ttl=64 time=1.151 ms
64 bytes from 192.168.10.134: seq=2 ttl=64 time=2.143 ms
64 bytes from 192.168.10.134: seq=3 ttl=64 time=1.561 ms
总结:lan和wan的网段不能相同