Linux Route Add命令使用示例

时间:2020-03-05 15:25:53  来源:igfitidea点击:

路由是计算机在本地网络或者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安装的重定向ac缓存条目拒绝路线

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