Gateway

在給定目的地的情況下,如何在 LINUX 中獲取預設網關?

  • January 28, 2020

我正在嘗試使用目標 0.0.0.0 獲取預設網關

我使用了這個命令:netstat -rn | grep 0.0.0.0

它返回此列表:

Destination - Gateway      - Genmask         - Flags - MSS - Window - irtt - Iface
10.9.9.17   - 0.0.0.0      - 255.255.255.255 - UH    - 0     0        0    - tun0
133.88.0.0  - 0.0.0.0      - 255.255.0.0     - U     - 0     0        0    - eth0
0.0.0.0     - 133.88.31.70 - 0.0.0.0         - UG    - 0     0        0    - eth0

我的目標是使用目標 0.0.0.0 ping 預設網關;因此,即“133.88.31.70”;但是由於使用了“grep”,這個返回了一個列表。

問題是:我如何只獲得預設網關?我的 bash 腳本需要它來辨識網路連接是否啟動。

DEFAULT_ROUTE=$(ip route show default | awk '/default/ {print $3}')
ping -c 1 $DEFAULT_ROUTE

這應該可以解決您的問題。

ip route show default 0.0.0.0/0

ip route | grep此命令比具有許多(10000+)路由的系統上的預設命令要快得多

例如,從我的路由器中查找完整的 BGP 和手動預設路由作為備份

router:~# time ip route show default 0.0.0.0/0
default via XXX.XXX.192.254 dev eth0.123 

real    0m0.707s
router:~# time ip route | grep default
default via XXX.XXX.192.254 dev eth0.123 

real    0m8.596s
  • 因為ip route show default show我的所有路線不僅是預設路線
  • 因為ip route get不接受預設值0.0.0.0/0作為參數

引用自:https://serverfault.com/questions/47915