Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: OMA в Mar 19, 2004, 16:42



Титла: Port forwarding с DNAT (как?)
Публикувано от: OMA в Mar 19, 2004, 16:42
Здравейте.
 Това което искам да направя е много просто. Искам при
 обръщение към 80-ти порт на сървърната ми машина 192.168.0.x
 заявката да се пренасочва към компютър 192.168.1.y от
 вътрешната ми мрежа. Знам, че това става с DNAT на iptables,
но нещо при мен не става връзката.
Това което правя е:
 iptables -A PREROUTING -t nat -p tcp -d 192.168.0.x --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 е много по-елегантно!

Тъй като поставих този въпрос в "Въпроси-Отговори" и получих няколко некомпетентни, дразнещи предложения и мнения, моля пишете само ако знаете наистина нещо по въпроса или сте правили успешен port forwarding някога.


Титла: Port forwarding с DNAT (как?)
Публикувано от: kolio_kolev в Mar 19, 2004, 17:07
Ти кого наричаш некомпетентен !?
Виж пак във "Въпроси-Отговори" !


Титла: Port forwarding с DNAT (как?)
Публикувано от: OMA в Mar 19, 2004, 17:53
Добре де.... малко силно се изказах, но все пак ще ти направя едно сравнение с copy-paste на това което ми написа:

аз написах:
Това което правя е:
iptables -A PREROUTING -t nat -p tcp -d 192.168.0.y --dport
80 -j DNAT --to 192.168.1.y:80

ти написа:
Пробвай:
/sbin/iptables -t nat -A PREROUTING -p tcp -d 192.168.0.y
--dport   80 -j DNAT --to 192.168.1.y:80


Каква е разликата м/у двете? :)


Титла: Port forwarding с DNAT (как?)
Публикувано от: the_real_maniac в Mar 19, 2004, 18:05
Сигурен ли си в сървъра , към койъо пренасочваш ! , че  е конф. правилно .

добави едно -m tcp преди -p tcp и пробвай

разлиакта м/у неговия и твоя пример е , че неговия пример е с / чрез абсолютен път ;)


Титла: Port forwarding с DNAT (как?)
Публикувано от: kolio_kolev в Mar 19, 2004, 18:05
Ти не разбра ли, че аз потвърдих това, което си написал...
И че реално това правило работи!
Просто проблема не ти е в праволото за port forward, а някъде другаде...


Кольо Колев


Титла: Port forwarding с DNAT (как?)
Публикувано от: в Mar 19, 2004, 18:46
Прави ми впечатлени следното:
Машината (рутера доколкото разбирам) е от мрежа 192.168.0.0 а пренасочваме към 192.168.1.0.
Та ако мрежовата маска е 24 бита то има ли указан път (рутинг) към 192.168.1.0?
Покажи също така веригата FORWARD на firewalla.
И последно - в man iptables за DNAT target е указано: --to-destination. Не съм сигурен дали само --to се възприема коректно.

Кажи докъде си я докарал. Ще се опитаме да помагаме.


Титла: Port forwarding с DNAT (как?)
Публикувано от: OMA в Mar 19, 2004, 23:39
Към the_real_maniac:
Сигурен съм в сървъра защото като се обърна към него с броузър(192.168.1.y) ми изплюва страницата.
Що се отнася до -m tcp няма нужда защото правилото за съвпадение на пакетите работи. Защото след като направя веригата вече не мога да се обърна към порт 80 на съвъра, т.е. пакетите наистина се пренасочват, но накъде незнам.
tcpdump ми показва, че не напускат изходните интерфейси.
tcpdump -qnn -i eth0 | grep 192.168.0.x
tcpdump -qnn -i eth1 | grep 192.168.1.y
не дават никакъв резултат.

Та това което ми се струва, е че проблема не е в iptables веригата а нещто със самия DNAT или нещо друго. Просто пакетите отиват някъде ...незнам къде.

Към Koko:
не е проблема в --to понеже веригата се изпълнява. --to = --to-destination
Да има routing към 192.168.1.0. А веригата FORWARD е АCCEPT за всичко.

Към kolio_kolev:
Да май наистина проблема ми е някъде другаде ама въпроса е къде... Четох какво ли не и навсякъде пише, че с тази верига се постига port forwarding

Благодаря ви, че се отзовахте на моя проблем:) ... ама като гледам май нищо няма да излезне:((


Титла: Port forwarding с DNAT (как?)
Публикувано от: в Mar 20, 2004, 00:39
Разрешен ли е forward в ядрото
echo "1" > /proc/sys/net/ipv4/ip_forward ?


Титла: Port forwarding с DNAT (как?)
Публикувано от: OMA в Mar 20, 2004, 13:47
Да. Това ми е в .rc скриптовете
echo 1 > /proc/sys/net/ipv4/ip_forward


Титла: Port forwarding с DNAT (как?)
Публикувано от: в Apr 13, 2004, 18:24
Значи аз май имам като твоя проблем ;)

192.168.1.1 - router
192.168.1.90 - http(d) server / apache ;)

iptables -t nat -A PREROUTING -p tcp -d 192.168.1.1 --dport 80 -j DNAT --to 192.168.1.90:80

Дотук на всички им е ясно, нали ...

Такаaa ... Kлиент различен от 192.168.1.x няма проблем с връзка към моето апаче :) , т.е http://my.real.ip.ok се отваря от всичко живо , но когато вътр. клиент (той е само един де , но ;) ) се опита да отвори въпросният сайт/сървър/страница чрез http://my.real.ip.ok броузъра цикли , както казаха по-горе и timeout :(

Дефакто наистина по правилно е с redirect , защото това е пренасочване, но нали идеята е да е скрито зад НАТ цялата тази история :) hmm ще трябва да се чете още iptables howto ;)

Но и с redirect не става :( / не работи -> не се отваря страницата по реланото ип от вътрешен клиент , дори и от самия рутер ?!. :0

Честно казано и идея си няма защо става така ...

Със ssh проблем никакъв .:

iptables -t nat -A PREROUTING -m tcp -p tcp -d 192.168.1.1 --dport 22 -j DNAT --to 192.168.1.90:22 - работи си ?!.

Да не би проблема да е в самия httpd сървър / apache-то ?


Титла: Port forwarding с DNAT (как?)
Публикувано от: в Sep 02, 2004, 21:24
probvai v httpd.conf

<VirtualHost *>
ServerName 192.168.0.y
Redirect / http://192.168.1.y/
</VirtualHost>


Титла: Port forwarding с DNAT (как?)
Публикувано от: Ivan_storm в Sep 03, 2004, 10:28
Проблема не е в DNAT според мен Сложи едно правило
IPTABLES -A  INPUT -m state --state NEW -j ACCEPT
IPTABLES -A  input -m state --state ESTABLISHED,RELATED -j ACCEPT
ако го нямаш , на вътрешната ти машина  с апа4а .
Ако не е от това си огледай дригите настроики на Iptables , свързани с входящите вериги ,защото проблемите винаги започват от там.


Титла: Port forwarding с DNAT (как?)
Публикувано от: Филип Бонев в Sep 03, 2004, 11:01
Здравейте,

Това дето ще го постна не знам дали ще ви помогне(и не знам дали е правилно), но аз така съм си настройл vnc,ssh,warcraft и бачкат. При условие, че това ми сървъра в къщи и ги прави от интернет към домашните компове,но и от домашните си работата тея работи.

Цитат
$IPTABLES -t nat -A PREROUTING -p tcp -i $EXTIF -d $EXTIP --dport 5800 -j DNAT --to-destination 192.168.0.3:5800
$IPTABLES -A FORWARD -p tcp -i $EXTIF -o $INTIF -d 192.168.0.3 --dport 5800 -j ACCEPT


Тук 192.168.0.3:5800 е машина с vnc.

Ако не се лъжа май на това му се казваше DMZ и мисля, че описано в howto-тата и документацията на netfilter


Титла: Port forwarding с DNAT (как?)
Публикувано от: ntenev в Sep 03, 2004, 11:10
the_real_maniac

При теб случката е друга. Клиента търси 192.168.1.1 и очаква отговор от него, но го получава от 192.168.1.90. Тъй като той не е питал 192.168.1.90 нищо (или поне не директно) отговорите се игнорират. Предполагам че нещата работят за мрежи различни от 192.168.1.х защото имаш и някакво маскиране (или SNAT).

OMA
При теб предполагам проблема е същия.
Един съвет:

вместо
tcpdump -qnn -i eth0 | grep 192.168.0.x

използвай
tcpdump -qnn -i eth0 host 192.168.0.x
tcpdump -qnn -i eth0 port xx

grep-ването на целия изход от tcpdump може да се окаже тежичка задача за по-малки машини. това което съм забелязал като резултата е че редовете излизат по 15 през голям интервал от време

Поздрави !


Титла: Port forwarding с DNAT (как?)
Публикувано от: melwin в Sep 03, 2004, 11:15
Цитат на: OMA,Март 19 2004,17:42
ето така:
iptables -t nat -A PREROUTING -p tcp -d 192.168.0.x --dport 80 -j DNAT --to 192.168.1.y
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.y --dport 80 -j SNAT --to 192.168.0.x

едит: ntenev доколкото успях да разбера .. в постановката има рутер!


Титла: Port forwarding с DNAT (как?)
Публикувано от: ntenev в Sep 03, 2004, 11:25
melwin

Това ще работи ако 2-те машини комуникират през трета (router). Но ако 3-те машини са на един и същи switch и са в един и същи мрежов сегмент тогава ще се получи именно тази разлика между "попитан" адрес и "отговарящ"

Поздрави !

edit: melwin - прав си, грешката е моя