Назад | Перейти на главную страницу

маршрутизировать http и ssh трафик в обычном режиме, все остальное через туннель vpn

Прочитала совсем немного и близко, чувствую, и волосы выдергиваю ... пожалуйста Помогите!

У меня есть клиент OpenVPN, сервер которого устанавливает локальные маршруты, а также изменяет gw по умолчанию (я знаю, что могу предотвратить это с помощью --route-nopull). Я хотел бы, чтобы весь исходящий трафик http и ssh через локальный gw, а все остальное через vpn.

Вот таблица маршрутов после подключения openvpn:

# ip route show table main
0.0.0.0/1 via 10.102.1.5 dev tun0 
default via 192.168.1.1 dev eth0  proto static 
10.102.1.1 via 10.102.1.5 dev tun0 
10.102.1.5 dev tun0  proto kernel  scope link  src 10.102.1.6 
{OPENVPN_SERVER_IP} via 192.168.1.1 dev eth0 
128.0.0.0/1 via 10.102.1.5 dev tun0 
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.6  metric 1

Это заставляет все пакеты проходить через туннель VPN, кроме тех, которые предназначены для 192.168.1.0/24.

Делать wget -qO- http://echoip.org показывает адрес сервера vpn, как и ожидалось, пакеты имеют 10.102.1.6 в качестве адреса источника (локальный ip vpn) и маршрутизируются через tun0 ... как сообщает tcpdump -i tun0 (tcpdump -i eth0 не видит никакого трафика).

Я пробовал:

Я также попробовал iptables mangle output правило iptables nat prerouting правило. Он все еще не работает, и я не уверен, что мне не хватает:

Разве не так, чтобы добиться того, чего я хочу, тогда при выполнении wget http://echoip.org Я должен изменить адрес источника пакета на 192.168.1.6 перед его маршрутизацией? Но если я это сделаю, ответ от http-сервера будет перенаправлен обратно на 192.168.1.6 и wget не видел бы этого, поскольку он все еще связан с tun0 (интерфейс vpn)?

Может добрая душа помочь? Какие команды вы бы выполнили после подключения openvpn, чтобы достичь того, чего я хочу?

С нетерпением жду роста волос ...

0.0.0.0/1 via 10.102.1.5 dev tun0 Это твоя проблема.

0.0.0.0/1 - это безумно большой диапазон IP-адресов (0.0.0.0 - 127.255.255.255), и это первая запись в вашей таблице маршрутизации, поэтому любой IP-адрес, попадающий в этот диапазон, будет вынужден маршрутизироваться вниз. tun0 . Диапазон настолько велик, что охватывает большую часть маршрутизируемого IP-пространства в Интернете. Итак, echoip.org, который для меня разрешает 69.163.172.52, содержится в 0.0.0.0/1 (0.0.0.0 - 127.255.255.255).

Чтобы узнать, прав ли я, попробуйте wget http://serverfault.com, который для меня разрешается в 198.252.206.16, и посмотрите, не выходит ли он из eth0. Должен, потому что он выходит за пределы (0.0.0.0 - 127.255.255.255).

В общем, я обычно делаю свое IP-пространство tun0 максимально конкретным. 10.102.0.0/16 via 10.102.1.5 например.

Если ваша цель не направлять весь ваш интернет-трафик через определенную точку выхода из соображений безопасности / мониторинга, я бы попытался сузить пространство вашего туннельного IP-адреса.