LINUX.ORG.RU
ФорумAdmin

iptables - обращение к внешнему ip из локальной сети

 , ,


0

2

Здравствуйте! Есть шлюз с двумя интерфейсами (Интернет и Локалка) и iptables:

INET_IFACE=eth0

INET_IP=62.152.Х.Х

LAN_IFACE=eth1

LAN_IP=192.168.0.101

Внутри локальной сети есть web-сервер (192.168.0.202), на котором работает поддомен основного сайта (web.bla-bla.ru). Надо дать доступ к этому поддомену из вне и из локальной сети. Было написано такое правило:

$IPT -t nat -A PREROUTING -i $INET_IFACE -p tcp --dport 80 -j DNAT --to-destination 192.168.0.202

Вроде заработало. Люди из вне могут вбить в адресную строку браузера 62.152.Х.Х или адрес web.bla-bla.ru и все работает.

А вот у пользователей локальной сети не отрывается поддомен. Подскажите какое надо дописать правило, чтобы люди из локальной сети при обращении к web.bla-bla.ru могли работать с поддоменом.

Спасибо!


не открывается по имени надо полагать?

$IPT -t nat -A PREROUTING -i $LAN_IFACE -p tcp --dport 80 -j DNAT --to-destination 192.168.0.202

нэ? пальцем в небо, но работать вроде должно )

mos ★★☆☆☆ ()

Объяснение феномену и решения есть тут, но это для pf. Для iptables должно быть в принципе очень похоже.

beastie ★★★★★ ()
Последнее исправление: beastie (всего исправлений: 2)
Ответ на: комментарий от nerve

ничо, пущай только на сайт любимого работодателя ходят, нефиг.

ну а вообще добавить в правило дестинейшн ip и будет не так же. хотя, я уже подзабыл всю эту абракадабру с iptables.
тут вон пишут аж про «феномен» какой-то, тогда наверно это above my paygrade )

mos ★★☆☆☆ ()

У вас 192.168.0.202 пытается отвечать компьютерам локальной сети напрямую, минуя шлюз. Либо делайте на шлюзе SNAT (-s 192.168.0.0/24 -d 192.168.0.202 -j SNAT --to-source 192.168.0.101), либо давайте web-серверу адрес из другой сети.

mky ★★★★★ ()
Ответ на: комментарий от mky

Разумно. Но в случае -j SNAT в логах вебсервера локальные пользователи будут от имени шлюза работать; но по-другому вряд ли получится.

Infra_HDC ★★★★★ ()

поясняющий довесок

пусть

WWW_LAN_IP=192.168.0.202

LAN_NET=192.168.0.0/24

тогда:

$IPT -t nat -A PREROUTING -i $LAN_IFACE -s $LAN_NET -d $INET_IP -p tcp --dport 80 -j DNAT --to-destination $WWW_LAN_IP

$IPT -t nat -A POSTROUTING -s $LAN_NET -d $WWW_LAN_IP -p tcp --dport 80 -j SNAT --to-source $LAN_IP

Infra_HDC ★★★★★ ()

Я бы начал с DNS, чтобы не гонять локальный трафик через пограничный NAT.

man split horizon

baka-kun ★★★★★ ()
Ответ на: комментарий от Infra_HDC

но по-другому вряд ли получится.

Можно менять маршрутизацию на web-сервере — дать серверу ip из другой сети, или запретить ему ходить локалку напрямую, только через этот маршрутизатор. Или, если на web-сервере linux, повешать web-сервер на ещё один порт (допустим 8080), делать DNAT на этот порт и трафик с этого порта пускать через маршрутизатор.

mky ★★★★★ ()
Ответ на: комментарий от mky

Если https, и резолвить IP-адрес web-сервера в зависимости от того, принедлежит ли клиент внутренней сети, то могут возникнуть трудности с действительностью сертификатов?

Infra_HDC ★★★★★ ()
Ответ на: комментарий от Infra_HDC

Точно не скажу, но, наверное нужно будет делать сертификат с указанием обоих ip-адресов (192.168.0.202 и 62.152.Х.Х в случае ТС).

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