Я хочу соединить два сервера друг с другом через Интернет. По разным причинам я не могу использовать для этого IPSec.
Я хочу, чтобы трафик был прозрачно зашифрован, как если бы я использовал транспортный режим IPSec. Я решил использовать для этого маршрутизацию (но я открыт для лучших альтернатив)
Мой туннель открыт 10.255.255.0/30
, A использует .1
, Автобусы .2
. Допустим, сервер A находится в 192.168.0.100
и сервер B 172.16.0.200
.
Хотя я мог добавить маршрут для шифрования всего трафика (используя на A ip route add 172.16.0.200/32 dev tun0 via 10.255.255.2
), при этом туннель уничтожается, потому что трафик OpenVPN использует тот же удаленный IP-адрес для поддержания туннеля.
Мне нужен способ проложить фактический туннель OpenVPN через eth0
но в противном случае используйте tun0
для передачи всего трафика между серверами A и B. У меня включен ip_forward на обоих серверах и соответствующие правила брандмауэра, чтобы разрешить трафик, но я не уверен, с чего начать в iptables для этого.
Думаю, вам нужна дополнительная таблица маршрутизации для всего трафика между двумя хостами, кроме openvpn. Вы можете попробовать что-то вроде этого:
iptables -t mangle -A OUTPUT -d 172.16.0.200/32 -p <vpn_protocol> ! --dport <vpn_port> -j MARK --set-mark 2
ip route add default via 10.255.255.2 dev tun0 table 2
ip rule add fwmark 2 table 2
по обе стороны от туннеля
Вам следует добавить маршрут к удаленной сети через интерфейс туннелирования и более конкретный маршрут, гарантирующий, что ваш трафик на удаленный шлюз OpenVPN не будет отправляться через интерфейс туннеля. Пример:
ip route add 192.168.0.0/24 via 10.255.255.2 dev tun0
ip route add 192.168.0.100 via 172.16.0.1 dev eth0
Первый ip route
добавляет маршрут к сети назначения, а второй ip route
добавляет маршрут хоста к шлюзу OpenVPN, расположенному в той же сети. 172.16.0.1
это шлюз с действующим маршрутом к 192.168.0.100 и eth0
это локальный интерфейс, подключающийся к той же сети, что и шлюз. Обратите внимание, что первый ip route
будет ненужным, если вы настроили OpenVPN с route
и push "route ..."
операторы, так как они будут добавлены демоном OpenVPN при запуске / успешной установке соединения.