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 WorkstationeNSP来模拟实验环境了。

问题背景

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

但是实际情况是,client节点既需要访问外网资源,又需要访问内网资源,而client只能配置一条默认路由。如果将默认路由配置在外网网卡,client可以访问172.16.2.0/24网络的资源和外网的资源,但是其余内网资源将无法访问;如果将默认路由配置在内网网卡,client虽然可以完全访问内网资源,但是却不能访问外网资源。

怎么解决呢?

实验环境

  1. VMware Workstation Pro
  2. 4台最小化安装的CentOS 7.3虚拟机
  3. 华为eNSP模拟器

实验拓扑

去掉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虚拟机的网卡连接起来。

配置内网环境

配置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

对照试验

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/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

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

实验结果

检测连通性

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/connect/p/linux-static-route.html

Linux系统多网卡环境下的路由配置的更多相关文章

  1. linux(ubuntu)环境下安装及配置JDK

    安装完IDEA之后遇到了问题,发现jdk安装完之后配置环境变量好困难,下面总结一下我的安装及配置方式: JDK下载链接:http://download.oracle.com/otn-pub/java/ ...

  2. CentOS(六)--Linux系统的网络环境配置

    Linux系统下的网络环境配置,Linux.Unix就是网络的世界,所以在Linux系统中如何配置网络环境变量是至关重要的,这里将会给出3种Linux系统下网络环境配置的方法! 在配置网络环境之前,首 ...

  3. 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

    深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...

  4. Linux系统centOS7在虚拟机下的安装及XShell软件的配置

    前面的话 本文将详细介绍Linux系统centOS7在虚拟机下的安装 准备工作 [系统下载] 在安装centOS7之前,首先在官网下载合适的版本 然后,选择一个链接下载即可 [虚拟机配置] 接下来,需 ...

  5. Linux系统CentOS6.2版本下安装JDK7详细过程

    Linux系统CentOS6.2版本下安装JDK7详细过程 分类: Linux 2014-08-25 09:17 1933人阅读 评论(0) 收藏 举报 前言:        java 是一种可以撰写 ...

  6. 新装Linux系统没有网卡驱动的解决办法和步骤

    Linux下查看网卡驱动和版本信息 - CSDN博客 https://blog.csdn.net/guyan1101/article/details/72770424/ 检查网卡是否加载 - Linu ...

  7. linux系统(centos)下su和sudo命令的区别

    linux系统(centos)下su和sudo命令的区别 区别 我们在日常使用过程中,这2个命令很多时候能达到相同的效果,对细节区别十分模糊,这里进行简单的解释和区分.希望大家能够正确使用这2个命令, ...

  8. AIX 环境下动态路由

    IBM AIX v5.3操作系统环境下动态路由配置如下: 1,用命令lssrc -S routed和lssrc -S gated分别检查routed和gated子系统是是活动状态.如果这两个子系统为活 ...

  9. iOS系统提供开发环境下命令行编译工具:xcodebuild

    iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单 ...

随机推荐

  1. java基础(一)---数据类型&Math方法&强制转换

    数据类型及各种Math类方法 public class HelloWorld { public static void main(String args[]) { //各种数据类型的熟悉掌握,强制类型 ...

  2. ssh框架总结之action接收参数的三种方式

    页面将参数传递给action的三种方式 一是通过属性传值: 将页面和action的的属性值保持一致,在action上写上该属性的set和get方法,这样在页面提交参数的时候,action就会调用set ...

  3. 记录一次spark连接mysql遇到的问题

    版权声明:本文为博主原创文章,未经博主允许不得转载 在使用spark连接mysql的过程中报错了,错误如下 08:51:32.495 [main] ERROR - Error loading fact ...

  4. SQLServer基础之数据页类型:GAM,SGAM,PFS

    简介 我们已经知道SQL Server IO最小的单位是页,连续的8个页是一个区.SQL Server需要一种方式来知道其所管辖的数据库中的空间使用情况,这就是GAM页和SGAM页. GAM页 GAM ...

  5. python3基础知识梳理

    一.数据类型 1.数字 int(整型) long(长整型) float(浮点型) complex(复数) 2.布尔值 True或False 3.字符串   二.变量 变量命名规则: 变量名只能是 字母 ...

  6. Ubuntu下使用终端ssh访问设置了密钥的云服务器

    首先先安装OpenSSH客户端,可以直接apt-get安装 sudo apt-get install openssh-server 然后将私钥权限修改为600 chmod 600 keyfile 最后 ...

  7. vue 之 .sync 修饰符

    在一些情况下,我们可能会需要对一个 prop (父子组件传递数据的属性) 进行“双向绑定”. 在vue 1.x 中的 .sync 修饰符所提供的功能.当一个子组件改变了一个带 .sync 的prop的 ...

  8. Linux 小知识翻译 - 「邮件服务器」

    这次聊聊「邮件服务器」. 邮件服务器上通常会运行2个服务端软件,「SMTP服务器」和「POP服务器或者IMAP服务器」. 这2个东西,也许使用邮件客户端的人立马就明白了.因为设置邮件客户端的时候,需要 ...

  9. DB2常见错误信息

    000 00000 SQL语句成功完成01xxx SQL语句成功完成,但是有警告+012 01545 未限定的列名被解释为一个有相互联系的引用+098 01568 动态SQL语句用分号结束+100 0 ...

  10. Hadoop伪分布式模式安装

    一.Hadoop介绍 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的硬件上:而且 ...