Вопрос или проблема
Я подключен через VPN, и я хочу, чтобы некоторые учетные записи пользователей обходили его. Интерфейс VPN – это tap0
(IP 172.16.x.x), основной интерфейс – wlan0
(IP 192.168.10.3). Весь обычный трафик идет в Интернет через tap0
.
Я создал вторую таблицу маршрутизации и добавил правило uid
:
# ip route add default via 192.168.10.1 dev wlan0 proto static table 2
# ip rule add uidrange 1001-1001 table 2
# ip route show table 2
default via 192.168.10.1 dev wlan0
Я ожидаю, что трафик пользователя будет выходить на wlan0
с исходным IP 192.168.10.3. Однако трафик затронутого пользователя имеет IP интерфейса wlan0
, но выходит на неправильном интерфейсе tap0
(и затем никуда не идет). Без правила трафик идет нормально через tap0
.
Странно, но ip route get
показывает то, что я ожидал. С установленным правилом:
$ ip route get 8.8.4.4
8.8.4.4 via 192.168.10.1 dev wlan0 table 2 src 192.168.10.3 uid 1001
cache
Без правила:
$ ip route get 8.8.4.4
8.8.4.4 via 172.16.0.1 dev tap0 src 172.16.0.102 uid 1001
cache
Я также пробовал добавить dev wlan0
и proto static
в таблицу маршрутизации, но это ничего не изменило. У меня абсолютно ничего нет в iptables
, все политики установлены на ACCEPT
. Я также пробовал iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
, но это не помогло (очевидно, потому что трафик выходит через tap0
). Я также установил rp_filter
в ноль везде.
В любом случае, пользователь может успешно пинговать шлюз wlan0
на 192.168.10.1. Спасибо за помощь.
Ответ или решение
Проблема с использованием VPN, когда вы хотите, чтобы некоторым учетным записям пользователей обходить его, достаточно распространенная. Рассмотрим симптомы вашей ситуации более подробно и ознакомимся с возможными решениями.
Контекст ситуации
Вы подключены к VPN через интерфейс tap0
, имеющий IP-адрес 172.16.x.x. Ваш основной интерфейс — это wlan0
с IP-адресом 192.168.10.3. Вы создали отдельную таблицу маршрутизации и добавили правило, чтобы заставить определенные UID (в вашем случае это UID 1001) использовать wlan0
для выхода в интернет. Это правильный подход, но возникают проблемы, так как трафик вместо wlan0
выходит через tap0
.
Исследование проблемы
-
Правила маршрутизации:
- Вы правильно создали вторую таблицу маршрутизации и добавили правило для UID. Однако убедитесь, что у вас правильно настроены все необходимые параметры в системе. Эта часть вроде бы корректна, так как
ip route get
показывает ожидаемое поведение.
- Вы правильно создали вторую таблицу маршрутизации и добавили правило для UID. Однако убедитесь, что у вас правильно настроены все необходимые параметры в системе. Эта часть вроде бы корректна, так как
-
Неявные правила маршрутизации:
- Убедитесь, что в системе нет других правил, которые могут пересекаться с вашим правилом для UID. Например, если другой интерфейс (например,
tap0
) имеет более высокий приоритет по умолчанию, он может перехватывать трафик.
- Убедитесь, что в системе нет других правил, которые могут пересекаться с вашим правилом для UID. Например, если другой интерфейс (например,
-
Параметры маршрутизации:
- Попробуйте обновить параметры маршрутизации в вашей таблице 2, добавив дополнительные флаги. Например, вы можете добавить параметр
src
, чтобы явно указать исходный IP-адрес.ip route add default via 192.168.10.1 dev wlan0 src 192.168.10.3 proto static table 2
- Попробуйте обновить параметры маршрутизации в вашей таблице 2, добавив дополнительные флаги. Например, вы можете добавить параметр
-
Проверка
iptables
:- Хотя вы упоминаете, что у вас нет правил в
iptables
, стоит проверить, не блокируют ли таблицы или цепочки NAT какой-либо трафик. Убедитесь, что у вас нет несовместимых портов или правил, которые могли бы повлиять на ваше сетевое окружение.
- Хотя вы упоминаете, что у вас нет правил в
-
Ограничения маршрутизации:
- Если после всех изменений ваш трафик все еще идет через
tap0
, возможно, дефолтная таблица маршрутизации или правилаip rule
грузятся неправильно. Попробуйте добавить приоритет вашему правилу:ip rule add from 192.168.10.3 table 2 priority 100
- Если после всех изменений ваш трафик все еще идет через
Заключение
Проблема "неправильного интерфейса" в вашем случае может быть связана с конфигурацией маршрутизации или пересечением с другими правилами. Постарайтесь проверить каждые шаги, и не забывайте, что VPN может вести себя по-разному в зависимости от настроек системы и конфигурации интерфейсов. Убедившись, что у вас есть и правильно настроены все параметры, вы сможете управлять трафиком и его маршрутизацией среди различных пользователей системы.
Если вышеупомянутые шаги не решают вашу проблему, желательно углубиться в логи системы или проверки сетевых соединений с использованием инструментов вроде tcpdump
, чтобы выяснить, что происходит "под капотом".