這文章的前半段是透過手機就是要上網 – https://benjr.tw/74430 主要是討論如何透過改 Routing Table 修改網路走的路徑.
當你有多個網路埠的時候有什麼方式可以讓個人電腦同時可以自己選擇從哪一個埠出去.
這時候可以設定個人電腦的 Routing Table (告訴封包要從哪一個網路埠出去) 即可!
Windows
- IPv4
先來看一下目前的 IP 狀況C:\Users\Ben>ipconfig Windows IP 設定 乙太網路卡 區域連線 4: 連線特定 DNS 尾碼 . . . . . . . . : 連結-本機 IPv6 位址 . . . . . . . : fe80::8059:a5ac:6971:43d3%18 IPv4 位址 . . . . . . . . . . . . : 192.168.42.52 子網路遮罩 . . . . . . . . . . . .: 255.255.255.0 預設閘道 . . . . . . . . . . . . .: 192.168.42.129 乙太網路卡 區域連線: 連線特定 DNS 尾碼 . . . . . . . . : benjr.com 連結-本機 IPv6 位址 . . . . . . . : fe80::e875:a079:72b3:c4f3%10 IPv4 位址 . . . . . . . . . . . . : 10.32.78.136 子網路遮罩 . . . . . . . . . . . .: 255.255.252.0 預設閘道 . . . . . . . . . . . . .:
假設你有兩個網段 10.32.78.136 (只有10.0.0.0的網路從這邊出去) 與 192.168.42.52 (其他的封包從這邊出去)
將下列的 routing table 寫成一個 Windows 的 bat 檔案(xx.bat)
route delete 0.0.0.0 route add 0.0.0.0 mask 0.0.0.0 192.168.42.129 route add 10.0.0.0 mask 255.0.0.0 10.32.76.1
10.32.76.1 是 10.0.0.0 的 Gateway
192.168.42.129 是 其他封包的 Gateway這指令需要透過系統管理員身分執行才可以.
看一下 Routing Tables 的改變
C:\Users\Ben>route print -4 IPv4 路由表 =========================================================================== 使用中的路由: 網路目的地 網路遮罩 閘道 介面 計量 0.0.0.0 0.0.0.0 192.168.42.129 192.168.42.52 11 10.0.0.0 255.0.0.0 10.32.76.1 10.32.78.136 11 ===========================================================================
你可以很清楚看到前兩行 大部分的網路是透過 192.168.42.129 出去的,如果遇到 10.0.0.0 (10 開頭的網段) 還是透過 10.32.76.1
透過 tracert www.google.com 你可以很明顯看到網路是由 192.168.42.129 出去的.
C:\Users\Ben>tracert www.google.com 在上限 30 個躍點上 追蹤 www.google.com [74.125.203.103] 的路由: 1 <1 ms <1 ms <1 ms 192.168.42.129 2 * * * 要求等候逾時。 3 32 ms 30 ms 30 ms 10.156.65.1 4 38 ms 23 ms 30 ms 10.156.67.42 5 124 ms 211 ms 19 ms 10.156.67.6 6 93 ms 31 ms 30 ms 10.156.67.18 7 25 ms 20 ms 26 ms 210-65-126-98.HINET-IP.hinet.net [210.65.126.98] 8 45 ms 28 ms 42 ms r4005-s2.tp.hinet.net [220.128.3.162] 9 36 ms 28 ms 31 ms tyfo-3011.hinet.net [220.128.8.81] 10 21 ms 23 ms 35 ms 220-128-8-169.HINET-IP.hinet.net [220.128.8.169] 11 26 ms 30 ms 36 ms 74.125.49.158 12 36 ms 35 ms 22 ms 209.85.243.26 13 90 ms 66 ms 40 ms 209.85.252.167 14 * * * 要求等候逾時。 15 46 ms 36 ms 38 ms 74.125.203.103
- IPv6
一樣使用 route 指令多加上參數 -6 .C:\Users\Ben>route print -6 =========================================================================== 介面清單 11...00 0c 29 58 eb e8 ......Intel(R) 82574L Gigabit Network Connection 5...a4 83 e7 81 19 d5 ......Bluetooth Device (Personal Area Network) 1...........................Software Loopback Interface 1 =========================================================================== IPv6 路由表 =========================================================================== 使用中的路由: 介面 計量 網路目的地 閘道 11 281 ::/0 fe80::18f1:f5cb:696a:b038 1 331 ::1/128 在連結上 11 281 fd15:4ba5:5a2b:1008::/64 在連結上 11 281 fd15:4ba5:5a2b:1008:2459:f8fe:a1fe:b792/128 在連結上 11 281 fd15:4ba5:5a2b:1008:90f8:5128:de7e:744e/128 在連結上 11 281 fe80::/64 在連結上 11 281 fe80::90f8:5128:de7e:744e/128 在連結上 1 331 ff00::/8 在連結上 11 281 ff00::/8 在連結上
新增 IPv6 default Route (需 Administrator 權限).
C:\Users\Ben> route add ::/0 fd15:4ba5:5a2b:1008:2459:f8fe:a1fe:b792
如設定需永久生效(不受開關機影響)可以使用參數 -p (Permanent)
route -p add
Linux
- IPv4
Linux 下的 Routing Table 跟 Windows 是一樣的,指令也差不多, 一樣使用 route add 來新增 Routing 規則,# route [-v] [-A family |-4|-6] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If]
常用的大概就這一些.
add: 新增一條路由 Routing
del: 刪除一條路由 Routing-net: 指定網段
netmask: 網路遮罩
gw: 路由 Routing table 閘道檢視當前路由表 Routing table
# route # route -n
新增一條路由+閘道
# route add -net 172.16.0.0 netmask 255.255.255.0 gw 172.16.0.254
刪除一條路由
# route del -net 172.16.0.0 netmask 255.255.255.0 gw 172.16.0.254
新增 default gateway
# route add default gw 192.168.1.250
- IPv6
一樣使用 route 指令多加上參數 -6 .[root@localhost ~]# route -6 -n Kernel IPv6 routing table Destination Next Hop Flag Met Ref Use If ::1/128 :: U 256 1 0 lo fd15:4ba5:5a2b:1008::/64 :: U 100 1 0 ens33 fe80::/64 :: U 100 2 0 ens33 ::/0 fe80::1076:e837:a757:e66d UG 100 2 0 ens33 ::1/128 :: Un 0 4 0 lo fd15:4ba5:5a2b:1008:2534:caad:aa13:d5dc/128 :: Un 0 2 0 ens33 fe80::32a6:f7d6:b492:4c36/128 :: Un 0 3 0 ens33 ff00::/8 :: U 256 5 0 ens33 ::/0 :: !n -1 1 0 lo
新增 IPv6 Route 並指定 metric
[root@localhost ~]# route -6 add 2001:0002::/48 metric 1 dev ens33 [root@localhost ~]# route -6 -n Kernel IPv6 routing table Destination Next Hop Flag Met Ref Use If ::1/128 :: U 256 2 0 lo 2001:2::/48 :: U 1 1 0 ens33 fd15:4ba5:5a2b:1008::/64 :: U 100 1 0 ens33 fe80::/64 :: U 100 2 0 ens33 ::/0 fe80::1076:e837:a757:e66d UG 100 2 0 ens33 ::1/128 :: Un 0 4 0 lo fd15:4ba5:5a2b:1008:2534:caad:aa13:d5dc/128 :: Un 0 2 0 ens33 fe80::32a6:f7d6:b492:4c36/128 :: Un 0 3 0 ens33 ff00::/8 :: U 256 5 0 ens33 ::/0 :: !n -1 1 0 lo