У меня есть небольшой ящик Ubuntu, который запускает некоторые службы, используемые в моей локальной сети и в Интернете. По умолчанию gw на этом поле - мой кабельный модем, и все работает нормально ... соответствующие записи переадресации портов находятся в маршрутизаторе для внешних служб.
Однако я хочу использовать это поле для маршрутизации некоторого трафика через VPN в другую страну (например, сценарий типа Netflix, но не в этом случае). Я настроил openvpn и использовал --route-noexec, так как я не хочу ничего маршрутизировать из коробки через VPN, чтобы мой VPN-канал работал, а моя таблица маршрутизации не изменилась.
Пока все хорошо .. теперь я хочу изменить адрес шлюза на других хостах в моей сети, чтобы он был хостом, на котором запущен openvpn, и чтобы он проходил через VPN-туннель. Я считаю, что для этой работы мне нужна отдельная таблица маршрутизации, поэтому я настраиваю фиктивный виртуальный интерфейс на том же уровне. С другим MAC-адресом и назначенным статическим IP. - скажем, 192.168.1.252 eth0:1 (вместо 192.168.1.200 eth0)
Я установил новую таблицу маршрутизации, в которой шлюзом по умолчанию является IP-адрес интерфейса VPN tun0, и я включил IP Masquerade.
Если я добавляю правило (скажем, я хочу 192.168.1.61) для маршрутизации через VPN, а не через мой кабельный модем напрямую ... это работает, устанавливая правило для исходного IP, но я не хочу этого делать ..
IP-правило добавить из таблицы 192.168.1.61 (где таблица 4 - это таблица маршрутизации к VPN-IP)
И изменение шлюза по умолчанию на 192.168.1.61 на 192.168.1.252
Я не хочу добавлять это правило - я только хочу изменить адрес шлюза устройства на этот виртуальный интерфейс на моем хосте.
Итак, вопрос в том, как с помощью iproute2 или iptables я могу обнаружить пакеты, которые были направлены на этот виртуальный интерфейс? Такое ощущение, что я все перепробовал, но я уверен, что есть решение этой проблемы.