Это даст вам имя одного физического устройства. Я думаю, что awk не будет работать правильно для нескольких устройств. Однако снимите awk, и вы получите список всех физических имен.
lshw -class network | grep -A 1 "bus info" | grep name | awk -F': ' '{print $2}'
Вероятно, это проблема маршрутизации и (в сочетании с ней )rp _фильтра.
Стандартная маршрутизация довольно глупа. Не имеет значения, через какой интерфейс было открыто соединение, но определяет (обычно только )один следующий переход для каждого IP-адреса, как правило, шлюза по умолчанию.
Проверьте эти настройки.:sysctl -a | grep -F.rp_filter
Если значение больше нуля для соответствующего интерфейса, пакет отбрасывается еще до того, как достигнет брандмауэра.
Если вы установите его равным нулю, ваша система может ответить правильно, но из-за брандмауэров между вашей системой и целью ответ может быть пропущен, поскольку он пришел с неправильного направления.
Хорошее решение требует маркировки входящих соединений для каждого интерфейса(iptables
модулями mark
иconnmark
)отдельно и использования политик маршрутизации с этими метками(ip rule
).