乐趣区

关于运维:Linux-系统多网卡环境下的路由配置

Linux 下路由配置命令

1. 增加主机路由

route add -host 192.168.1.11 dev eth0
route add -host 192.168.1.12 gw 192.168.1.1

2. 增加网络路由

route add -net 192.168.1.11 netmask 255.255.255.0 eth0
route add -net 192.168.1.11 netmask 255.255.255.0 gw 192.168.1.1
route add -net 192.168.1.0/24 eth0
route add -net 192.168.1.0/24 gw 192.168.1.1

3. 增加默认网关

route add default gw 192.168.1.1

4. 删除路由

route del -host 192.168.1.11 dev eth0

5. 删除默认路由

route del default gw 192.168.1.1

Linux 下配置永恒路由的几种形式

1. 在 /etc/rc.local 里增加路由信息

route add -net 192.168.1.0/24 dev eth0
# 或者
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

2. 在 /etc/sysconfig/network 里追加

GATEWAY=[网关 IP 或者网关网卡名称]

3./etc/sysconfig/static-routes

any net 192.168.1.0/24 gw 192.168.1.1
# 或者
any net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

4. 开启 IP 转发

1. 长期开启

echo "1" > /proc/sys/net/ipv4/ip_forward

2. 永恒开启

vim /etc/sysctl.conf
批改 net.ipv4.ip_forward=1

试验:配置双网卡主机同时应用内网和外网

本试验的背景是笔者在实践中遇到过的一个问题,本试验尽量还原过后的网络环境。仅当做一份笔记,同时分享给遇到此问题的同学。

奈何我当初没有硬件呀(T_T)… 只能拿 VMware Workstation 和 eNSP 来模拟实验环境了。

问题背景

如下图拓扑所示,如果去掉 client 节点,内网和外网就是互相隔离的网络。

然而理论状况是,client 节点既须要拜访外网资源,又须要拜访内网资源,而 client 只能配置一条默认路由。如果将默认路由配置在外网网卡,client 能够拜访 172.16.2.0/24 网络的资源和外网的资源,然而其余内网资源将无法访问;如果将默认路由配置在内网网卡,client 尽管能够齐全拜访内网资源,然而却不能拜访外网资源。怎么解决呢?

试验环境
  • VMware Workstation Pro
  • 4 台最小化装置的 CentOS 7.3 虚拟机
  • 华为 eNSP 模拟器
试验拓扑

  • 去掉 client 节点,内网和外网是隔离的网络。
  • 外网网络为 10.0.0.0/16,代表运营商的接入网;
  • 内网网络为 172.16.0.0/16,代表内网局部(该局部为了平安,不容许对互联网的间接拜访)。

其中:

  • client 为双网卡的主机,两网卡网段别离为 10.0.0.0/16、172.16.2.0/24;
  • server2 为 172.16.2.0/24 网段的服务器;
  • server3 为 172.16.3.0/24 网段的服务器;
  • server4 为 172.16.4.0/24 网段的服务器。
网络布局

内网路由器如何实现呢?

VMnet2、VMnet3、VMnet4 均为仅主机模式,那么惯例状况下,只有其网络内的各计算机之间才能够通信,要怎样才能实现三个网络间的通信呢?

答案是应用华为 eNSP 模拟器中的 Cloud。应用 Cloud 设施能够将 eNSP 中的路由器和 VMware 虚拟机的网卡连接起来。

配置内网环境

配置 eNSP 的路由器

<huawei>system-view
[huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip address 172.16.2.254 255.255.255.0
[Huawei-GigabitEthernet0/0/0]quit
[huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip address 172.16.3.254 255.255.255.0
[Huawei-GigabitEthernet0/0/1]quit
[huawei]int g0/0/2
[Huawei-GigabitEthernet0/0/2]ip address 172.16.4.254 255.255.255.0
[Huawei-GigabitEthernet0/0/2]quit
[huawei]

批改虚机的 IP 地址 在 server 上搭建 HTTP 服务

以 server2 为例:

应用 Python 创立一个简略的 HTTP 服务

cd ~
echo "server2" > index.html
python -m SimpleHTTPServer 8080

对照试验, 在 client 上拜访外网

ping www.baidu.com -c 4

在 client 上拜访 server2

ping 172.16.2.11 -c 4

在 client 上拜访 server3

ping 172.16.3.11 -c 4

在 client 上拜访 server4

ping 172.16.4.11 -c 4

在对照试验中能够看到,在 client 将默认网关配置在外网网卡的状况下,双网卡的 client 能够失常拜访外网和内网的 172.16.2.0/24 局部,而 172.16.3.0/24 和 172.16.4.0/24 是不能拜访到的。

为什么 client 能拜访 172.16.2.0/24 网络,而不能拜访 172.16.0.0/16 的其余网络呢?

因为 client 位于 172.16.2.0/24 网络内,在网络内进行通信,数据包不必发送至其余网络,当然默认网关也就不起作用了。

而当 client 与 172.16.0.0/16 的其余网络通信时,client 的路由表没有记录发往目标地址的门路,所以 client 只能傻傻的把数据包发送给默认网关,从此数据包和真正的目标地址就“背道而驰”了。当然 ping 的后果就是网络不可达。

路由配置

在 client 上查看路由表在 client 上增加路由

route add -net 172.16.0.0/16 gw 172.16.2.254

永恒配置,则在 /etc/rc.local 里增加路由信息

route add -net 172.16.0.0/16 gw 172.16.2.254

查看路由表

试验后果

检测连通性

ping www.baidu.com -c 4

ping 172.16.2.11 -c 4

ping 172.16.3.11 -c 4

ping 172.16.4.11 -c 4

拜访内外网资源

curl http://www.baidu.com/

curl http://172.16.2.11:8080/index.html
curl http://172.16.3.11:8080/index.html
curl http://172.16.4.11:8080/index.html

解决的方法很简略,就是 1 条命令而已。然而蕴藏在这条命令背地的原理、概念、实践,则须要咱们进行深究!

链接:https://www.cnblogs.com/conne…

退出移动版