使用靜態路由讓小烏龜下的多個子網段互通
===
###### 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