1,832 瀏覽數

Linux / Windows – Routing

這文章的前半段是 就是要上網 – 透過手機 主要是討論如何透過改 Routing Table 修改網路走的路徑

當你有多個網路埠的時候有什麼方式可以讓個人電腦同時可以自己選擇從哪一個埠出去.

window_routing01
這時候可以設定個人電腦的 Routing Table (告訴封包要從哪一個網路埠出去) 即可!

Windows

先來看一下目前的 IP 狀況

C:\Users\BENJR\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\BENJR>route print

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\BENJR>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

Linux

Linux 下的 Routing Table 跟 Windows 是一樣的,指令也差不多, 一樣使用 route add 來新增 Routing 規則,

# route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]] 

常用的大概就這一些.
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

發表迴響