ip route show src field


12

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

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


3
Вы не знаете, что означает «источник» в контексте IP-коммуникации? Вам не нужен
сбой

Ответы:


17

При добавлении маршрута к многосетевому хосту вы можете захотеть контролировать исходный 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, но это совсем другой вопрос). Кроме того, этот параметр может быть переопределен процессом, специально выбирающим привязку к определенному адресу вместо использования значений по умолчанию при инициировании подключений (довольно редко).


9

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атрибуту обратного маршрута.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.