使用靜態路由讓小烏龜下的多個子網段互通 === ###### tags: `Router` ## 前言 當小烏龜後端接了兩台以上的Router, 而每台Router都有各自的子網段時, 不同子網段的設備要互通就必須透過靜態路由表來達到目的 以下面的網路拓墣為例, 如果NB想要存取NAS, 簡易流程如下: 1. AC68U要處理送往192.168.10.100的封包時, 會把封包改往192.168.1.1送 2. P880收到要往192.168.10.100的封包時, 會把封包改往192.168.1.101送 3. RB750Gr3收到要往192.168.10.100的封包時, 直接把封包送往NAS 4. NAS要回傳送往192.168.20.101的封包時, 會把封包改往192.168.1.1送 5. P880收到要往192.168.20.101的封包時, 會把封包改往192.168.1.102送 6. AC68U收到要往192.168.20.101的封包時, 直接把封包送往NB 因此AC68U, RB750Gr3, P880這三台Router都需要設定靜態路由表, 我們需要完成的工作項目是上述簡易流程的第1, 2, 4, 5點 第3, 6點因為機器會自動建立動態路由, 所以我們不需要處理 ## 網路拓墣 {%hackmd s1x7XDQzSWmym0gE8IKQNQ %} ## 網路環境 * RT-AC68U使用PPPoE取得WAN IP 1.160.x.x * RT-AC68U的eth0開啟DHCP client, 並取得IP 192.168.1.102 (ASUSWRT自動啟用) * RT-AC68U開啟NAT與DHCP server, NAT網段為192.168.20.0/24 * RT-AC68U關閉防火牆 * RB750Gr3使用PPPoE取得WAN IP 220.132.x.x * RB750Gr3的ether1開啟DHCP client, 並取得IP 192.168.1.101 ([RouterOS需手動啟用](#RB750Gr31)) * RB750Gr3開啟NAT與DHCP server, NAT網段為192.168.10.0/24 ## 正文開始 ### 開始前的注意事項 要讓不同網段互相溝通除了路由規則很重要以外, 防火牆的規則也很重要, 缺一不可 往往路由正確但因為防火牆的關係讓封包無法通過, 因此不可不注意 以下說明並不包含防火牆的規則設定, 以AC68U來說可以直接選擇關閉防火牆, 但對於RB750Gr3這類的設備需要手動修改防火牆規則 [參照這篇](https://hackmd.io/@Cyui/SyER1nkw_) ### RT-AC68U 首先針對簡易流程的第1點, 設定AC68U的靜態路由 進入AC68U的設定頁面後, 選擇*區域網路(LAN)->路由設定*分頁 把*啟動靜態路由清單*的選項開啟, 並在下面的*靜態路由清單*增加規則: ``` 網路/主機IP: 192.168.10.0 網路遮罩: 255.255.255.0 閘道器: 192.168.1.1 順序: 0 介面: MAN ``` 新增完後按*套用本頁面設定*的按鈕就完成了在AC68U的設定工作 ### RB750Gr3 接下來針對簡易流程的第4點設定RB750Gr3的靜態路由 進入RB750Gr3的設定頁面, 點選左邊的*IP->Routes*叫出*Route List*設定頁面, 新增以下規則: ``` Dst. Address: 192.168.20.0/24 Gateway: 192.168.1.1 reachable ether1 Type: unicast Distance 1 ``` 新增完後按下*OK*或是*Apply*的按鈕就完成了在RB750Gr3的設定工作 ### P880 最後針對簡易流程的第2點跟第5點, 設定P880的靜態路由, 一樣先進入小烏龜的設定頁面 選擇左邊的*Advanced Setup->Routing->Static Route*分頁 按頁面底下的*Add*按鈕後增加兩條規則: ``` IP Version: IPv4 Destination IP address: 192.168.10.0 Destination IP mask: 255.255.255.0 Interface: LAN/br0 Gateway IP Address: 192.168.1.101 Metric: 1 ``` ``` IP Version: IPv4 Destination IP address: 192.168.20.0 Destination IP mask: 255.255.255.0 Interface: LAN/br0 Gateway IP Address: 192.168.1.102 Metric: 1 ``` 記得上述兩條規則的*Enable*跟*Gateway*的選項都要是勾選的狀態 另外, 最好把配發給其他兩台的IP固定下來, 避免之後動態分配IP造成路由錯誤 我們可以在左邊的*Advanced Setup->DHCP Server*分頁中增加靜態IP 按下*Add Entries*按鈕然後把其他兩台Router的Mac Address跟IP填入後按*Apply/Save*按鈕即可 以本文的網路拓樸為例子: ``` MAC Address: 08:xx:xx:xx:xx:ea #RB750Gr3 IP Address: 192.168.1.101 ``` ``` MAC Address: 4c:xx:xx:xx:xx:88 #RT-AC68U IP Address: 192.168.1.102 ``` 現在我們已經完成了全部的設定工作, 各個子網段的設備應該要可以互通了 ## 補充說明 ### RT-AC68U 在AC68U的靜態路由設置頁面中, 我們把*順序*這個參數設為0, 但實際上在路由表中會自動+1 我們可以透過ssh進去看一下設定後的路由表: `# route` ``` Destination Gateway Genmask Flags Metric Ref Use Iface 168.95.98.254 * 255.255.255.255 UH 0 0 0 ppp0 192.168.20.0 * 255.255.255.0 U 0 0 0 br0 10.8.0.0 * 255.255.255.0 U 0 0 0 tun21 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 192.168.10.0 192.168.1.1 255.255.255.0 UG 1 0 0 eth0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default h254.s98.ts.hin 0.0.0.0 UG 0 0 0 ppp0 default 192.168.1.1 0.0.0.0 UG 1 0 0 eth0 ``` 從結果來看192.168.10.0這條規則的Metric欄位為1, 並不是我們在頁面中設定的0 另外*介面*這個參數我們是設定成MAN, 但實際上它就是eth0, 從上面的結果中最後的Use Iface欄位即可得知 ### RB750Gr3 RouterOS的*Quick Set*預設使用PPPoE的情況下, ether1的DHCP Client是被停用的 因此需要在*IP->DHCP Client*中啟用ether1的設定規則, 但是*Add Default Route*必須改成no ``` # INTERFACE USE-PEER-DNS ADD-DEFAULT-ROUTE STATUS ADDRESS 0 ;;; defconf ether1 no no bound 192.168.1.101/24 ``` 完成上述步驟後, 路由表就會動態建立一個192.168.1.0/24的路由規則, 我們可以從*IP->Routes*中看到以下結果, 前面的flag帶有*D*就是指動態建立的意思 ``` # DST-ADDRESS PREF-SRC GATEWAY DISTANCE 0 ADS 0.0.0.0/0 pppoe-out1 1 1 ADC 168.95.98.254/32 220.132.x.x pppoe-out1 0 2 ADC 192.168.1.0/24 192.168.1.101 ether1 0 3 ADC 192.168.10.0/24 192.168.10.1 bridge 0 4 A S 192.168.20.0/24 192.168.1.1 1 ``` :diamond_shape_with_a_dot_inside:Cyui