Как получить шлюз по умолчанию, если netstat / ifconfig и ip недоступны?

У вас наверняка есть маршрутизатор между вашим домашним ПК и Интернетом.

Таким образом, вам нужно будет выполнить переадресацию портов на вашем маршрутизаторе с : 8160 на : 22 .
Если вы находитесь за маршрутизатором, вам не нужно менять порт прослушивания SSH с 22, а просто добавьте переадресацию в брандмауэр вашего маршрутизатора.

1
20.09.2017, 00:06
4 ответа

cat /proc/net/routeдает вам полную таблицу маршрутизации, включая шлюз по умолчанию, как и ip route. Однако IP-адреса представлены в шестнадцатеричном и байтовом формате.

1
27.01.2020, 23:44

В CentOS сведения о шлюзе по умолчанию можно получить из файла/etc/sysconfig/network

.
0
27.01.2020, 23:44

Как упоминал @dirkt, таблица маршрутизации по умолчанию хранится в виде текста в /proc/net/routeв любой современной системе Linux, но, к сожалению, IP-адреса хранятся в (в обратном )шестнадцатеричном формате. С помощью небольшого взлома bash и помощи от awkи sedмы можем превратить это в удобочитаемый IP-адрес :

.
for i in $(echo "$(< /proc/net/route | head -2 | tail -1 | awk '{print $3}')" | sed -E 's/(..)(..)(..)(..)/\4 \3 \2 \1/' ) ; do printf "%d." $((16#$i)); done | sed 's/.$//' 

Вот та же идея в более читаемой (и многострочной -строчной )версии:

#!/usr/bin/env bash
get-default-gateway() {
  default_route_ip="$(< /proc/net/route | head -2 | tail -1 | awk '{print $3}')"

  hex-ip-to-dec-ip "$default_route_ip"
}

hex-ip-to-dec-ip() {
  local hex_ip="$1" 
  for i in $(echo "$hex_ip" | sed -E 's/(..)(..)(..)(..)/\4 \3 \2 \1/' ) ; do 
    printf "%d." $((16#$i));
  done | sed 's/.$//' 
}

get-default-gateway
1
27.01.2020, 23:44

Вы можете использовать команду route :

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth1
0
19.03.2020, 07:48

Теги

Похожие вопросы