RHCE 系列(一):如何設置和測試靜態網絡路由

RHCE(Red Hat Certified Engineer,紅帽認證工程師)是紅帽公司的一個認證,紅帽向企業社區貢獻開源操做系統和軟件,同時它還給公司提供訓練、支持和諮詢服務。linux

這個 RHCE 是一個績效考試(代號 EX300),面向那些擁有更多的技能、知識和能力的紅帽企業版 Linux(RHEL)系統高級系統管理員。web

重要: 得到RHCE 認證前須要先有 紅帽認證系統管理員認證 Red Hat Certified System Administrator,RHCSA。數據庫

 

紅帽企業版 Linux 7 中的靜態路由服務器

現代網絡的一個奇蹟就是有不少可用設備能將一組計算機鏈接起來,不論是在一個房間裏少許的機器仍是在一棟建築物、城市、國家或者大洲之間的多臺機器。網絡

然而,爲了能在任意情形下有效的實現這些,須要對網絡包進行路由,或者換句話說,它們從源到目的地的路徑須要按照某種規則。app

靜態路由是爲網絡包指定一個路由的過程,而不是使用網絡設備提供的默認網關。除非另有指定靜態路由,網絡包會被導向默認網關;而靜態路由則基於預約義標準所定義的其它路徑,例如數據包目的地。運維

咱們在該篇指南中會考慮如下場景。咱們有一臺 RHEL 7,鏈接到 1號路由器 [192.168.0.1] 以訪問因特網以及 192.168.0.0/24 中的其它機器。tcp

第二個路由器(2號路由器)有兩個網卡:enp0s3 一樣鏈接到路由器1號以訪問互聯網,及與 RHEL 7 和同一網絡中的其它機器通信,另一個網卡(enp0s8)用於受權訪問內部服務所在的 10.0.0.0/24 網絡,例如 web 或數據庫服務器。linux運維

 

在這篇文章中咱們會集中介紹在 RHEL 7 中設置路由表,確保它能經過1號路由器訪問因特網以及經過2號路由器訪問內部網絡。測試

在 RHEL 7 中,你能夠經過命令行用 ip 命令 配置和顯示設備和路由。這些更改能在運行的系統中及時生效,但因爲重啓後不會保存,咱們會使用 /etc/sysconfig/network-scripts 目錄下的 ifcfg-enp0sX 和 route-enp0sX 文件永久保存咱們的配置。

首先,讓咱們打印出當前的路由表:

# ip route show

從上面的輸出中,咱們能夠得出如下結論:

默認網關的 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號路由器上進行。

確保正確安裝了全部網卡:

# ip link show

若是有某塊網卡停用了,啓動它:

# ip link set dev enp0s8 up

分配 10.0.0.0/24 網絡中的一個 IP 地址給它:

# ip addr add 10.0.0.17 dev enp0s8

噢!咱們分配了一個錯誤的 IP 地址。咱們須要刪除以前分配的那個並添加正確的地址(10.0.0.18):

# ip addr del 10.0.0.17 dev enp0s8

# ip addr add 10.0.0.18 dev enp0s8

如今,請注意你只能添加一個經過網關到目標網絡的路由,網關須要能夠訪問到。由於這個緣由,咱們須要在 192.168.0.0/24 範圍中給 enp0s3 分配一個 IP 地址,這樣咱們的 RHEL 7 才能鏈接到它:

# ip addr add 192.168.0.19 dev enp0s3

最後,咱們須要啓用包轉發:

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

並停用/取消防火牆(從如今開始,直到下一篇文章中咱們介紹了包過濾):

# systemctl stop firewalld

# systemctl disable firewalld

回到咱們的 RHEL 7(192.168.0.18),讓咱們配置一個經過 192.168.0.19(2號路由器的 enp0s3)到 10.0.0.0/24 的路由:

# ip route add 10.0.0.0/24 via 192.168.0.19

以後,路由表看起來像下面這樣:

# ip route show

一樣,在你嘗試鏈接的 10.0.0.0/24 網絡的機器中添加對應的路由:

# ip route add 192.168.0.0/24 via 10.0.0.18

你可使用 ping 測試基本鏈接:

在 RHEL 7 中運行:

# ping -c 4 10.0.0.20

10.0.0.20 是 10.0.0.0/24 網絡中一個 web 服務器的 IP 地址。

在 web 服務器(10.0.0.20)中運行

# ping -c 192.168.0.18

192.168.0.18 也就是咱們的 RHEL 7 機器的 IP 地址。

另外,咱們還可使用 tcpdump(須要經過 yum install tcpdump 安裝)來檢查咱們 RHEL 7 和 10.0.0.20 中 web 服務器之間的 TCP 雙向通訊。

 

首先在第一臺機器中啓用日誌:

# tcpdump -qnnvvv -i enp0s3 host 10.0.0.20

在同一個系統上的另外一個終端,讓咱們經過 telnet 鏈接到 web 服務器的 80 號端口(假設 Apache 正在監聽該端口;不然應在下面命令中使用正確的監聽端口):

# telnet 10.0.0.20 80

經過查看咱們 RHEL 7(192.168.0.18)和 web 服務器(10.0.0.20)之間的雙向通訊,能夠看出已經正確地初始化了鏈接。

請注意你重啓系統後會丟失這些更改。若是你想把它們永久保存下來,你須要在咱們運行上面的命令的相同系統中編輯(若是不存在的話就建立)如下的文件。

儘管對於咱們的測試例子不是嚴格要求,你須要知道 /etc/sysconfig/network 包含了一些系統範圍的網絡參數。一個典型的 /etc/sysconfig/network 看起來相似下面這樣:

# Enable networking on this system?

NETWORKING=yes

# Hostname. Should match the value in /etc/hostname

HOSTNAME=yourhostnamehere

# Default gateway

GATEWAY=XXX.XXX.XXX.XXX

# Device used to connect to default gateway. Replace X with the appropriate number.

GATEWAYDEV=enp0sX

當須要爲每一個網卡設置特定的變量和值時(正如咱們在2號路由器上面作的),你須要編輯 /etc/sysconfig/network-scripts/ifcfg-enp0s3 和 /etc/sysconfig/network-scripts/ifcfg-enp0s8 文件。

 

下面是咱們的例子,

TYPE=Ethernet

BOOTPROTO=static

IPADDR=192.168.0.19

NETMASK=255.255.255.0

GATEWAY=192.168.0.1

NAME=enp0s3

ONBOOT=yes

以及

 

TYPE=Ethernet

BOOTPROTO=static

IPADDR=10.0.0.18

NETMASK=255.255.255.0

GATEWAY=10.0.0.1

NAME=enp0s8

ONBOOT=yes

其分別對應 enp0s3 和 enp0s8。

因爲要爲咱們的客戶端機器(192.168.0.18)進行路由,咱們須要編輯 /etc/sysconfig/network-scripts/route-enp0s3:

10.0.0.0/24 via 192.168.0.19 dev enp0s3

如今reboot你的系統,就能夠在路由表中看到該路由規則。

 

總結

在這篇文章中咱們介紹了紅帽企業版 Linux 7 的靜態路由。儘管場景可能不一樣,這裏介紹的例子說明了所需的原理以及進行該任務的步驟。

免費領取兄弟連IT教育原創linux運維工程師視頻/細說linux教程,詳情諮詢官網客服:http://www.lampbrother.net/linux/

或者勾搭Q2430675018

歡迎加入linux交流羣 478068715

相關文章
相關標籤/搜索