Вы не знаете, что означает «источник» в контексте 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, но это совсем другой вопрос). Кроме того, этот параметр может быть переопределен процессом, специально выбирающим привязку к определенному адресу вместо использования значений по умолчанию при инициировании подключений (довольно редко).
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атрибуту обратного маршрута.
Ответы:
При добавлении маршрута к многосетевому хосту вы можете захотеть контролировать исходный 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 или потому, что вы не хотите, чтобы ваш трафик проходил по этому маршруту по той или иной причине):
Обратите внимание, что предоставляемый вами src будет влиять только на трафик, исходящий от вашего хоста. Если сторонний пакет маршрутизируется, он, очевидно, уже будет иметь исходный IP-адрес, поэтому он будет передаваться без изменений (если, конечно, вы не используете NAT, но это совсем другой вопрос). Кроме того, этот параметр может быть переопределен процессом, специально выбирающим привязку к определенному адресу вместо использования значений по умолчанию при инициировании подключений (довольно редко).
источник
src
Атрибут является намек , что используется алгоритм выбора адреса . Это важно, когда хост имеет несколько IP-адресов, что обычно, но не всегда, когда он имеет несколько интерфейсов. В то время как существуют другие правила, влияющие на выбор адреса, и сетевое приложение может также переопределить алгоритм выбора с помощью системных вызовов, такихbind()
какsrc
атрибут, способ использовать поиск в таблице маршрутизации для ответа на вопрос: «Если я хочу инициировать соединение с хостом X, какой из моих адресов мне использовать? "Вот пример, иллюстрирующий использование и влияние
src
атрибута. Чтобы подчеркнуть, что это связано с адресами и маршрутами, а не только с интерфейсами, в этом примере хост имеет только один сетевой интерфейс, но два адреса. Кроме того, оба адреса находятся в одной подсети, чтобы подчеркнуть тот факт, что нет другого очевидного способа выбрать, какой из них использовать.Этот хост может связываться с любыми другими 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
атрибуту обратного маршрута.источник