Linux系统多网卡环境下的路由配置详解

 更新时间:2019年02月22日 10:13:07   作者:varlemon  
这篇文章主要介绍了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模拟器

实验拓扑

alt

去掉client节点,内网和外网是隔离的网络。

外网网络为10.0.0.0/16,代表运营商的接入网;

内网网络为172.16.0.0/16,代表内网部分(该部分为了安全,不允许对互联网的直接访问)。

其中:

  • client为双网卡的主机,两网卡网段分别为10.0.0.0/16172.16.2.0/24
  • server2172.16.2.0/24网段的服务器;
  • server3172.16.3.0/24网段的服务器;
  • server4172.16.4.0/24网段的服务器。

网络规划

IP分配

节点名称 IP地址 子网掩码 备注
client 10.0.0.101 255.255.0.0 client的外网网卡
172.16.2.101 255.255.255.0 client的内网网卡
Server2 172.16.2.11 255.255.255.0 172.16.2.0/24网段的某台服务器
Server3 172.16.3.11 255.255.255.0 172.16.3.0/24网段的某台服务器
Server4 172.16.4.11 255.255.255.0 172.16.4.0/24网段的某台服务器
内网路由器 172.16.2.254 255.255.255.0 172.16.2.0/24的网关
172.16.3.254 255.255.255.0 172.16.3.0/24的网关
172.16.4.254 255.255.255.0 172.16.4.0/24的网关

虚机网卡类型

网络名称 VMware网卡类型 网络范围
运营商网络 桥接 10.0.0.0/16
VMnet2 仅主机 172.16.2.0/24
VMnet3 仅主机 172.16.3.0/24
VMnet4 仅主机 172.16.4.0/24

内网路由器如何实现呢?

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

答案是使用华为eNSP模拟器中的Cloud。使用Cloud设备可以将eNSP中的路由器和VMware虚拟机的网卡连接起来。

alt

配置内网环境

配置eNSP的路由器

接口 IP地址 子网掩码
G0/0/0 172.16.2.254 255.255.255.0
G0/0/1 172.16.3.254 255.255.255.0
G0/0/2 172.16.4.254 255.255.255.0
<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地址

client

网卡名称 IP地址 子网掩码 默认网关 备注
ens33 10.0.0.101 255.255.0.0 10.0.0.1 外网网卡
ens37 172.16.2.101 255.255.255.0 内网网卡

server2

网卡名称 IP地址 子网掩码 默认网关 备注
ens33 172.16.2.11 255.255.255.0 172.16.2.254

server3

网卡名称 IP地址 子网掩码 默认网关 备注
ens33 172.16.3.11 255.255.255.0 172.16.3.254

server4

网卡名称 IP地址 子网掩码 默认网关 备注
ens33 172.16.4.11 255.255.255.0 172.16.4.254

在server上搭建HTTP服务

server2为例:

使用Python创建一个简单的HTTP服务

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

alt

对照试验

client上访问外网

ping www.baidu.com -c 4

alt

client上访问server2

ping 172.16.2.11 -c 4

alt

client上访问server3

ping 172.16.3.11 -c 4

alt

client上访问server4

ping 172.16.4.11 -c 4

alt

在对照试验中可以看到,在client将默认网关配置在外网网卡的情况下,双网卡的client可以正常访问外网和内网的172.16.2.0/24部分,而172.16.3.0/24172.16.4.0/24是不能访问到的。

为什么client能访问172.16.2.0/24网络,而不能访问172.16.0.0/16的其余网络呢?
因为client位于172.16.2.0/24网络内,在网络内进行通信,数据包不用发送至其他网络,当然默认网关也就不起作用了。
而当client172.16.0.0/16的其余网络通信时,client的路由表没有记载发往目的地址的路径,所以client只能傻傻的把数据包发送给默认网关,从此数据包和真正的目的地址就“南辕北辙”了。当然ping的结果就是网络不可达。

路由配置

client上查看路由表

route

alt

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

查看路由表

route

alt

实验结果

检测连通性

ping www.baidu.com -c 4

alt

ping 172.16.2.11 -c 4

alt

ping 172.16.3.11 -c 4

alt

ping 172.16.4.11 -c 4

alt

访问内外网资源

curl www.baidu.com/

alt

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

alt

解决的办法很简单,就是1条命令而已。

但是蕴藏在这条命令背后的原理、概念、理论,则需要我们进行深究!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持华域联盟。

相关文章

  • 阿里云ECS实例设置用户root密码和远程连接的方法

    阿里云ECS实例设置用户root密码和远程连接的方法

    这篇文章主要介绍了阿里云ECS实例设置用户root密码和远程连接的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    2020-07-07

  • LINUX重启MYSQL的命令详解

    LINUX重启MYSQL的命令详解

    下面小编就为大家带来一篇LINUX重启MYSQL的命令详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    2016-10-10

  • ROS控制Turtlebot3移动机器人的基础教程

    ROS控制Turtlebot3移动机器人的基础教程

    这篇文章主要给大家介绍了关于ROS控制Turtlebot3移动机器人的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    2020-11-11

  • 如何搭建自己CDN服务器(LuManager)

    如何搭建自己CDN服务器(LuManager)

    这篇文章主要介绍了如何搭建自己CDN服务器(LuManager),需要的朋友可以参考下

    2016-04-04

  • 正确维护配置Apache服务器的方法 保护系统安全

    正确维护配置Apache服务器的方法 保护系统安全

    Apache是目前最流行的Web服务器端软件之一,它可以运行在几乎所有被广泛使用的计算机平台上。

    2009-09-09

  • 详解Linux上svn命令行批量操作

    详解Linux上svn命令行批量操作

    这篇文章主要介绍了详解Linux上svn命令行批量操作的相关资料,linux上的svn命令行批量添加或删除文件,需要的朋友可以参考下

    2017-07-07

  • Apache常用虚拟主机配置方法解析

    Apache常用虚拟主机配置方法解析

    这篇文章主要介绍了Apache常用虚拟主机配置方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    2020-11-11

  • crontab定时任务不执行的一些原因总结

    crontab定时任务不执行的一些原因总结

    这篇文章主要给大家总结介绍了关于crontab定时任务不执行的一些原因,对每种可能发生的原因都给出了解决方法,对遇到这个问题的朋友们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    2019-01-01

  • Linux od命令详细介绍及用法实例

    Linux od命令详细介绍及用法实例

    这篇文章主要介绍了Linux od命令详细介绍及用法实例的相关资料,这里对Linux od命令的格式,命令选项及用法一一介绍详解,需要的朋友可以参考下

    2017-01-01

  • ubuntu开启SSH服务远程登录操作的实现

    ubuntu开启SSH服务远程登录操作的实现

    这篇文章主要介绍了ubuntu开启SSH服务远程登录操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    2020-08-08

最新评论

声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。