Skip to main content

set the priority order of the network services through linux cmd

· 3 min read
zaxro

使用場景

因為電腦切內外網的情況下,有時候會需要去切換網卡使用的優先順序,相比於去系統設定做調整,使用cmd也可以做到同樣事情且更方便!

2023/8/16新增調整路由的解法!

mac調整路由

另外一個思路是調整到某個網段,例如,10.0.0.0/8網段就會透過指定網關出去,其他走default.

netstat -nr:這個指令可以看目前路由情況,包含ipv4 and ipv6! route add -net 10.0.0.0/8 10.14.33.254 透過10.14.33.254網關到10.0.0.0/8網段

最後確認手段,透過route -n get 10.160.0.3測試他!這邊應該會看到走不同gateway

mac修改

整個流程會是先列出目前順序->調整順序->(optional)建立alias以便之後調整->長久生效化

列出目前順序

networksetup -listnetworkserviceorder

結果會像以下

An asterisk (*) denotes that a network service is disabled.
(1) Ethernet
(Hardware Port: Ethernet, Device: en0)

(2) Wi-Fi
(Hardware Port: Wi-Fi, Device: en1)

(3) iPhone USB
(Hardware Port: iPhone USB, Device: en4)

(4) Thunderbolt Bridge
(Hardware Port: Thunderbolt Bridge, Device: bridge0)

調整順序,這邊把wifi往前調整成為首位

sudo networksetup -ordernetworkservices "Wi-Fi" "Ethernet" "iPhone USB" "Thunderbolt Bridge"

確認結果

networksetup -listnetworkserviceorder

調整後結果如下

An asterisk (*) denotes that a network service is disabled.
(1) Wi-Fi
(Hardware Port: Wi-Fi, Device: en1)

(2) Ethernet
(Hardware Port: Ethernet, Device: en0)

(3) iPhone USB
(Hardware Port: iPhone USB, Device: en4)

(4) Thunderbolt Bridge
(Hardware Port: Thunderbolt Bridge, Device: bridge0)

建立alias

alias insetnet='sudo networksetup -ordernetworkservices "Ethernet" "Wi-Fi"  "iPhone USB" "Thunderbolt Bridge"'
alias outsetnet='sudo networksetup -ordernetworkservices "Wi-Fi" "Ethernet" "iPhone USB" "Thunderbolt Bridge"'

如果是用mac可以把上面那段加入到~/.zshrc的文尾.重新載入!

source ~/.zshrc

這邊建立兩個指令insetnet and outsetnet,用以切換網路使用順序!