Прописать маршрут через IP адрес который не в моей подсети
Есть два сервера. Основной (Gentoo) и вспомогательный (виртуальный/Centos). Основной имеет IP внешний A.A.A.A, вспомогательный имеет внешний IP B.B.B.B На вспомогательном поднят VPN IPSEC с поставщиком услуг. С вспомогательного идёт подключение по VPN к 172.16.110.1.
Надо с основного подключиться к 172.16.110.1
На вспомогательном был поднят OpenVPN клиент, который подключался к моему основному серверу + прописано правило
-A POSTROUTING -s ВПН_ИП_ОСНОВНОГО/32 -d 172.16.110.1/32 -j SNAT --to-source B.B.B.B
На основном я прописывыл
route add 172.16.110.1/32 gw ВПН_ИП_ВСПОМОГАТЕЛЬНОГО
Все хорошо, только впн лёг по независимым от меня причинам и нельзя пока поднять (просьба пока не спрашивать про это).
И вот я пытаюсь сделать проброс без впн
route add 172.16.110.1/32 gw B.B.B.B
А на вспомогательном думал прописать
-A POSTROUTING -s A.A.A.A/32 -d 172.16.110.1/32 -j SNAT --to-source B.B.B.B
Но при добавлении
route add 172.16.110.1/32 gw B.B.B.B
выдает ошибку
SIOCADDRT: Network is unreachable
насколько я понимаю, я не могу указать в качестве шлюза внешний ип адрес вспомогательного сервера, т.к. он не в подсети основного сервера.
Буду признателен за любую информацию. Спасибо
Ответы (1 шт):
Может кому понадобится.
Решился через iptables вопрос.
eth0 - интерфейс внешнего IP адреса 2222 - порт для подключения к поставщику услуг
На виртуальном сервере:
iptables -t nat -A PREROUTING -p tcp --dport 40001 -i eth0 -j DNAT --to 172.16.110.1:2222
iptables -A FORWARD -p tcp -d 172.16.110.1 --dport 2222 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -p tcp -d 172.16.110.1 --dport 2222 -j MASQUERADE