Резюме: я хотел бы направить трафик, инициированный с определенного IP-адреса в VPN
Существующие ответы: есть несколько вопросов и ответов (1, 2), которые касаются именно этой проблемы, но они не работают для меня.
Детали:
Настройка на Debian 8. У меня есть соединение OpenVPN на 10.8.8.134
(в удаленном режиме с удаленным 10.8.8.133
), через которое я хотел бы перенаправить трафик с 192.168.10.10
.
192.168.10.10
- это созданный вручную IP на eth0
, который также получает через DHCP адрес (192.168.0.107
) и маршрут по умолчанию (192.168.1.1
).
Я установил OpenVPN для
- отказаться от маршрутов с сервера (
--route-noexec
) - удалить "поддельный маршрут по умолчанию", добавленный OpenVPN (два диапазона, охватывающие весь IPV4)
- добавить маршрутизацию к
10.8.8.1/255.255.255.255
(сервер OpenVPN gw) через10.8.8.133
(назначенный адрес OpenVPN)
Чтобы заставить трафик с 192.168.10.10
проходить через VPN, я попытался
ip route add 192.168.10.10 dev tun0
- или
ip route add 192.168.10.10 via 10.8.8.133
Результирующая таблица маршрутизации
root@debian-testing:~# ip route
default via 192.168.1.1 dev eth0
10.8.8.1 via 10.8.8.133 dev tun0
10.8.8.133 dev tun0 proto kernel scope link src 10.8.8.134
169.254.0.0/16 dev eth0 scope link metric 1000
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.107
192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.10
Дополнительный маршрут эквивалентен использованию route 192.168.10.10 255.255.255.255
в файле конфигурации OpenVPN.
В обоих случаях работает
traceroute -s 192.168.10.10 www.google.com
отправляет пакеты на реальный шлюз по умолчанию:
root@debian-testing:~# traceroute -s 192.168.10.10 www.google.com
traceroute to www.google.com (173.194.112.20), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
Как видно из tcpdump
(и wireshark)
Почему эта маршрутизация не работает?