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

Как узнать, какой интерфейс использует входящий трафик?

Для исходящего пакета по route Я могу знать, какой интерфейс используется, но для входящего пакета, как узнать, какой интерфейс используется?

Вы ищете ip route get команда. Это эквивалент BSD route get.

ip route get 50.232.186.20 например, покажет, какой маршрут будет использоваться для доступа к этому IP. Эта команда не разрешает имена хостов сама по себе.

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

то же самое происходит на уровне MAC

В общем, Linux ожидает, что пакет будет входить через тот же интерфейс, что и выход.

Если это не так, ядро ​​сообщает о пакете как о марсианском, и если у вас установлено следующее значение sysctl, пакеты будут отброшены, если они видны с интерфейса, который не может вернуться к ( rp в rp_filter стандарт для обратного пути).

net.ipv4.conf.all.rp_filter = 1

Поэтому обычно, если у вас нет особо сложной таблицы маршрутизации или настройки, вы можете проверить вывод ip r и сделать обоснованное предположение. Скорее всего, вы захотите проверить, какой у вас маршрут по умолчанию, и будет большая вероятность, что ответом на ваш вопрос будет «на какой интерфейс указывает ваш маршрут по умолчанию».

Все вышеперечисленное может быть изменено администраторами при необходимости, но в целом, AFAIK именно так работает большинство систем.