RHCE 系列(一):如何设置和测试静态网络路由

yutian0 2015-10-22

RHCE(Red Hat Certified Engineer,红帽认证工程师)是红帽公司的一个认证,红帽向企业社区贡献开源操作系统和软件,同时它还给公司提供训练、支持和咨询服务。

RHCE 系列(一):如何设置和测试静态网络路由

RHCE 考试准备指南

这个 RHCE 是一个绩效考试(代号 EX300),面向那些拥有更多的技能、知识和能力的红帽企业版 Linux(RHEL)系统高级系统管理员。

重要: 红帽认证系统管理员 (Red Hat Certified System Administrator,RHCSA)认证要求先有 RHCE 认证。

以下是基于红帽企业版 Linux 7 考试的考试目标,我们会在该 RHCE 系列中分别介绍:

  • 第一部分:如何在 RHEL 7 中设置和测试静态路由
  • 第二部分:如何进行包过滤、网络地址转换和设置内核运行时参数
  • 第三部分:如何使用 Linux 工具集产生和发送系统活动报告
  • 第四部分:使用 Shell 脚本进行自动化系统维护
  • 第五部分:如何在 RHEL 7 中管理系统日志(配置、轮换和导入到数据库)
  • 第六部分:设置 Samba 服务器并配置 FirewallD 和 SELinux 支持客户端文件共享
  • 第七部分:设置 NFS 服务器及基于 Kerberos 认证的客户端
  • 第八部分:在 Apache 上使用网络安全服务(NSS)通过 TLS 提供 HTTPS 服务
  • 第九部分:如何使用无客户端配置来设置 Postfix 邮件服务器(SMTP)
  • 第十部分:在 RHEL/CentOS 7 中设置网络时间协议(NTP)服务器
  • 第十一部分:如何配置一个只缓存的 DNS 服务器

在你的国家查看考试费用和注册考试,可以到 RHCE 认证 网页。

在 RHCE 的第一和第二部分,我们会介绍一些基本的但典型的情形,也就是静态路由原理、包过滤和网络地址转换。

RHCE 系列(一):如何设置和测试静态网络路由

RHCE 系列第一部分:设置和测试网络静态路由

请注意我们不会作深入的介绍,但以这种方式组织内容能帮助你开始第一步并继续后面的内容。

 

红帽企业版 Linux 7 中的静态路由

现代网络的一个奇迹就是有很多可用设备能将一组计算机连接起来,不管是在一个房间里少量的机器还是在一栋建筑物、城市、国家或者大洲之间的多台机器。

然而,为了能在任意情形下有效的实现这些,需要对网络包进行路由,或者换句话说,它们从源到目的地的路径需要按照某种规则。

静态路由是为网络包指定一个路由的过程,而不是使用网络设备提供的默认网关。除非另有指定静态路由,网络包会被导向默认网关;而静态路由则基于预定义标准所定义的其它路径,例如数据包目的地。

我们在该篇指南中会考虑以下场景。我们有一台 RHEL 7,连接到 1号路由器 [192.168.0.1] 以访问因特网以及 192.168.0.0/24 中的其它机器。

第二个路由器(2号路由器)有两个网卡:enp0s3 同样连接到路由器1号以访问互联网,及与 RHEL 7 和同一网络中的其它机器通讯,另外一个网卡(enp0s8)用于授权访问内部服务所在的 10.0.0.0/24 网络,例如 web 或数据库服务器。

该场景可以用下面的示意图表示:

RHCE 系列(一):如何设置和测试静态网络路由

静态路由网络示意图

在这篇文章中我们会集中介绍在 RHEL 7 中设置路由表,确保它能通过1号路由器访问因特网以及通过2号路由器访问内部网络。

在 RHEL 7 中,你可以通过命令行用 ip 命令 配置和显示设备和路由。这些更改能在运行的系统中及时生效,但由于重启后不会保存,我们会使用 /etc/sysconfig/network-scripts 目录下的 ifcfg-enp0sXroute-enp0sX 文件永久保存我们的配置。

首先,让我们打印出当前的路由表:

  1. <span class="com">#</span><span class="kwd">ip</span><span class="kwd">route</span><span class="pln"> show</span>

RHCE 系列(一):如何设置和测试静态网络路由

检查当前路由表

从上面的输出中,我们可以得出以下结论:

  • 默认网关的 IP 是 192.168.0.1,可以通过网卡 enp0s3 访问。
  • 系统启动的时候,它启用了到 169.254.0.0/16 的 zeroconf 路由(只是在本例中)。也就是说,如果机器设置通过 DHCP 获取 IP 地址,但是由于某些原因失败了,它就会在上述网段中自动分配到一个地址。这一行的意思是,该路由会允许我们通过 enp0s3 和其它没有从 DHCP 服务器中成功获得 IP 地址的机器机器相连接。
  • 最后,但同样重要的是,我们也可以通过 IP 地址是 192.168.0.18 的 enp0s3 与 192.168.0.0/24 网络中的其它机器连接。

下面是这样的配置中你需要做的一些典型任务。除非另有说明,下面的任务都在2号路由器上进行。

确保正确安装了所有网卡:

  1. <span class="com">#</span><span class="kwd">ip</span><span class="kwd">link</span><span class="pln"> show</span>

如果有某块网卡停用了,启动它:

  1. <span class="com">#</span><span class="kwd">ip</span><span class="kwd">link</span><span class="kwd">set</span><span class="pln"> dev enp0s8 up</span>

分配 10.0.0.0/24 网络中的一个 IP 地址给它:

  1. <span class="com">#</span><span class="kwd">ip</span><span class="pln"> addr add </span><span class="lit">10.0</span><span class="pun">.</span><span class="lit">0.17</span><span class="pln"> dev enp0s8</span>

噢!我们分配了一个错误的 IP 地址。我们需要删除之前分配的那个并添加正确的地址(10.0.0.18):

  1. <span class="com">#</span><span class="kwd">ip</span><span class="pln"> addr </span><span class="kwd">del</span><span class="lit">10.0</span><span class="pun">.</span><span class="lit">0.17</span><span class="pln"> dev enp0s8</span>
  2. <span class="com">#</span><span class="kwd">ip</span><span class="pln"> addr add </span><span class="lit">10.0</span><span class="pun">.</span><span class="lit">0.18</span><span class="pln"> dev enp0s8</span>

现在,请注意你只能添加一个通过网关到目标网络的路由,网关需要可以访问到。因为这个原因,我们需要在 192.168.0.0/24 范围中给 enp0s3 分配一个 IP 地址,这样我们的 RHEL 7 才能连接到它:

  1. <span class="com">#</span><span class="kwd">ip</span><span class="pln"> addr add </span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">0.19</span><span class="pln"> dev enp0s3</span>

最后,我们需要启用包转发:

  1. <span class="com">#</span><span class="kwd">echo</span><span class="str">"1"</span><span class="pun">></span><span class="str">/proc/</span><span class="pln">sys</span><span class="pun">/</span><span class="pln">net</span><span class="pun">/</span><span class="pln">ipv4</span><span class="pun">/</span><span class="pln">ip_forward</span>

并停用/取消防火墙(从现在开始,直到下一篇文章中我们介绍了包过滤):

  1. <span class="com">#</span><span class="kwd">systemctl</span><span class="pln"> stop firewalld</span>
  2. <span class="com">#</span><span class="kwd">systemctl</span><span class="pln"> disable firewalld</span>

回到我们的 RHEL 7(192.168.0.18),让我们配置一个通过 192.168.0.19(2号路由器的 enp0s3)到 10.0.0.0/24 的路由:

  1. <span class="com">#</span><span class="kwd">ip</span><span class="kwd">route</span><span class="pln"> add </span><span class="lit">10.0</span><span class="pun">.</span><span class="lit">0.0</span><span class="pun">/</span><span class="lit">24</span><span class="pln"> via </span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">0.19</span>

之后,路由表看起来像下面这样:

  1. <span class="com">#</span><span class="kwd">ip</span><span class="kwd">route</span><span class="pln"> show</span>

RHCE 系列(一):如何设置和测试静态网络路由

确认网络路由表

同样,在你尝试连接的 10.0.0.0/24 网络的机器中添加对应的路由:

  1. <span class="com">#</span><span class="kwd">ip</span><span class="kwd">route</span><span class="pln"> add </span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">0.0</span><span class="pun">/</span><span class="lit">24</span><span class="pln"> via </span><span class="lit">10.0</span><span class="pun">.</span><span class="lit">0.18</span>

你可以使用 ping 测试基本连接:

在 RHEL 7 中运行:

  1. <span class="com">#</span><span class="kwd">ping</span><span class="pun">-</span><span class="pln">c </span><span class="lit">4</span><span class="lit">10.0</span><span class="pun">.</span><span class="lit">0.20</span>

10.0.0.20 是 10.0.0.0/24 网络中一个 web 服务器的 IP 地址。

在 web 服务器(10.0.0.20)中运行

  1. <span class="com">#</span><span class="kwd">ping</span><span class="pun">-</span><span class="pln">c </span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">0.18</span>

192.168.0.18 也就是我们的 RHEL 7 机器的 IP 地址。

另外,我们还可以使用 tcpdump(��要通过 yum install tcpdump 安装)来检查我们 RHEL 7 和 10.0.0.20 中 web 服务器之间的 TCP 双向通信。

首先在第一台机器中启用日志:

  1. <span class="com">#</span><span class="kwd">tcpdump</span><span class="pun">-</span><span class="pln">qnnvvv </span><span class="pun">-</span><span class="pln">i enp0s3 host </span><span class="lit">10.0</span><span class="pun">.</span><span class="lit">0.20</span>

在同一个系统上的另一个终端,让我们通过 telnet 连接到 web 服务器的 80 号端口(假设 Apache 正在监听该端口;否则应在下面命令中使用正确的监听端口):

  1. <span class="com">#</span><span class="pln"> telnet </span><span class="lit">10.0</span><span class="pun">.</span><span class="lit">0.20</span><span class="lit">80</span>

tcpdump 日志看起来像下面这样:

RHCE 系列(一):如何设置和测试静态网络路由

检查服务器之间的网络连接

通过查看我们 RHEL 7(192.168.0.18)和 web 服务器(10.0.0.20)之间的双向通信,可以看出已经正确地初始化了连接。

请注意你重启系统后会丢失这些更改。如果你想把它们永久保存下来,你需要在我们运行上面的命令的相同系统中编辑(如果不存在的话就创建)以下的文件。

尽管对于我们的测试例子不是严格要求,你需要知道 /etc/sysconfig/network 包含了一些系统范围的网络参数。一个典型的 /etc/sysconfig/network 看起来类似下面这样:

  1. <span class="com">#</span><span class="typ">Enable</span><span class="pln"> networking on </span><span class="kwd">this</span><span class="pln"> system</span><span class="pun">?</span>
  2. <span class="pln">NETWORKING</span><span class="pun">=</span><span class="kwd">yes</span>
  3. <span class="com">#</span><span class="typ">Hostname</span><span class="pun">.</span><span class="typ">Should</span><span class="pln"> match the value </span><span class="kwd">in</span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="kwd">hostname</span>
  4. <span class="pln">HOSTNAME</span><span class="pun">=</span><span class="pln">yourhostnamehere</span>
  5. <span class="com">#</span><span class="typ">Default</span><span class="pln"> gateway</span>
  6. <span class="pln">GATEWAY</span><span class="pun">=</span><span class="pln">XXX</span><span class="pun">.</span><span class="pln">XXX</span><span class="pun">.</span><span class="pln">XXX</span><span class="pun">.</span><span class="pln">XXX</span>
  7. <span class="com">#</span><span class="typ">Device</span><span class="pln"> used to connect to </span><span class="kwd">default</span><span class="pln"> gateway</span><span class="pun">.</span><span class="typ">Replace</span><span class="pln"> X </span><span class="kwd">with</span><span class="pln"> the appropriate number</span><span class="pun">.</span>
  8. <span class="pln">GATEWAYDEV</span><span class="pun">=</span><span class="pln">enp0sX</span>

当需要为每个网卡设置特定的变量和值时(正如我们在2号路由器上面做的),你需要编辑 /etc/sysconfig/network-scripts/ifcfg-enp0s3/etc/sysconfig/network-scripts/ifcfg-enp0s8 文件。

下面是我们的例子,

  1. <span class="pln">TYPE</span><span class="pun">=</span><span class="typ">Ethernet</span>
  2. <span class="pln">BOOTPROTO</span><span class="pun">=</span><span class="kwd">static</span>
  3. <span class="pln">IPADDR</span><span class="pun">=</span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">0.19</span>
  4. <span class="pln">NETMASK</span><span class="pun">=</span><span class="lit">255.255</span><span class="pun">.</span><span class="lit">255.0</span>
  5. <span class="pln">GATEWAY</span><span class="pun">=</span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">0.1</span>
  6. <span class="pln">NAME</span><span class="pun">=</span><span class="pln">enp0s3</span>
  7. <span class="pln">ONBOOT</span><span class="pun">=</span><span class="kwd">yes</span>

以及

  1. <span class="pln">TYPE</span><span class="pun">=</span><span class="typ">Ethernet</span>
  2. <span class="pln">BOOTPROTO</span><span class="pun">=</span><span class="kwd">static</span>
  3. <span class="pln">IPADDR</span><span class="pun">=</span><span class="lit">10.0</span><span class="pun">.</span><span class="lit">0.18</span>
  4. <span class="pln">NETMASK</span><span class="pun">=</span><span class="lit">255.255</span><span class="pun">.</span><span class="lit">255.0</span>
  5. <span class="pln">GATEWAY</span><span class="pun">=</span><span class="lit">10.0</span><span class="pun">.</span><span class="lit">0.1</span>
  6. <span class="pln">NAME</span><span class="pun">=</span><span class="pln">enp0s8</span>
  7. <span class="pln">ONBOOT</span><span class="pun">=</span><span class="kwd">yes</span>

其分别对应 enp0s3 和 enp0s8。

由于要为我们的客户端机器(192.168.0.18)进行路由,我们需要编辑 /etc/sysconfig/network-scripts/route-enp0s3

  1. <span class="lit">10.0</span><span class="pun">.</span><span class="lit">0.0</span><span class="pun">/</span><span class="lit">24</span><span class="pln"> via </span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">0.19</span><span class="pln"> dev enp0s3</span>

现在reboot你的系统,就可以在路由表中看到该路由规则。

 

总结

在这篇文章中我们介绍了红帽企业版 Linux 7 的静态路由。尽管场景可能不同,这里介绍的例子说明了所需的原理以及进行该任务的步骤。结束之前,我还建议你看一下 Linux 文档项目(The Linux Documentation Project)网站上的《安全加固和优化 Linux(Securing and Optimizing Linux)》的第四章,以了解这里介绍主题的更详细内容。

在下篇文章中我们会介绍数据包过滤和网络地址转换,结束 RHCE 验证需要的网络基本技巧。

如往常一样,我们期望听到你的回复,用下面的表格留下你的疑问、评论和建议吧。


via: http://www.tecmint.com/how-to-setup-and-configure-static-network-routing-in-rhel/

作者:Gabriel Cánepa 译者:ictlyh 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

相关推荐