Назад | Перейти на главную страницу

ip route показать поле src

Я прочитал справочную страницу ip и до сих пор не понимаю что src есть, и я не смог найти много документации.

Пожалуйста, если вы можете подробно объяснить или указать ссылку, это хороший ответ.

При добавлении маршрута к многодомному хосту вам может потребоваться контроль над исходным IP-адресом, с которого ваш хост отправляет данные при запуске связи с использованием этого маршрута. Это то, что src для.

Краткий пример: у вас есть хост с двумя интерфейсами и IP-адресами 192.168.1.123/24 и 10.45.22.12/24. Вы добавляете маршрут к 78.22.45.0/24 через 10.45.22.1 и хотите убедиться, что вы не отправляете на 78.22.45.0/24 с использованием адреса 192.168.1.123 (возможно, потому что сеть 78.22.45.0/24 не имеет обратного маршрута на 192.168.1.0/24 или потому, что вы не хотите, чтобы ваш трафик направлялся по этому маршруту по той или иной причине):

ip route add 78.22.45.0/24 via 10.45.22.1 src 10.45.22.12

Обратите внимание, что src то, что вы даете, повлияет только на трафик, исходящий от вашего самого хоста. Если маршрутизируется чужой пакет, очевидно, что у него уже будет исходный IP-адрес, поэтому он будет передан без изменений (если, конечно, вы не используете NAT, но это совершенно другое дело). Кроме того, этот параметр может быть переопределен процессом, специально выбирающим привязку к определенному адресу вместо использования значений по умолчанию при инициировании соединений (довольно редко).

В src атрибут - это подсказка, которая используется алгоритм выбора адреса. Это важно, когда у хоста несколько IP-адресов, что обычно, но не всегда, когда у него несколько интерфейсов. Хотя существуют и другие правила, которые влияют на выбор адреса, сетевое приложение также может переопределить алгоритм выбора с помощью системных вызовов, таких как bind(), то src Атрибут - это способ использовать поиск в таблице маршрутизации, чтобы ответить на вопрос: «Если я хочу инициировать соединение с хостом X, какой из моих адресов мне следует использовать?»

Вот пример, иллюстрирующий использование и эффект src атрибут. Чтобы подчеркнуть, что это связано с адресами и маршрутами, а не строго с интерфейсами, в этом примере хоста есть только один сетевой интерфейс, но два адреса. Кроме того, оба адреса находятся в одной подсети, чтобы подчеркнуть тот факт, что нет другого очевидного способа выбрать, какой из них использовать.

$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.1.0.2/24 brd 10.1.0.255 scope global eth0
    inet 10.1.0.16/24 scope global secondary eth0
$ ip route list dev eth0
10.1.0.32/27  scope link  src 10.1.0.16
10.1.0.0/24  proto kernel  scope link  src 10.1.0.2

Этот хост может связываться с любым из других 252 адресов в этой / 24 подсети с любого адреса, но по умолчанию он будет использовать 10.1.0.16 при инициировании соединения с 10.1.0.32 по 10.1.0.63 и использовать 10.1.0.2 для всех остальных.

Если хост отвечает, а не инициирует, то он будет отвечать с адреса назначения запроса. Например, если другой хост по адресу 10.1.0.32 подключается к этому хосту по адресу 10.1.0.2, ответ будет поступать от 10.1.0.2, даже если он не соответствует src атрибут обратного маршрута.