Linux服务器添加永久静态路由

Linux服务器添加永久静态路由,第1张

服务器添加永久静态路由

一、Linux添加永久静态路由

方法一:修改 rc.local 配置文件

范围:测试 Ubuntu 14.04、centos 6.4、debian 8.1、redhat 6.4 系统可用

使用方法:

向 linux 系统的 /etc/rc.local文件中添加命令route add -net 192.168.2.0/24 gw 192.168.2.254(服务器的默认路由为192.168.2.254),或者添加命令route add -net 192.168.3.0/24 dev eth0,前者是依赖默认路由进行数据的转发,后者是依赖网卡接口进行数据的转发

reboot重启系统命令生效

用 route -n 命令查看命令是否已经生效

方法二:修改 static-routes 配置文件

范围:测试 centos 6.4、redhat 6.4 系统可用

使用方法(此方法比 rc.local 方法实用,能保证网络链路的通畅):

向系统的 /etc/sysconfig/static-routes 文件(如果系统没有此文件,可以新建此文件)中添加命令 any net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.254(服务器的默认路由为192.168.2.254),或者添加命令 any net 192.168.2.0 netmask 255.255.255.0 dev eth0, 前者是依赖默认路由进行数据的转发,后者是依赖网卡接口进行数据的转发

service network restart 命令重启网络服务

用 route -n 命令查看命令是否已经生效

方法三:修改 interface 配置文件

范围:测试 debian 8.1、Ubuntu 14.04 系统可用

使用方法:

向系统的 /etc/network/interface 文件中添加命令 up route add -net 192.168.2.0/24 gw 192.168.2.254(服务器的默认路由为192.168.2.254),或者添加命令 up route add -net 192.168.3.0/24 dev eth0,前者是依赖默认路由进行数据的转发,后者是依赖网卡接口进行数据的转发

reboot 重启系统命令生效

用 route -n 命令查看命令是否已经生效

注 1:(引用网上内容)如果在 rc.local中添加路由会造成NFS无法自动挂载问题,所以使用 static-routes 的方法是最好的。无论重启系统和 service network restart 都会生效,按照linux启动的顺序,rc.local 里面的内容是在linux所有服务都启动完毕,最后才被执行的,也就是说,这里面的内容是在netfs之后才被执行的,那也就是说在netfs启动的时候,服务器上的静态路由是没有被添加的,所以netfs挂载不能成功。

注 2:以上添加命令可以通过 linux 命令 sed -i ‘2i route add -net 192.168.2.0/24 gw 192.168.2.254’ + 文件路径 命令向相应的文件的第二行添加命令或者用 echo route add -net 192.168.2.0/24 gw 192.168.2.254 >>文件路径向文件的末尾添加命令

Ubuntux系统可以修改vim /etc/NetworkManager/system-connections/Wired\ connection\ 3

Linux 路由需要记住两点:跨网段通信需要经过路由;Linux 本身就是一台路由器。

开启路由功能

$ cat/proc/sys/net/ipv4/ip_forward

如果值为 1,表示开启了路由功能,如未开启,需要在 /etc/sysctl.conf 中设置:

net.ipv4.ip_forward=1

然后执行 sysctl -p 使之生效。

实践

创建两个网络 namespace:

$ ip netns add ns1

$ ip netns add ns2

创建两对 veth-pair,一端分别挂在两个 namespace 中:

$iplinkadd v1type veth peer name v1_r$iplinkadd v2type veth peer name v2_r$iplink setv1netns ns1$iplink setv2netns ns2

分别给两对 veth-pair 端点配上 IP 并启用:

$ ip a a 10.10.10.1/24 dev v1_r$ ip l s v1_r up$ ip a a 10.10.20.1/24 dev v2_r$ ip l s v2_r up$ ip netnsexecns1 ip a a 10.10.10.2/24 dev v1$ ip netnsexecns1 ip l s v1 up$ ip netnsexecns2 ip a a 10.10.20.2/24 dev v2$ ip netnsexecns2 ip l s v2 up

测试:

$ ip netnsexecns1 ping 10.10.20.2

发现不通。

添加路由

查看路由:

$ ip netnsexecns1 route -nKernel IP routing tableDestination    Gateway        Genmask        Flags Metric Ref    Use Iface10.10.10.0      0.0.0.0        255.255.255.0  U    0      0        0 v1

只有一条直连路由,没有去往 10.10.20.0/24 网段的路由,怎么通?那就给它配一条:

$ ip netnsexecns1 route add -net 10.10.20.0 netmask 255.255.255.0 gw 10.10.10.1$ ip netnsexecns1 route -n

同理也给 ns2 配上去往 10.10.10.0/24 网段的路由:

$ ip netnsexecns2 route add -net 10.10.10.0 netmask 255.255.255.0 gw 10.10.20.1$ ip netnsexecns2 route -n

再次测试,发现可以 ping 通了:

$ ip netnsexecns1 ping 10.10.20.2

总结

Linux 本身是一台路由器。

上面的实验使用 namespace 效果和使用虚拟机是一样的,关键是知道有这个功能,知道怎么用就差不多了。

设置单臂路由的 *** 作方法如下:

1、连接拓扑图,如下图所示:

2、在交换机上的全局模式下配置两个不同的vlan,比如:

SW(config)#vlan 10

3、将连接主机的端口划分进不同的vlan

SW(config)#int f0/2

SW(config-if)#sw ac vlan 10

4、在交换机和路由器连接的链路上配置trunk,在路由器上配置子接口

SW(config)#int f0/1

SW(config-if)#sw mode trunk

Router(config)#int f0/0

Router(config-if)#no ip address

Router(config-if)#no shutdown

Router(config-if)#exit

Router(config)#int f0/0.1

Router(config-subif)#encapsulation dot1Q 2

Router(config-subif)#ip address 172.168.1.1 255.255.255.0

Router(config-subif)#exit

Router(config)#int f0/0.1

Router(config-subif)#encapsulation dot1Q 2

Router(config-subif)#ip address 172.168.2.1 255.255.255.0

Router(config-subif)#exit

5、给主机配置IP地址和网关

如PC0的IP地址为172.168.1.2,网关为172.168.1.1


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7661523.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-08
下一篇2023-04-08

发表评论

登录后才能评论

评论列表(0条)

    保存