靜態路由規則配置

清风拂山岗(小高同学)發表於2024-11-06

靜態路由配置

前置:
配置路由有兩種方式:

  • 動態路由:不需要人工配置,路由器設定好之後,它會自動進行路由線路學習
  • 靜態路由:需要人工配置

路由器其實解決的就是不同網段之間主機的通訊問題,如果是同一網段的,那麼直接一個arp廣播就搞定了,不同網段就需要路由器了

所以路由器本質上就是實現不同網段之間進行通訊!!!
接下來演示一下路由器靜態配置

第一步:準備3臺虛擬機器

  • 第一臺網路卡配置NAT模式;第二臺配置兩個網路卡,分別為配置NAT模式 + LAN區段;第三臺配置LAN區段

第二步:配置網路卡相關資訊

  • 先檢視宿主機(物理機)VMnet8網路卡的IP子網掩碼

  • 配置網路卡相關資訊【具體的根據自己的來調整】

    • 第一臺

      vim etc/sysconfig/network-scripts/ifcfg-ens33
      

      # 修改主機名
      hostnamectl set-hostname network01
      
      # 重啟網路卡
      systemctl restart network
      
      # 退出重新登入檢視網路卡的相關資訊
      exit
      登入
      ip a
      
    • 第二臺

      除了ip地址換一下,但一定要在同一網段,修改最後一位即可,我上面那個是192.168.129.160,這一臺改為192.168.129.161即可!

      子網掩碼不變

      除此之外,還需要做一件事

      cd /sysconfig/network-scripts
      cp ifcfg-ens33 ifcfg-ens36
      

      修改ip地址,只要是內網地址就都可以,別上去一個公網ip,我的如下,ip改為172.16.1.12

      # 修改主機名
      hostnamectl set-hostname network02
      
      # 重啟網路卡
      systemctl restart network
      
      # 退出重新登入檢視網路卡的相關資訊
      exit
      登入
      ip a
      就能看到有兩塊網路卡的具體資訊了
      
    • 第3臺

      其他不變,唯一的就是ip地址,這次要和第2臺主機的第二塊網路卡要處於一個網段,我改成172.16.1.14

      vim etc/sysconfig/network-scripts/ifcfg-ens33
      

      # 修改主機名
      hostnamectl set-hostname network03
      
      # 重啟網路卡
      systemctl restart network
      
      # 退出重新登入檢視網路卡的相關資訊
      exit
      登入
      ip a
      就能看到有這塊網路卡的具體資訊了
      

第三步:測試

# 用第二臺主機ping第一臺主機
ping 192.168.129.160

# 用第二臺主機ping第二臺主機
ping 172.16.1.14

這些都ping通就說明沒問題了,但是你會發現第一臺ping第三臺報錯Network is unreachable,網路不可達
說明我們的主機是不能跨ip地址段進行互相訪問的,我們設定一個路由規則就可以了。

第四步:設定靜態路由規則

剛才我們使用主機1ping主機3看到報錯,網路不可達,就是因為ping3主機的ip地址時,主機01發現你要找的ip地址不在我這個網段【192.168.129.0網段】,就會自動查詢路由表的記錄,看不到03主機所在網段的路由,所以報錯,找不到。

給主機1配置靜態路由:

# 新增一條靜態路由,訪問172.16.1.0這個網段,那麼先跳到192.168.129.161這個閘道器上,透過它去訪問,gw即設定閘道器,設定了路由的下一次跳轉位置
route add -net 172.16.1.0/24 gw 192.168.129.161

# ping主機2的第二塊網路卡的ip地址,也就是172那個網段的
ping 172.16.1.12

# 但是透過01ping主機3的話,還是ping不通,顯示的不是網路不可達了:而是卡住了,如何測試資料包是否到了主機3
tcpdump -i ens33 -nn

# 可以看到主機3也卡住不動,說明資料包沒到主機3,資料包丟了,主機2並沒有做轉發,需要配置一下轉發才行

給主機2開啟轉發功能:

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
cat /etc/sysctl.conf
sysctl -p # 讓配置生效

然後,先在主機2上抓個包,同時在用主機1ping主機3

# 主機2
tcpdump -i ens33 -nn

# 主機3
tcpdump -i ens33 -nn

# 主機1 ping 主機3
ping 172.16.1.14

# 這個時候,資料包到了主機2,主機2給做了轉發到了 172.16.1.14,但是主機1ping並沒有收到回應的資料包,這是因為主機3不知道該怎麼回給主機1,看主機3的路由表就知道了:

給主機3也加上一條靜態路由規則

route add -net 192.168.129.0/24 gw 172.16.1.12

再用主機1ping主機3就可以ping通了。

這就是透過虛擬機器來模擬了靜態路由規則的設定方式。

相關文章