Прописать маршрут через 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 шт):

Автор решения: beba

Может кому понадобится.

Решился через 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
→ Ссылка