LINUX.ORG.RU
ФорумAdmin

Iptables DNAT непускает


0

0

Здравствуйте уважаемые.
ТАкой  вопрос,
Есть  обычный  прокси на  Linux  c двумя  иинтерфейсами
eth0 смотрим  в интернет
eth1  в локальную сеть
_____________________
Задача  при  обращении к   eth0  на  порт 1111   попадать   на  компьютер в локальной сети  с таким же портом.
В  iptables   написал  так

-A PREROUTING -p tcp -s 195.X.X.X -d 194.X.X.X --dport 1111  -j DNAT --to-destination 192.168.X.X:1111

-A FORWARD -s 194.X.X.X -d 192.168.X.X -p tcp --dport 1111 -j ACCEPT
-A FORWARD -s 192.168.X.X -d 194.X.X.X -p tcp --dport 1111 -j ACCEPT
-A FORWARD -i eth0 -s 194.X.X.X -d 192.168.X.X -p tcp --dport 1111 -j ACCEPT 

В  итоге    при попытке подключения  ничего не происходит
Может где  что  еще  нужно указать?

>-A FORWARD -s 192.168.X.X -d 194.X.X.X -p tcp --dport 1111 -j ACCEPT

там будет --sport

А вообще, попробуйте добавить в начало FORWARD --state RELATED,ESTABLISHED -jACCEPT, а остальные правила тут описанные выкинуть (кроме ДНАТА). Вдруг сработает?...

lodin ★★★★
()

-A FORWARD -s 194.X.X.X -d 192.168.X.X -p tcp --dport 1111 -j ACCEPT
 это зачем? О_о 

-A FORWARD -s 192.168.X.X -d 194.X.X.X -p tcp --dport 1111 -j ACCEPT 
 а это? 

-A FORWARD -i eth0 -s 194.X.X.X -d 192.168.X.X -p tcp --dport 1111 -j ACCEPT 

Дубль :-) Да уж если на по и пошло, то почему в обратку тоже 1111 порт ? О_о 

Вообще странно, для того чтобы работало достаточно только первого правила, 
если политика forward не drop. Либо тогда уж укажи по-человечески. 

-A FORWARD -s 195.X.X.X -d 192.168.X.X -p tcp --dport 1111 -j ACCEPT
              ^^^                             ^^^^^^^ 
-A FORWARD -s 192.168.X.X -d 195.X.X.X -p tcp --sport 1111 -j ACCEPT
              ^^^^^^^                         ^^^^^^^ 

Заголовок пакета правится ещё ДО попадания в цепочку FORWARD, 
соответственно разрешать форвардить пакеты надо уже с исправленными dst IP. 

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

нет не  сработало,
 попробовал  поменять  на sport
жизни не  прибавилось 
убрал строчки
 FORWARD --state RELATED,ESTABLISHED -jACCEPT
и так есть
 тоже  не помогло.
Загвостка  в том что  по соседству стоит  такая  же машина,  с теми же правилами в iptables и  на ней  работает 
%)

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

Да  форфардинг  разрешен
ip_forward   в  единице   стоит
да и  с  локалки внет машины  номально  бегают 

_________________
Anoxemian

Опечатка там была  строчки эти  две такие  же как   ты написал   за исключение что вовторой строчке  написан  был  dport     смена  на  sport    не  помогла

что касается  порта  1111  это образно, я прокидываю  3389

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

Дамп выдал  от что 
16:41:02.982975 ip_откуда стучусь.59.33130 > Внешний_IP_сервера.3389: S 217251945:217251945(0) win 5840 <mss 1460,sackOK,timestamp 42899336 0,nop,wscale 0> (DF)
16:41:14.982622 ip_откуда стучусь.33130 > Внешний_IP_сервера.3389: S 217251945:217251945(0) win 5840 <mss 1460,sackOK,timestamp 42900536 0,nop,wscale 0> (DF)
16:41:38.986655 ip_откуда стучусь.33130 > Внешний_IP_сервера.3389: S 217251945:217251945(0) win 5840 <mss 1460,sackOK,timestamp 42902936 0,nop,wscale 0> (DF)

помоему пакет даже  до внутренниго  IP   не  дошел  темболее  до сервера в локальной сети или нет?

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

Вообще без интерфесов, чтоб показывал все что тварится.

Мне почему то кажется что где то должен включаться редирект ... Учитывая что с такм конфигом другай пашина (со всеми теми же параметрами) работает нормально (на другом внешнем IP)

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

>Вообще без интерфесов, чтоб показывал все что тварится.

Ага, раскатал губы.
man tcpdump
       -i     Listen on interface.  If unspecified, tcpdump searches the sys-
              tem  interface  list  for  the  lowest  numbered, configured up
              interface (excluding loopback).  Ties are  broken  by  choosing
              the earliest match.

              On  Linux systems with 2.2 or later kernels, an interface argu-
              ment of ''any'' can be used to capture packets from all  inter-
              faces.   Note  that  captures on the ''any'' device will not be
              done in promiscuous mode.

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

Посмотрел на каждом  интерфейсе в отдельности вот что выдает
tcpdump: listening on eth0
08:02:16.265097 ip_откуда стучусь.33321 > Внешний_IP_сервера.3389: S 2711980936:2711980936(0) win 5840 <mss 1460,sackOK,timestamp 48426481 0,nop,wscale 0> (DF)
08:02:36.230596 ip_откуда стучусь.33322 > Внешний_IP_сервера.3389: S 2784399660:2784399660(0) win 5840 <mss 1460,sackOK,timestamp 48428477 0,nop,wscale 0> (DF)
08:02:39.225871 ip_откуда стучусь.33322 > Внешний_IP_сервера.3389: S 2784399660:2784399660(0) win 5840 <mss 1460,sackOK,timestamp 48428777 0,nop,wscale 0> (DF)
08:02:45.226085 ip_откуда стучусь.33322 > Внешний_IP_сервера.3389: S 2784399660:2784399660(0) win 5840 <mss 1460,sackOK,timestamp 48429377 0,nop,wscale 0> (DF)
08:02:57.226471 ip_откуда стучусь.33322 > Внешний_IP_сервера.3389: S 2784399660:2784399660(0) win 5840 <mss 1460,sackOK,timestamp 48430577 0,nop,wscale 0> (DF)

tcpdump: listening on eth1
08:03:19.229097 ip_откуда стучусь.33323 > сервер_чей_порт_проброшен.3389: S 2821464469:2821464469(0) win 5840 <mss 1460,sackOK,timestamp 48432776 0,nop,wscale 0> (DF)
08:03:19.233800 сервер_чей_порт_проброшен.3389 > ip_откуда стучусь.33323: S 2047259857:2047259857(0) ack 2821464470 win 65535 <mss 1460,nop,wscale 0,nop,nop,timestamp 0 0,nop,nop,sackOK>
08:03:22.228816 ip_откуда стучусь.33323 > сервер_чей_порт_проброшен.3389: S 2821464469:2821464469(0) win 5840 <mss 1460,sackOK,timestamp 48433077 0,nop,wscale 0> (DF)
08:03:22.233646 сервер_чей_порт_проброшен.3389 > ip_откуда стучусь.33323: . ack 1 win 65535 <nop,nop,timestamp 104942 48433077>
08:03:22.501851 сервер_чей_порт_проброшен.3389 > ip_откуда стучусь.33323: S 2047259857:2047259857(0) ack 2821464470 win 65535 <mss 1460,nop,wscale 0,nop,nop,timestamp 0 0,nop,nop,sackOK>


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

tcpdump: listening on eth0 
предпологаю,  что  по какой то веской причине  
  ответы  от сервера в  нутренней не  доходят до того  который  посылает запрос,
только вот не  догоняю что где пропиисать.  

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

Всем спасибо разобрался, отдельное спасибо за втык по tcpdump :)))) пока разбирался нашел ошибку. всего то написал интерфейс не -o а -i

Koran
() автор топика

DNAT меняет ТОЛЬКО IP получателя, IP отправителя остается НЕИЗМЕННЫМ !
Следовательно в FORWARD-е адрес 194.x.x.x не должен упоминаться (общаются только 195.x.x.x и 192.168.x.x):
-A FORWARD -s 195.X.X.X -d 192.168.X.X -p tcp --dport 1111 -j ACCEPT
-A FORWARD -s 192.168.X.X -d 195.X.X.X -p tcp --sport 1111 -j ACCEPT

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