bash

Linux 最多可以支持 255 张路由表,在默认情况下,系统有三个路由表,这三个路由表的功能如下:

  • local路由表(id为255):路由表local包含本机路由及广播信息。例如,在本机上执行ssh 127.0.0.1时,就会参考这份路由表的内容,在正常情况下,只要配置好网卡的网络设置,就会自动生成local路由表的内容,我们应该也不必修改其内容。
ip route show table local
  • main路由表(id为254):使用传统命令route -n所看到的路由表就是main的内容。Linux系统在默认情况下使用这份路由表的内容来传输数据包,因此,其内容极为重要,在正常情况下,只要配置好网卡的网络设置,就会自动生成main路由表的内容。
ip route show table main
  • default路由表(id为253):最后是default路由表,这个路由表在默认情况下内容为空;除非有特别的要求,否则保持其内容为空即可。
ip route show table default

Flags字段

  • UH–>主机路由,子网掩码为 255.255.255.255
  • U–>网络路由,子网掩码为
  • UG–>默认路由,子网掩码为 0.0.0.0
route add -host 192.168.1.2 dev eth0 
route add -host 10.20.30.148 gw 10.20.30.40
route add -net 10.20.30.40 netmask 255.255.255.248 eth0
route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
route add -net 192.168.1.0/24 eth1
route add default gw 192.168.1.1

route del -host 192.168.1.2 dev eth0:0
route del -host 10.20.30.148 gw 10.20.30.40
route del -net 10.20.30.40 netmask 255.255.255.248 eth0
route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
route del -net 192.168.1.0/24 eth1
route del default gw 192.168.1.1
route add default gw 10.0.0.254
# 或
route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.0.0.254
  • NAT中改变源ip的叫SNAT,也改变目的ip的叫DNAT。
  • SNAT在路由之后,只有查过路由之后才能知道从那个接口出去,才能查找到接口ip,才能知道原ip要换成哪个。
  • DNAT在路由之前,因为要在路由是根据目的ip来查的。
  • 对进入的包先NAT再路由,对出去的包先路由再NAT。

ref