LINUX.ORG.RU
ФорумAdmin

Нет соединения из локальной сети по внешнему ip адресу.

 , ,


1

2

Доброго времени суток. Помогите пожалуйста в решении проблемы. Скрин с ifconfig сети и схемой: http://i71.fastpic.ru/big/2015/1007/c9/952627e0c718b20b4da3e870bbc5c2c9.jpg

Есть интернет шлюз на который из внешнего интернета заходит канал с выделенным белым ip адресом INET_IP. В этом шлюзе еще еще четыре сетевых карты, которые транслируют общую локальную сеть на офис.

На компьютере внутри локальной сети есть WEB сервер на локальной машине 192.168.0.20 Задача обстояла в перенаправлении запроса на внешний ip адрес INET_IP с левым портом(33333) на нашу локальную машину 192.168.0.20 с стандартным портом 80. Для этого были написаны правила:

-A PREROUTING -d INET_IP/32 -p tcp -m tcp --dport 33333 -j DNAT --to-destination 192.168.0.20:80

-A FORWARD -d 192.168.0.20/32 -i eth5 -o lanbridge -p tcp -m tcp --dport 80 -j ACCEPT

INET_IP -      внешний белый интернет адрес

port 33333 -   порт, который мы перенаправляем

192.168.0.20 - наша локальная машина с WEB сервером

80 -           стандартный http порт

eth5 -         интерфейс по которому в шлюз поступает внешний инет

lanbridge -    объединение eth0+eth1+eth2+eth3
Смотрите прилагающийся скрин.

После написания указанных выше правил, доступ к вебинтерфейсу сервера из внешнего мира появился. НО ИЗ ЛОКАЛЬНОЙ СЕТИ нельзя зайти на него по внешнему ip адерсу INET_IP Пожалуйста помогите решить проблему, пригалаю мои iptables:

*nat
:PREROUTING ACCEPT [70:4973]
:INPUT ACCEPT [36:2188]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [4:913]
-A PREROUTING -d INET_IP/32 -p tcp -m tcp --dport 33333 -j DNAT --to-destination 192.168.0.20:80

-A PREROUTING -i eth5 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.XXX

-A PREROUTING -p tcp -m tcp --dport 29858 -j DNAT --to-destination 192.168.0.XXX

-A PREROUTING -p tcp -m tcp --dport 8888 -j DNAT --to-destination 192.168.0.XXX

-A PREROUTING -p tcp -m tcp --dport 29859 -j DNAT --to-destination 192.168.0.XXX

-A PREROUTING -p tcp -m tcp --dport 29860 -j DNAT --to-destination 192.168.0.XXX

-A PREROUTING -i eth5 -p udp -m udp --dport 5060 -j DNAT --to-destination 192.168.0.20

-A PREROUTING -i eth5 -p udp -m udp --dport 10000:20000 -j DNAT --to-destination 192.168.0.20

-A POSTROUTING -s 192.168.0.0/24 -o eth5 -j MASQUERADE
*filter
:INPUT ACCEPT [28593:1641944]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT

-A INPUT -i lanbridge -j ACCEPT

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -m state --state INVALID -j DROP

-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP

-A INPUT -i lanbridge -p tcp -m tcp --dport 29857 -j ACCEPT

-A INPUT -i eth4 -p tcp -m tcp --dport 29857 -j ACCEPT

-A INPUT -i eth5 -p tcp -m tcp --dport 29857 -j ACCEPT

-A FORWARD -d 192.168.0.20/32 -i eth5 -o lanbridge -p tcp -m tcp --dport 80 -j ACCEPT

-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

-A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

-A FORWARD -m state --state INVALID -j DROP

-A FORWARD -i lanbridge -o eth5 -j ACCEPT

-A FORWARD -i eth4 -o lanbridge -j REJECT --reject-with icmp-port-unreachable

-A FORWARD -s 192.168.0.0/24 -j ACCEPT

-A FORWARD -d 192.168.0.0/24 -j ACCEPT

-A OUTPUT -o lo -j ACCEPT

-A OUTPUT -o lanbridge -j ACCEPT

-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

-A OUTPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP

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

Спасибо.

Спасибо за совет с оформлением, помогите по вопросу плз)

jsqaz ()
Ответ на: Проблема актуальна. от jsqaz

Re: Проблема актуальна.

так не будет работать
ответный пакет от сервера клиенту отправляется с адреса 192.168.0.20:80, и, поскольку клиент находится в той же сети, приходит к клиенту минуя сервер, т.е. этот src-адрес не подменяется назад, а значит клиент получает ответный пакет от «странного» отправителя и дропает его
можешь посмотреть tcpdump'ом на клиенте

anonymous ()
Ответ на: Спасибо от jsqaz

Re: Спасибо

я же написал, что обратные пакеты не идут через сервер, поэтому никакие правила на сервере ситуацию не исправят

ходи из локалки по внутреннему адресу, или вешай этот сервер в отдельную от других клиентов подсеть

anonymous ()

НО ИЗ ЛОКАЛЬНОЙ СЕТИ нельзя зайти на него по внешнему ip адерсу INET_IP

split horizon dns и ходи изнутри по внутреннему адресу, а снаружи - по внешнему. имя будет одинаково.

aol ★★★★★ ()

Вам нужно настроить так называемый NAT Loopback / NAT Hairpin. Грубо говоря, вам нужно делать DNAT с локального интерфейса на внутренний, если пакет пришел на внешний IP из локалки.

ValdikSS ★★★★★ ()
Ответ на: Re: Спасибо от anonymous

Хотелось сделать это через ip tables, но раз такое дело, то будем юзать DNS. Спасибо за ответы.

jsqaz ()
Ответ на: комментарий от aol

Спасибо, видимо DNS и будем использовать, хотя все это мы понимаем, посто хотели решить проблему через ip tables. Спасибо за ответ.

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