Я хочу отправить пакет (icmp или другой) через определенный сетевой интерфейс, минуя таблицу маршрутизации.
Контекст: я подключен через несколько интерфейсов к разным конечным точкам. Некоторые из них могут направлять мой трафик в Интернет, если я добавлю к ним маршрут. Я не хочу трогать таблицу маршрутизации (поскольку это глобальная системная функция, и я параллельно тестирую устройства из соображений скорости).
Сначала я думал, что достаточно простого ping -I DEVICE -r ANY_IP_ONINTERNET
. Но это не так: пакеты НЕ отправляются на выбранное устройство, как я ожидал, и команда завершается ошибкой... tcpdump
на другом конце не перехватывает пакеты: пакеты не перехватываются даже быть отправленным в интерфейс в первую очередь, несмотря на мою явную команду.
Когда я добавляю маршрут перед пингом, все работает как положено. Но хотелось бы этого избежать... И потом, -I DEVICE -r
больше не требуется.
- может ли кто-нибудь объяснить мне, почему это не работает? и
- в каком случае использование
-I DEVICE
или-r
действительно работает и полезно?
Примечание. Я тестирую это с разными VPN с tapX
и tunX
устройствами.
EDIT: я пробовал комбинацию с/без -r
и с использованием -I DEVICE
или -I IP_ADDR_DEVICE
. Без большего успеха.