isapioff
@isapioff

Как подключиться к «внутреннему» порту, используя внешний ip?

Друзья,

Есть сервер, у него постоянное соединение pppt. Получается, что у него есть 2 IP адреса: внутренний 192.168.0.200 (выдан роутером) и "внешний" 10.0.0.160 (выдан VPN сервером).

На сервере стоит стороннее приложение, которое доступно по порту 48900, если подключаться через внутренний IP, но не доступно, если подключаться через "внешний".

При этом, если я запускаю обычный apache или tomcat, они прекрасно доступны по обоим IP.

Вот подробности:

$ netstat -lnt 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 192.168.0.200:48900         0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN


Видно, что стороннее приложение использует Local Address 192.168.0.200:48900 и я могу подключиться на порт 48900 только через внутренний IP. А вот на порт 8080 получается присоединиться используя и внешний 10.0.0.160:8080.

Что нужно сделать, чтобы я смог подключаться на порт 48900, используя 10.0.0.160:48900 ?

Спасибо.
  • Вопрос задан
  • 5634 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Что нужно сделать, чтобы я смог подключаться на порт 48900, используя 10.0.0.160:48900

Пофиксить приложение в том месте, где оно вызывает bind для сокета, заменив адрес на 0.0.0.0 (INADDR_ANY).
Если такая роскошь недоступна, сделать редирект с 10.0.0.160 на 192.168.0.200 с помощью iptables (DNAT), ssh-туннеля или чего-нибудь ещё.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
isapioff
@isapioff Автор вопроса
Выполнил

iptables -t nat -A PREROUTING -p tcp -d 10.0.0.160 --dport 48900 -j DNAT --to-destination 192.168.0.200:48900

заработало!!! Спасибо!!!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы