Начало Вход/Регистрация Помощ Tazi stranica s latinski bukwi
Области
 Новини
 Актуална тема
 Linux портали
 Какво е Линукс?
 Въпроси-отговори
 Форуми
   •Трудова борса
   •Конкурс
 Статии
 Дистрибуции
   •Поръчка на CD
 Made In BG
 Файлове
 Връзки
 Галерия
 Конференции
Настройки
 Външен вид
 Предложения
 Направи си сам
И още ...
 За нас
 Линукс за българи ЕООД
 Линк към нас
 Предложения

Подкрепяно от:
TelePoint - Място за хора със свободни идеи

SiteGround

initLab

Adsys Group

SAP Bulgaria

Въпроси отговори
Въпрос: Port Forwarding с DNAT?
[Търси: ]

ВНИМАНИЕ: Използвайте форумите на сайта за дa зададете вашите въпроси.

Към началото |Добави въпрос |Отговори
 
Въпрос
От: OMA (oma (a) abv__dot__bg) Дата: 03/19/2004
Здравейте.
 Това което искам да направя е много просто. Искам при
 обръщение към 80-ти порт на сървърната ми машина 192.168.0.x
 заявката да се пренасочва към компютър 192.168.1.y от
 вътрешната ми мрежа. Знам, че това става с DNAT на iptables,
но нещо при мен не става връзката.
Това което правя е:
 iptables -A PREROUTING -t nat -p tcp -d 192.168.0.y --dport
80 -j DNAT --to 192.168.1.y:80
FORWARD веригата ми е ACCEPT при всяко положение.

 След това като пусна браузъра вече не се отваря web
 страницата на сървъра ми (явно пакетите се пренасочват към
 другата машина), но и не се отваря сайта от другият ми
компютър. Браузърът си цикли и достига timeout.

 Мисля, че подробно обясних какъв е проблема. Ако имате
 някакви предложения какво пропускам или какво буркам моля
споделете ги.
Благодаря

П.П. Успях да направя port forwarding с ssh по този начин:
ssh -L 80:192.168.1.y:80 192.168.0.x
Така всичко си работи, но с iptables е много по-елегантно!


Отговор #1
От: fallen Дата: 03/19/2004
 погледнете с ИП адресите пак. Тук 2та завършват на'у', не е
от значение за принципа, но за вас има значение.



Отговор #2
От: OMA (oma __@__ abv__dot__bg) Дата: 03/19/2004
 При мен ip адресите са си ок. Защо гледаш ip адресите??
 Какво общо имат те с моя въпрос? Така съм ги написал като
пример!
:(


Отговор #3
От: Kolio Kolev (kolio_kolev __@__ europe __точка__ com) Дата: 03/19/2004
Пробвай:
 
 /sbin/iptables -t nat -A PREROUTING -p tcp -d 192.168.0.y
--dport   80 -j DNAT --to 192.168.1.y:80


Кольо Колев


Отговор #4
От: OMA (oma (a) abv__dot__bg) Дата: 03/19/2004
 E това е 1 към 1 с това което аз съм го
написал!???????!!!!!?!

 НЕ СИ МИСЛЕТЕ, ЧЕ КОМАНДАТА НЕ СЕ ИЗПЪЛНЯВА! ИЗПЪЛНЯВА СЕ,
 но не се получава напълно резултата който искам. (описал съм
защо)


Отговор #5
От: OMA (oma< at >abv< dot >bg) Дата: 03/19/2004
 МНОГО ВИ МОЛЯ отговаряйте САМО ака наистина знаете какъв е
 проблема и ако се правили успешен port forwarding с
iptables.
Благодаря


Отговор #6
От: Kolio Kolev (kolio_kolev__at__europe[ точка ]com) Дата: 03/19/2004
Умника!
 Това дето съм го написал по горе е решението на проблема ти
за forward на порт.
 Ако това не работи (защото тази схема работи при мене и така
 е описано в документацията на iptables) - значи проблема ти
е другаде.
 За да се увериш, че работи горното правило, махни всички
правила в iptables и изпълни само горния ред!
 Също така направи диагностика с tcpdump и виж къде ти отиват
пакетите! Например на 192.168.0.y изпълни 
/usr/sbin/tcpdump -qnn | grep 192.168.0.y


Кольои Колев


Отговор #7
От: OMA (oma __@__ abv[ точка ]bg) Дата: 03/19/2004
 Ako това беше решението на проблема ми нямаше да го има този
 пост. Аз много добре съм прочел документацията на iptables и
 както съм написал във въпроса ми правя точно това което ти
 ми каза после. За да питам тук явно това нестава! От
 tcpdump-а виждам, че при заявка към 80-ти порт на сървърната
 машина, пакетите не се forward-ват, т.е. не напускат сървъра
 към вътрешната мрежа и нищо не достига до другия компютър.
При заявка браузърът зависва и достига timeout.
 Четох всякакви документации отностно каква поддръжка трябва
да имам в ядрото за DNAT и всичко ми е ок.
 Изчиствам абсолютно всички вериги в iptables - на ACCEPT и
пак не се forward-ват пакетите.


Отговор #8
От: Kolio Kolev (kolio_kolev__at__europe[ точка ]com) Дата: 03/19/2004
Това не го вярвам!
Я изпълни 

/sbin/iptables -F
/sbin/iptables -F -t nat
/sbin/iptables -F -t mangle

и след това правилото...



Кольо Колев


Отговор #9
От: abw Дата: 03/19/2004
 Опитай ДНАТ към реално ип. На някой сайт чието ип знаеш. Аз
 имах подобен проблем когато пренасочвах към вътрешно ип.
 Когато вместо вътрешно ип задавах реално ип(например на
 абв.бг) нямаше проблем. Нещата се оправиха като освен
 ДНАТ-а(към вътрешно ип) добавих и СНАТ на всичко от
вътрешното ип.


Отговор #10
От: dimodim Дата: 03/19/2004
 а пуснал ли си ipforward в ядрото, променливата
net.ipv4.ip_forward трябва да ти е = 1


Отговор #11
От: fallen Дата: 03/19/2004
ami da kazha neshto : 
 dobre e mashinata, koqto pravi PREROUTING da e syshta
 gateway na tazi KYM KOQTO se pravi DNAT-a, za mozhe packeta
 da izleze ot neq kym tozi kojto ustanowqwa vryzkata. Probvaj
 go, posle shte ti napravq ASCII kartinka na shema koqto
raboti pri men za routirane na VNC v localna mreza.
Pishi pak - shte go opravim :)


Отговор #12
От: ОМА (oma__at__abv__dot__bg) Дата: 03/20/2004
1) Изпълних:
/sbin/iptables -F
/sbin/iptables -F -t nat
/sbin/iptables -F -t mangle
Резултатът е пак същият.
 2) Опитах DNAT към реално ip (dir.bg) и пак същото става.
Пакетите не излизат навън.
 3) echo 1 > /proc/sys/net/ipv4/ip_forward го имам в .rc
скриптовете
 4) fallen ако правя DNAT към сървъра ми(той прави
 PREROUTING) просто няма да ми върши работа. Всъщност немога
 да разбера какво имаш предвид. Аз съм в локална мрежа с ip
 192.168.0.114. Иксма при заявка от някой друг от тази мрежа
 към мойта машина 192.168.0.114:80 да се пренасочва към един
 компютър от вътрешната ми мрежа: 192.168.1.2. Т.е. той да
играе ролята на web сървър(примерно).


Отговор #13
От: fallen Дата: 03/20/2004
192.168.1.2 да има за гейт 192.168.0.114

 Интернет/интранет/ >> 192.168.0.114:80 >> 192.168.1.2:80 >>
 обратно по връзката , като се мине през 192.168.0.114
>>Интернет /интранет/.

 Ако и така не стане пиши пак, при мен схемата е такава и
 работи без проблем, ако не успееш и този път ще ти напиша
подробно схемата и правилата - само пиши тук.


Отговор #14
От: Djimbo (kvv__at__atsoftconsult-bg__dot__com) Дата: 03/21/2004
OMA пробваи да сложиш интерфейса през който минаваш

 от всички което прочетох по постовете никаде не видях входящ
интерфейс.
 
 iptables -A PREROUTING -t nat -i eth0 -p tcp -d 192.168.0.y
--dport
80 -j DNAT --to 192.168.1.y:80

Независимо че FORWARD ти е ACCEPT окажи си
правилото задължително:

 iptables -A FORWARD -i eth0 -p tcp -d x.x.x.x.x --dport 80
-j ACCEPT

 Незнам дали ще ти помогна но при мен по този начин работят
няколко Forward-a 
Успех.
BRDS



Отговор #15
От: 1010 Дата: 03/21/2004
EDIN DA NAPISHE NESHTO



Отговор #16
От: OMA (oma__at__abv< dot >bg) Дата: 03/21/2004
 Никакъв ефект ефект и след това. Пакетите се match-ват от
 netfiler-a, но не не се изпращат към 192.168.1.y. Губят се
някъде в машината която прави DNAT-а (192.168.0.x).

Нищо няма да излезе от това. Нещо ми е бъгнато:(


Отговор #17
От: marihuan Дата: 03/21/2004
 $IPTABLES -t filter -A INPUT -p tcp -d 192.168.0.x --dport
80 -j ACCEPT
 $IPTABLES -t filter -A FORWARD -i eth0 -p tcp -d 192.168.1.y
--dport 80 -j ACCEPT
 $IPTABLES -t nat -A PREROUTING -p tcp -d 192.168.0.x/32
--dport 80 -j DNAT --to-destination 192.168.1.y:80
 $IPTABLES -t nat -A POSTROUTING -p tcp -s 192.168.1.y
--sport 80 -j ACCEPT



Отговор #18
От: steve Дата: 03/21/2004
 Znachi, ne iska da stane zashtoto e neobhodimo oshte edno
redche predi dnat-a.

 iptables -t nat -A POSTROUTING -s 192.168.0.y -o eth1 -j
MASQUERADE
 iptables -t nat -A PREROUTING -p tcp --dport 80 -s
192.168.0.y -j DNAT --to-destination 192.168.0.y:80

 o- eth0 e lan kartata kum koqto e svurzan adresa kum koito
shte preprashtash. Tova e i da pocherpish, ei!


Отговор #19
От: marihuan Дата: 03/22/2004
steve kaji kva e razlikata edin post ponagore?
:)
Pozdravi!!



Отговор #20
От: OMA (oma __@__ abv[ точка ]bg) Дата: 03/22/2004
#iptables -L -t nat -n
Chain PREROUTING (policy ACCEPT)
 target     prot opt source               destination        

 DNAT       tcp  --  0.0.0.0/0            192.168.0.114      
tcp dpt:80 to:192.168.1.2:80 

Chain POSTROUTING (policy ACCEPT)
 target     prot opt source               destination        

 MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0         
 
 ACCEPT     all  --  192.168.1.2          0.0.0.0/0          


Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

#iptables -L -n
Chain INPUT (policy DROP)
 target     prot opt source               destination        

 ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0          
state RELATED 
 ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0          
state ESTABLISHED 
 ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0          

 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0          
tcp dpt:80 
 ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0          

 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0          
tcp flags:0x16/0x02 

Chain FORWARD (policy ACCEPT)
 target     prot opt source               destination        


Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

 НЕ РАБОТИ! Tеоретично би трябвало. Не е проблема във
 правилата. Те така трябва да си бъдат. Нещо друго е. Във
 всяка от веригите съм пробвал какво ли не с -i eth0/1, -m
 tcp, -s x.x.x.x. и -d x.x.x.x. Oказа се, че правилата си
 работят защото пакетите към 192.168.0.114 се match-ват от
првилото:
 DNAT       tcp  --  0.0.0.0/0            192.168.0.114      
tcp dpt:80 to:192.168.1.2:80
 но вместо да отиват към 192.168.1.2:80 те се губят някъде в
 192.168.0.1. Това е резултата от tcpdump-а. Ako не работеха
 правилата заявка към 192.168.0.114 щеше да изплюва
 страницата на web сървъра на тази машина. Вместо това
 браузърът си цикли и стига timeout. Ako всичко е на АCCEPT и
останат само веригите с MASQUERADЕ-a и DNAT-а същото става.


Отговор #21
От: Djimbo (kvv__at__atsoftconsult-bg< dot >com) Дата: 03/22/2004
ok po spokoino a forward megdu dvete mreji pusnal li si?

Tova ne go fidqh nikade?

MASQUERADINGA ne se pravi taka

napravi slednoto

 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j
MASQUERADE
 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j
MASQUERADE
 iptables -t nat -A PREROUTING -p tcp -s 192.168.0.0./24 -d
192.168.0.114 --dport 80 -j REDIRECT --to 192.168.1.2:80

 iptables -A FORWARD -s 192.168.0.0/24 -d 192.168.1.0/24 -j
ACCEPT
 iptables -A FORWARD -s 192.168.1.0/24 -d 192.168.0.0/24 -j
ACCEPT
 iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 80 -j
ACCEPT



<< IE под линукс? (4 ) | kernel-2.6.4-1-686 i XF86 (3 ) >>

 
© 2011-... Асоциация "Линукс за българи"
© 2007-2010 Линукс за българи ЕООД
© 1999-2006 Slavej Karadjov
Ако искате да препечатате или цитирате информация от този сайт прочетете първо това
Външния вид е направен от MOMCHE
Code Version: 1.0.8 H (Revision: 23-09-2011)
 
Изпълнението отне: 0 wallclock secs ( 0.06 usr + 0.01 sys = 0.07 CPU)