网络学习之路由
一、路由的分类
1、软路由:依靠软件+系统设置完成路由功能。常见操作就是刷openwrt固件
2、硬路由:专业的路由设备,比如华为路由器
二、mac地址表、ARP表、路由表概念
1、mac地址表:记录MAC地址和端口的映射关系,代表了交换机从哪个端口学习到了某个MAC地址,交换机把这个信息记录下来,后续交换机需要转发数据的时候就可以根据报文的目的MAC地址去根据MAC地址表转发数据。
华为网络设备上可以通过dis mac-address 查看本地mac的地址表的信息
2、ARP表:记录IP地址和MAC地址对应关系的表项。
华为网络设备上可以通过dis arp 查看本地arp表的信息
<HUAWEI-YEWU>dis arp all IP ADDRESS MAC ADDRESS EXPIRE(M) TYPE INTERFACE VPN-INSTANCE VLAN ------------------------------------------------------------------------------ 192.168.0.6 e483-2607-b2fb I - Vlanif8 192.168.0.5 5046-4ab9-f751 20 D-0 XGE0/0/32 8 192.168.2.254 e483-2607-b2fb I - Vlanif20 192.168.2.145 e43d-1a2c-f484 18 D-0 Eth-Trunk5 20 192.168.2.144 e43d-1a2c-f43c 10 D-0 Eth-Trunk6 20 192.168.2.146 e43d-1a2c-f460 10 D-0 Eth-Trunk4 20 192.168.2.147 e43d-1a2c-e11c 10 D-0 Eth-Trunk3 20 192.168.2.148 e43d-1a2d-2fb8 10 D-0 Eth-Trunk2 20 192.168.2.149 e43d-1a2d-3120 19 D-0 Eth-Trunk1 20 ------------------------------------------------------------------------------ Total:9 Dynamic:7 Static:0 Interface:2
3、路由表:路由表就是路由器用于指导数据包如何转发的表项,记录了去往目的IP的下一跳去哪里
华为网络设备上可以通过display ip routing-table 查看本地路由表的信息
三、Linux 路由
1、Linux网卡优先级配置(Metric
值越小,优先级越高)
$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default oraybox.com 0.0.0.0 UG 100 0 0 enx00e04c6801a0 default _gateway 0.0.0.0 UG 101 0 0 eth0 10.10.11.0 0.0.0.0 255.255.255.0 U 101 0 0 eth0 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enx00e04c6801a0
可以看到此时有两个网卡(eth0
和enx00e04c6801a0
),都配置到了默认网关default
。
而由于enx00e04c6801a0
的Metric
值比eth0
的小,所以排前面了。这就说明enx00e04c6801a0
网卡的优先级比eth0
高。
我们要配置Linux网卡的优先级,就需要修改某个网卡的Metric
,然而route
命令不允许直接修改,因此需要先删除,后添加。
例如将eth0
的Metric
改小,就需要执行:
route del default gw 10.10.11.254 eth0 route add default gw 10.10.11.254 dev eth0 metric 99
2、三种查看方式
netstat -nr route -n ip route (list/show)
3、添加路由:
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev If]
目标:192.168.40.211 网关:192.168.40.1(必须与本地地址在同一网络)
route add -host 192.168.40.211 gw 192.168.40.1 dev ens33
ip route add TARGET via GW [dev IFACE] [src SOURCE_IP]
(dev表示流出的接口,via:经由下一跳)
ip route add 192.168.1.3 via 172.16.0.1 dev eth0 ip route add 192.168.0.0/24 via 172.16.0.1
注意TARGET中的格式:
主机路由:IP
网络路由:NETWORK/MASK
ip route add 192.168.40.132 via 192.168.40.1 dev ens33
删除路由:
ip route del IP
4、持久化route配置
默认情况下,执行route
的删除和添加操作仅对当前环境生效,重启后配置信息丢失。因此我们需要持久化router表配置,实现开机启动命令。
由于系统启动后,联网需要时间,虽然rc-local
配置的已经是各项服务启动之后的开机命令,但是网卡通过DHCP Client
获取到IP地址还需要时间。因此需要延迟30s异步执行配置命令
Ubuntu/Linux Mint/Ukylin/国产麒麟系统中开机执行route命令,只需要直接修改/etc/rc.local
文件,把需要开机自动执行的命令写在exit 0
前面:
( sleep 30 /usr/sbin/route del default gw 10.10.11.250 eth0 /usr/sbin/route add default gw 10.10.11.250 dev eth0 metric 204 ) &
实际案例
uos系统桌面版,ip也配置在桌面(网卡配置文件为空),ansible setup模块获取不到ip地址
ip route add default via 192.168.1.1 dev 网卡名
5、多网卡路由的问题、同时访问内外网设置
Linux使用双网卡连接不同网络时,有时是不能同时使用内网外网系统的。这是由于计算机不知道那些网段一定属于内网导致
Linux ARP特性 Linux主机有这么一个特性,假设我们的主机上有两块网卡,比如eth0,eth1 当arp请求eth1的mac地址的时候,eth1会答复,
这个是理所当然的,但是eth0也会“好心”的帮eth1回答这个arp请求; 要防止这样的话,就需要更改下我们的一些内核参数: net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.all.arp_ignore = 1 正常情况下只写第二条就是了,all 是指所有设备的interface,当all和具体的interface比如lo,按照最大的值生效; 另外一个linux的特性就是,对于一个从realserver发出的arp请求,其源IP是VIP,而出口不会是lo,这里假设是eth0,那么这个arp请求包里里面,源IP就是VIP,源MAC是eth0的mac,目的IP是网关,那么路由器在接收到这个请求的时候,会将将自己的相应接口的硬件地址放在arp响应包中,同时将请求包中的源IP及MAC放在arp高速缓存中,那这下可就乱套了,就会使真正的VIP得不到正确的请求了. 这是因为,正常的情况下,arp的请求中源IP是出去的所在接口的地址,mac也是出去的接口的mac,但linux在默认情况下却不是这样的,如果一个接口发出的arp请求须经另一个出口出去的时候,源IP就不是所出去接口的IP,那么将内核参数设置为 2 相应的解决了这个问题。 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_announce = 2
物理服务器两个光口配置了bond,一个电口配置静态ip,笔记本直连电口,ping不通光口的ip。
ip route add 192.168.20.103 via 192.168.20.254 dev bond0 #route add -net 192.168.20.103 netmask 255.255.255.0 dev eth0
四、windos 路由
1、添加路由
route add 80.47.1.0 mask 255.255.255.0 160.5.1.254
注:要去的网段:80.47.1.0 本机的网关:160.5.1.254
2、追踪路由
tracert 10.72.64.10 traceroute 10.72.64.10 ##Linux版本
五、网络设备路由
1、路由器设备
两种选择,第一个是所有都映射出去,第二个只映射指定端口
华为路由器将 0/0/3 接口开启地址转换(外部地址 10.xx.8.144 转到内部 192.168.2.xx)
system-view interface gigabitethernet 0/0/3 nat server protocol tcp global 10.xx.8.144 inside 192.168.2.xx
案例2
interface GigabitEthernet0/0/1 ip address 10.x.x.x 255.255.255.0 nat server protocol tcp global current-interface www inside 192.168.40.105 www nat outbound 2000
案例3(静态路由)
pc1 需要经过两个路由器ping 通pc2
AR1上配置去的路由:
ip route-static 192.168.2.0 255.255.255.0 12.1.1.2 (via)
# display ip routeing-table 查看路由表
AR2上配置回的路由:
ip route-static 192.168.1.0 24 12.1.1.1 (via)
六、策略路由
策略性路由
策略性是指对于 IP 包的路由是以网络管理员根据需要定下的一些策略为主要依据进行路由的。例如我们可以有这样的策略:“所有来直自网 A 的包,选择 X 路径;其他选择 Y 路径”,或者是 “所有 TOS 为 A 的包选择路径 F;其他选者路径 K”。
Cisco 的网络操作系统 (Cisco IOS) 从 11.0 开始就采用新的策略性路由机制。而 Linux 是在内核 2.1 开始采用策略性路由机制的。策略性路由机制与传统的路由算法相比主要是引入了多路由表以及规则的概念。
多路由表(multiple Routing Tables)
传统的路由算法是仅使用一张路由表的。但是在有些情形底下,我们是需要使用多路由表的。例如一个子网通过一个路由器与外界相连,路由器与外界有两条线路相连,其中一条的速度比较快,一条的速度比较慢。对于子网内的大多数用户来说对速度并没有特殊的要求,所以可以让他们用比较慢的路由;但是子网内有一些特殊的用户却是对速度的要求比较苛刻,所以他们需要使用速度比较快的路由。如果使用一张路由表上述要求是无法实现的,而如果根据源地址或其它参数,对不同的用户使用不同的路由表,这样就可以大大提高路由器的性能。
七、macos 同时使用内网和外网
1、设置网卡服务顺序
2、获取wifi内网网卡网关地址
wifi ->高级->路由器
3、添加静态路由
net
参数对应网段IP,netmask
是子网掩码。最后的IP是内网网关,即上一步看到的路由器
IP地址。
解决内网访问的方法是设置本地静态路由
,添加网段指向对应内网的网关即可。
添加:
sudo route add -net 10.0.0.0 -netmask 255.255.0.0 10.0.2.1 sudo route add -net 30.1.0.0 -netmask 255.255.0.0 10.0.2.1
删除:
sudo route delete -net 10.0.0.0 -netmask 255.255.0.0 10.0.2.1 sudo route delete -net 30.1.0.0 -netmask 255.255.0.0 10.0.2.1
##查看路由表
netstat -r
##查看IP:192.168.4.56走哪个路由器
route -n get 192.168.4.56
##查看IP:172.21.4.56走哪个路由器
route -n get 172.21.4.56
实测:把mac 接网线的静态地址网关给去掉就行