Linux Route Add命令使用示例
路由是计算机在本地网络或者Internet上通信的方式。
要通过网络进行通信,计算机需要知道它应该发送流量的网关。
网关可以是我们网络中的路由器。
路由命令用于Linux以显示和更改IP路由表。
在本教程中,我将解释如何使用Route命令通过网关添加静态路由以发送流量。
1)显示路由表
在编辑路由表之前,很好地看到Linux内核上现有路由的默认表。
使用具有-n
选项的路由命令来显示当前内核IP路由表。
此命令有助于将本地连接的网络与其路由标识。
以下命令显示路由表:
$route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1 172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441 192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1 192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
我们还可以使用netstat -nr
命令打印网络连接,路由表,界面统计,伪装连接和组播成员资格。
使用netstat命令显示路由表:
$netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eno1 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eno1 172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1 192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
现在我们有ip命令显示路由
$ip route show
2)添加新路线
正如我们上面的说法,要操作路由表,我们使用"route add"命令(添加是选项)来手动指示数据包通过网络使用的静态路径。
它用于分配临时静态路由,只有当管理员手动修改新路由的值时,才会更改。
使用Route Add命令有许多可能性。
我们应该指示目标网络,网络的子网掩码以及要使用的网关。
route add -net <network_address> gw <gateway> <interface_name>
或者,我们现在可以使用"IP Route""命令,语法如下:
ip route add <network_address> via <gateway> dev <interface_name>
例如,让我们添加一个新的路线网络10.0.0.0/8和通过网关IP地址192.168.1.1:
# route add -net 10.0.0.0/8 gw 192.168.1.1 eno1
现在我们可以使用"路由-n""显示路由表:
# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1 10.0.0.0 192.168.1.1 255.0.0.0 UG 0 0 0 eno1 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1 172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441 192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1 192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
如果要添加NetMask值,则可以添加netmask
选项。
如果未提供,则路由命令会自动查找网络掩码的值。
# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.100 eth0 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 192.168.1.100 255.255.255.0 UG 0 0 0 eth0 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 169.254.0.0 * 255.255.0.0 U 0 0 0 eth0 10.0.0.0 192.168.1.254 255.0.0.0 UG 0 0 0 eth0 default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
添加到特定主机的路由使用-host
选项。
我们必须只表明网关使用。
route add -host <host_IP_address> gw <gateway>
例如,让我们添加特定主机'10 .0.0.10',然后显示路由表
# route add -host 10.0.0.10 gw 192.168.1.1 eno1 # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1 10.0.0.0 192.168.1.1 255.0.0.0 UG 0 0 0 eno1 10.0.0.10 192.168.1.1 255.255.255.255 UGH 0 0 0 eno1 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1 172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441 192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1 192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
在上述示例中,标志柱具有不同的值,并且可能是不可理解的。
可能的标志及其定义:
"u"路由是up"目标是主机g
使用网关r
恢复动态路由d
的动态路由或者重定向m
修改从路由守护进程或者通过addrconf安装的重定向a
c
缓存条目!
拒绝路线
3)拒绝并删除路线
我们可以操作路由表不仅要添加STARICS路由,还可以删除或者拒绝我们提前插入的路由。
要从路由表中删除目标网络,请使用"路由del"通讯:
route del -net <network_address> gw <gateway> <interface_name>
例如要将路由删除到我们的10.0.0.0/8网络:
# route del -net 10.0.0.0/8 gw 192.168.1.1 eno1
输出
# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1 10.0.0.10 192.168.1.1 255.255.255.255 UGH 0 0 0 eno1 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1 172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441 192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1 192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
禁止IP地址,但它仍然在路由表上。
请注意,我们仍然使用"添加选项"参数,但在命令的末尾,我们必须使用"拒绝"选项。
我们可以保护我们的网关,但我们没有提到输出接口。
route add -host <host_IP_address> reject
在以下命令中,我们将拒绝我们的主机'10 .0.0.10':
# route add -host 10.0.0.10 reject
更改后显示路由表:
# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1 10.0.0.10 - 255.255.255.255 !H 0 - 0 10.0.0.10 192.168.1.1 255.255.255.255 UGH 0 0 0 eno1 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1 172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441 192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1 192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
使用上述命令添加的路由在重新引导中不会持久地持久,因此我们将静态路由添加到配置文件中以保持永久。
要为任何Linux发行版添加持久的静态路由,我们可以使用通用文件/etc/rc.local。
对于ubuntu和debian使用文件,名为'/etc/network/interfaces'和Rhel/centoS使用'/etc/sysconfig/network-scripts/loute-ethx'。
总结
在本教程中,我们学习了如何使用Route Add命令添加Linux中的静态路由。
我们必须注意,通过该方法,除非我们修改它,否则路由不会更改。
删除我们不需要的路由非常重要。
Related Read: How to Permanently add Static Route in Linux