當前位置:
首頁 > 最新 > 如何設置和測試靜態網路路由?

如何設置和測試靜態網路路由?

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

在 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 或資料庫伺服器。

該場景可以用下面的示意圖表示:

靜態路由網路示意圖

在這篇文章中我們會集中介紹在 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

tcpdump 日誌看起來像下面這樣:

檢查伺服器之間的網路連接

通過查看我們 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 的靜態路由。儘管場景可能不同,這裡介紹的例子說明了所需的原理以及進行該任務的步驟。

在下篇文章中我們會介紹數據包過濾和網路地址轉換,結束 RHCE 驗證需要的網路基本技巧。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 錦瑟天晴 的精彩文章:

TAG:錦瑟天晴 |