LINUX.ORG.RU
ФорумAdmin

Как странслировать публичный сокет для внутренних пользователей через iptables?

 


0

1

Всем привет!

Казалось бы простая задача, но не могу нагуглить. Есть у меня Linux-марштуризатор, у которого наружу смотрит публичный IP-адрес, скажем, 203.0.113.1 (для примера, на самом деле другой). Публичный IP-адрес 203.0.113.1 стоит на интерфейсе eth2. Внутренняя сеть 192.168.77.0/24 подключена к интерфейсу eth1 Linux-маршрутизатора, где у него стоит IP-адрес 192.168.77.1. Настроен NAT, внутренние пользователи в публичном Интернете видны под адресом 203.0.113.1, успешно открывают чужие сайты. Внутри находится Web-сервер 192.168.77.187. Снаружи через NAT он виден как http://203.0.113.1:8084, пользователи публичного Интернета успешно открывают URL http://203.0.113.1:8084/.

Проблема: пользователи внутренней сети 192.168.77.0/24 не могут открыть http://203.0.113.1:8084. Нужно сделать так, чтобы пользователи внутренней сети 192.168.77.0/24 могли открывать http://203.0.113.1:8084.

Правила iptables следующие:

*mangle
COMMIT


*filter
#
# My Web server
-A FORWARD -d 192.168.77.187/32 -p tcp --dport 80 -j ACCEPT

COMMIT

*nat
# My Web server
-A PREROUTING  -i eth2 -p tcp --dport 8084 -j DNAT --to 192.168.77.187:80

-A POSTROUTING -s 192.168.77.0/24 -o eth2 -j MASQUERADE


COMMIT

В моём распоряжении только один публичный адрес 203.0.113.1, других нет.

Прошу помочь.

Ответ на: комментарий от anc

Спасибо за отклик! Убрал -i eth2 у PREROUTING, но не помогло. Все симптомы остались. Сейчас правила выглядят так.

*mangle
COMMIT


*filter
#
# My Web server
-A FORWARD -d 192.168.77.187/32 -p tcp --dport 80 -j ACCEPT

COMMIT

*nat
# My Web server
-A PREROUTING -p tcp --dport 8084 -j DNAT --to 192.168.77.187:80

-A POSTROUTING -s 192.168.77.0/24 -o eth2 -j MASQUERADE


COMMIT

Alexander7
() автор топика
Ответ на: комментарий от Alexander7

Получилось! Добавил ещё одно правило POSTROUTING. Вместе правила выглядят так.

*mangle
COMMIT


*filter
#
# My Web server
-A FORWARD -d 192.168.77.187/32 -p tcp --dport 80 -j ACCEPT

COMMIT

*nat
# My Web server
-A PREROUTING -p tcp --dport 8084 -j DNAT --to 192.168.77.187:80
-A POSTROUTING -s 192.168.77.0/24 -p tcp --dport 80 -d 192.168.77.187 -j MASQUERADE

-A POSTROUTING -s 192.168.77.0/24 -o eth2 -j MASQUERADE


COMMIT

Alexander7
() автор топика
Ответ на: комментарий от Alexander7

Да, забыл. Про локальный маскарад.

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.