Я хотел бы добиться использования моего openvpn-соединения в качестве шлюза по умолчанию для другого хоста в той же подсети. У меня есть 2 хоста в одной подсети, оба с Ubuntu Server 14.04.
Хост А запускает OpenVPN, чтобы установить соединение с моим openvpn-exit-node. Этот хост был изменен, чтобы разрешить переадресацию IP.
Хост B является клиент-приложение-сервером и должен использовать интернет-соединение через общее openvn-соединение от хоста A. Поскольку я настроил IP-адрес шлюза хоста B на IP-адрес хоста A, трафик с хоста B теперь маршрутизируется через openvpn-соединение хоста A.
Проблема проявляется в том, что соединение openvpn на узле A разрывается (по крайней мере, каждые 24 часа здесь, в Германии) и подключается повторно; после этого хост B использует gw по умолчанию с хоста A и обходит openvpn-соединение (иногда до тех пор, пока туннель снова не заработает, и каждый раз при перезагрузке хоста B).
Достижение должно заключаться в том, чтобы хост B получал доступ в Интернет только через openvpn-соединение. Есть ли возможность гарантировать, что хост B имеет доступ к Интернету только при условии, что он использует openvn-tunnel?
Хост A (eth0 ip: 10.11.12.6/gw: 10.11.12.1) (tun0 ip: 10.8.0.146/gw: 10.8.0.145):
Хост B (eth0 ip: 10.11.12.9/gw: 10.11.12.6): - Изменен шлюз по умолчанию на IP-адрес хоста A: работает - Весь трафик использует openvpn-туннель на хосте A
Проблема: Каждый раз, когда openvpn-соединение разрывается и / или openvpn повторно подключается, хост B, кажется, переключается обратно, используя шлюз по умолчанию для хоста A. Хост B в такой момент должен оставаться без доступа в Интернет, но вместо этого он использует соединение, которое хост A использует для подключения к шлюз openvpn.
С уважением, D0C
Для этого вам следует использовать маршрутизацию на основе политик; Позволит вам создавать отдельные независимые таблицы маршрутизации и направлять трафик в любую таблицу маршрутизации на основе свойств пакета, таких как Source-IP.
Создайте новую таблицу маршрутизации следующим образом:
echo "200 OpenVPN" >>/etc/iproute2/rt_tables
Добавьте шлюз по умолчанию во вновь созданную таблицу, как показано ниже:
route add default via OpenVPN-GW-IP table OpenVPN
Разрешить маршрутизацию Host-B с помощью этой таблицы маршрутизации:
ip rule add from Host-B-IP table OpenVPN
Вам также необходимо добавить в новую таблицу следующие маршруты:
ip route add 127.0.0.0/8 dev lo table OpenVPN
ip route add YOUR-Local-Subnet dev DEVICE-NAME table OpenVPN
Обновление: используйте SNAT вместо MASQURADE,
iptables -t nat -A POSTROUTING -s 10.11.12.9 -j SNAT --to-source 10.8.0.146