Титла: iptables DNAT -> port_forwarding Публикувано от: jmut в Jan 26, 2005, 15:48 Гледах във форума разни теми по въпроса. Нещата са близки но не разбирам какво грешно правя че да не става. Нещо елементарно се опитвам да направя.
Когато някой се опита да се конектне към моята кутия http://ip.addres:8080 да го пренасоча към дир.бг примерно. iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to-destination 194.145.63.12 Има си един интерфейс, ползвам Slack 10 2.4.26 Пуснал съм ip_forward. Зареден ми е модула iptable_nat (autoclean) - btw така и не мога да разбера кое ми зарежда модула, щото не е компилиран въртре а си е отделен модул; има ли лесен начин да разбера кое го зарежда (от къде). На въпросната настройка като пробва някой да се конектне му дава 110->Connection timeout, а не 111->Connection refused, тоест се опитва да прави нещо ![]() Нямам пуснато apaче или нещо такова. Титла: iptables DNAT -> port_forwarding Публикувано от: в Jan 26, 2005, 16:03 Това няма ли да пренасочи порт 8080 на 194.145.63.12 ?
Виж дали с --to-destination 194.145.63.12:80 дали няма да стане, ако не ти е целта точно това Титла: iptables DNAT -> port_forwarding Публикувано от: jmut в Jan 26, 2005, 16:06 iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to-destination 194.145.63.12:80
и така съм пробвал и не става. Титла: iptables DNAT -> port_forwarding Публикувано от: в Jan 26, 2005, 16:41 A пробвал ли си:
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to-destination 194.145.63.12:80 iptables -t nat -A PREROUTING -p udp -i eth0 --dport 80 -j DNAT --to-destination 194.145.63.12:80 Побвах и така стана при мен Титла: iptables DNAT -> port_forwarding Публикувано от: в Jan 26, 2005, 16:55
не става. я ми кажи имаш ли компилирано или като модул. NAT of local connections - намера се в menuconfig->Networking options->IP:Netfilter Configuration Титла: iptables DNAT -> port_forwarding Публикувано от: в Jan 26, 2005, 17:09 Chain PREROUTING (policy ACCEPT 6124 packets, 985K bytes)
pkts bytes target prot opt in out source destination 3 288 DNAT tcp -- eth0 any anywhere anywhere tcp dpt:http to:194.145.63.12:80 0 0 DNAT udp -- eth0 any anywhere anywhere udp dpt:http to:194.145.63.12:80 Chain POSTROUTING (policy ACCEPT 1195 packets, 72423 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 3 пакетчета се трупат на всеки опит. Нямам firewall сложен така че не може той да е проблема. Титла: iptables DNAT -> port_forwarding Публикувано от: VladSun в Jan 26, 2005, 17:36 Така като чета, почвам да се съмнявам, че твоята машина се опитва да рутира ИП-то на дир.бг зад нея (т.е. като мине през FORWARD), което естествено няма да стане.
Държа да отбележа, че изобщо не съм сигурен в това, което казвам - просто предположение. Пробвай с ИП, което съществува зад твоята машина - ако стане значи е това. Титла: iptables DNAT -> port_forwarding Публикувано от: в Jan 26, 2005, 17:53
честно казано не разбрах какво предлагаш ![]() и какво смяташ че се опитва да прави компа ми. Аз хванах пакетчетата и видях че моята машина връща ICMP TTL exceeded in transit в отговор на SYN пакета на човека който се опитва да отвори връзката. В ICMP хеадъра на пакета source: този който иска да се свърже destination: ip.na.dir.bg Титла: iptables DNAT -> port_forwarding Публикувано от: VladSun в Jan 26, 2005, 18:18 В chain PREROUTING сменяш dest IP-то, след PREROUTING твоята машина трябва да вземе решение - дали знае какво да прави с пакета (и да го прати на INPUT) или не знае (ти не си дир.бг, нали
![]() Титла: iptables DNAT -> port_forwarding Публикувано от: RedIce в Jan 26, 2005, 18:51 пробвай така
забележи липсва --to-destination което беше в по предниа пример а е само --to при мен бачка перфектно това ![]() успех Титла: iptables DNAT -> port_forwarding Публикувано от: the_real_maniac в Jan 26, 2005, 19:13 еквивалентни са
Титла: iptables DNAT -> port_forwarding Публикувано от: в Jan 26, 2005, 19:38
Пич, защо не прочетеш малко повече ? Грешно интерпретираш логиката ! iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to-destination 194.145.63.12:80 трябва да е : iptables -t nat -A PREROUTING -p tcp -i eth0 -d ip.addresa.ti --dport 8080 -j DNAT --to-destination 194.145.63.12:80 Титла: iptables DNAT -> port_forwarding Публикувано от: RedIce в Jan 26, 2005, 19:48
за съжеление не са, защото наремето като го нагласях това при мен, със --to-destinaton даваше грешка ![]() Титла: iptables DNAT -> port_forwarding Публикувано от: VladSun в Jan 26, 2005, 21:42
за съжеление не са, защото наремето като го нагласях това при мен, със --to-destinaton даваше грешка ![]() с --to-destination нищо не става както трябва, трябвa --to. Нищо не казваш за резултата от tcpdump и проба с съшествуващо ИП зад твоята машина ..... Титла: iptables DNAT -> port_forwarding Публикувано от: RedIce в Jan 26, 2005, 22:05 ами нямам проблемим аз си я ползвам тази комада
![]() и то за пренасочване на ssh, от rotera към linux в локалната мрежа, и си бачка перфектно /като порт 22 на ротера си е за ssh на сами ротер, и пренасочвам от по горен порт/ аз съм на slackware тесвал съм го и на gento но това поринцип не би трябвало да има значение ![]() ЕДИТ: аа пропуснах много важна подробност: въпросната комада работи само от друго пс, ако се пробваш локално няма да стане, освен ако на мястото на eth0 не сложиш lo /не съм го тесвал но тееоритически е така/ защото това пренасочва заявките които ти идват по дадената ланка, а не локалните ![]() Титла: iptables DNAT -> port_forwarding Публикувано от: в Jan 26, 2005, 22:46
Извинявам се на всички за късния отговор. Да разбирам ли че трябва да сложа и специфично FORWARD chain. Щото наистина не знам как се ориентира на къде да ходи след това ![]() Колкото до tcpdump вече написах какво става -> ICMP TTL exceeded. Това го видях с ethereal което си е същото като tcpdump. При всяка завка има 3 пакета в PREROUTING hooka. Това са 3та опита за SYN, иначе моята машина връщa ICMP-то. Титла: iptables DNAT -> port_forwarding Публикувано от: в Jan 26, 2005, 22:48
не става и с --to Имаше и предложение за -d ип.адреса.ми iptables -t nat -A PREROUTING -p tcp -i eth0 -d ип.адреса.ми --dport 80 -j DNAT --to 194.145.63.12:80 Доколкото си спомням едно от първите които пробвах (сега пак го пробвах) - и то не става. Съответно всякакви компинации с него, tcp+udp, --to, --to-destion и т.н. Титла: iptables DNAT -> port_forwarding Публикувано от: RedIce в Jan 26, 2005, 23:04 а що не го тесваш от вън
![]() погледна ли малката забележка която ти написах ? ето какво става при мен:
така от порт 7766 да пренасочва към порт 22 на ssh
така до тук ОК нормално е това да го даде защото съм на локалното ПС и няма да стане,ОБАЧЕ!!!:
отивам на саседното PC
всичко работи! ако така не стане при теб, може и да нямаш съпорта от ядрото, и да иска да се прекомпилира... незнам какво повече да кажа Титла: iptables DNAT -> port_forwarding Публикувано от: в Jan 27, 2005, 10:47 Проблема ти е, че не си описал FORWARD веригата. С PREROUTING ок, ама прочети малко за пътя на пакета, от къде минава, защо минава и т.н. Повече инфо в Iptables Tutorial.
Титла: iptables DNAT -> port_forwarding Публикувано от: в Jan 27, 2005, 18:27
мдаа. Пробвах и с някакви forwardi обаче не става (през FORWARD веригата ни един пакет не мина). Четох документацията уж разбирам от къде минава пакета, но нищо не се получава. Някой майстор все пак ще подскаже ли как може да стане. Имам един интерфейс, искам от инернет.ип да се минава през моя комп за друго дир.бг(например). Аз като се замисля трябва и SNAT да се ползва щото иначе dir.bg ще се опита да прати пакета директно на интернет.ип(което инициира връзката) без да мине обратно през мен. Титла: iptables DNAT -> port_forwarding Публикувано от: VladSun в Jan 27, 2005, 21:27 http://users.gurulink.com/drk/transproxy/TransparentProxy.html
Виж т. 6, ако смяташ, че проблемът е от липсата на SNAT Титла: iptables DNAT -> port_forwarding Публикувано от: Филип Бонев в Jan 27, 2005, 22:27 Нещо се обърках, извинивам се
Титла: iptables DNAT -> port_forwarding Публикувано от: в Jan 28, 2005, 10:53 Винаги моя комп връща ICMP TTL exceeded на човека който се опитва да прави конекция.
Не мога да накарм един пакет да мине през FORWARD веригата. Възможно ли е моя доставчик да сменя TTL-a на всички пакети на 1 и затова да става този проблем. То явно така става де. Щото човека дето иска конект е на 7-8 hopa. Или по default рутерите сменят на TTL 1 като достигнат dst.address. И ще помогне ли patch-o-matic да сменя TTL-a. Титла: iptables DNAT -> port_forwarding Публикувано от: VladSun в Jan 28, 2005, 12:21
1) Еми виж, де (ehteral, tcpdump) ![]() 2) Ако е така може и да помогне (или поне да направи от невъзможното възможно) Титла: iptables DNAT -> port_forwarding Публикувано от: в Jan 28, 2005, 12:56 мдаа
пакета който идва от вън към мен има TTL 1 Ще трябва да правя magic ![]() Ако някой иска да каже tips and tricks за инсталацията на patch-o-matic, които са извън реадмето да каже. Иначе ще пробвам както е по инструкции. Само с runme няма да стане май като чета readmeto. Титла: iptables DNAT -> port_forwarding Публикувано от: laskov в Jan 28, 2005, 14:16 Ако правилно съм разбрал ситуацията и ако имаш работещ http сървър на компа дето трябва да препраща и ако можеш да пуснеш виртуален сървър на порт 8080 и ако в index.html напишеш
може резултата да ти хареса ![]() Титла: iptables DNAT -> port_forwarding Публикувано от: в Jan 28, 2005, 18:22
ами може и този метод да върши работа - ще го пробвам със сигурност да вида как работи. имам сървър. virtualen не знам как се прави но май имаше примерен в httpd.con. Все пак ми се иска да се направи културно, рутерската. Не виждам нищо лошо, пък и не трябва да е трудно. Направих TTL mangle и пакетите тръгнаха по FORWARD и POSTROUTING веригите. Обаче все още нещо не става. Пакета отива до dir.bg и на връжане като дава SYN/ACK аз не го пращам към повикващия. Още малко трябва да пипна и би трябвало да стане. Титла: iptables DNAT -> port_forwarding Публикувано от: в Jan 29, 2005, 18:49 Нещо много елементарно пробвам - да пренасоча ping към моята машина към dir.bg.
Дал съм какви правила използвам. По галямата част са стандартните правила от netfilter който са за логване на всяка верига (с цел да се види от къде минава пакета). След тоава съм посочил реалния лог файл. my.ip.address - е моят аддресс (машината която трябва да рутира) client.ip.address - машината която прави ping-а към мен. *****************това са ми правилата************* # Generated by iptables-save v1.2.11 on Sat Jan 29 00 ![]() *mangle :PREROUTING ACCEPT [8215:876562] :INPUT ACCEPT [8043:857850] :FORWARD ACCEPT [4:240] :OUTPUT ACCEPT [471:30191] :POSTROUTING ACCEPT [475:30431] -A PREROUTING -p icmp -m icmp --icmp-type 8 -j LOG --log-prefix "mangle PREROUTING:" -A PREROUTING -p icmp -m icmp --icmp-type 0 -j LOG --log-prefix "mangle PREROUTING:" -A PREROUTING -j TTL --ttl-set 64 -A INPUT -p icmp -m icmp --icmp-type 0 -j LOG --log-prefix "mangle INPUT:" -A INPUT -p icmp -m icmp --icmp-type 8 -j LOG --log-prefix "mangle INPUT:" -A FORWARD -p icmp -m icmp --icmp-type 0 -j LOG --log-prefix "mangle FORWARD:" -A FORWARD -p icmp -m icmp --icmp-type 8 -j LOG --log-prefix "mangle FORWARD:" -A OUTPUT -p icmp -m icmp --icmp-type 8 -j LOG --log-prefix "mangle OUTPUT:" -A OUTPUT -p icmp -m icmp --icmp-type 0 -j LOG --log-prefix "mangle OUTPUT:" -A POSTROUTING -p icmp -m icmp --icmp-type 0 -j LOG --log-prefix "mangle POSTROUTING:" -A POSTROUTING -p icmp -m icmp --icmp-type 8 -j LOG --log-prefix "mangle POSTROUTING:" COMMIT # Completed on Sat Jan 29 00 ![]() # Generated by iptables-save v1.2.11 on Sat Jan 29 00 ![]() *nat :PREROUTING ACCEPT [1476:229387] :POSTROUTING ACCEPT [76:2921] :OUTPUT ACCEPT [76:2921] -A PREROUTING -p icmp -m icmp --icmp-type 8 -j LOG --log-prefix "nat PREROUTING:" -A PREROUTING -p icmp -m icmp --icmp-type 0 -j LOG --log-prefix "nat PREROUTING:" -A PREROUTING -d my.ip.address -p icmp -j DNAT --to-destination 194.145.63.12 -A POSTROUTING -p icmp -m icmp --icmp-type 8 -j LOG --log-prefix "nat POSTROUTING:" -A POSTROUTING -p icmp -m icmp --icmp-type 0 -j LOG --log-prefix "nat POSTROUTING:" -A POSTROUTING -p icmp -j SNAT --to-source my.ip.address -A OUTPUT -p icmp -m icmp --icmp-type 8 -j LOG --log-prefix "nat OUTPUT:" -A OUTPUT -p icmp -m icmp --icmp-type 0 -j LOG --log-prefix "nat OUTPUT:" COMMIT # Completed on Sat Jan 29 00 ![]() # Generated by iptables-save v1.2.11 on Sat Jan 29 00 ![]() *filter :INPUT ACCEPT [8054:859082] :FORWARD ACCEPT [2:120] :OUTPUT ACCEPT [475:30450] -A INPUT -p icmp -m icmp --icmp-type 8 -j LOG --log-prefix "filter INPUT:" -A INPUT -p icmp -m icmp --icmp-type 0 -j LOG --log-prefix "filter INPUT:" -A FORWARD -p icmp -m icmp --icmp-type 8 -j LOG --log-prefix "filter FORWARD:" -A FORWARD -p icmp -m icmp --icmp-type 0 -j LOG --log-prefix "filter FORWARD:" -A FORWARD -d 194.145.63.12 -p icmp -j ACCEPT -A OUTPUT -p icmp -m icmp --icmp-type 8 -j LOG --log-prefix "filter OUTPUT:" -A OUTPUT -p icmp -m icmp --icmp-type 0 -j LOG --log-prefix "filter OUTPUT:" COMMIT # Completed on Sat Jan 29 00 ![]() *************************************************** ***Лог файла с пътя на въпросния пакет(ping request/reply)****** mangle PREROUTING:IN=eth0 OUT= MAC=00:c0:26:79 ![]() ![]() ![]() ![]() ![]() ![]() nat PREROUTING:IN=eth0 OUT= MAC=00:c0:26:79 ![]() ![]() ![]() ![]() ![]() ![]() mangle FORWARD:IN=eth0 OUT=eth0 SRC=client.ip.address DST=194.145.63.12 LEN=60 TOS=0x00 PREC=0x80 TTL=63 ID=65063 PROTO=ICMP TYPE=8 CODE=0 ID=512 SEQ=16640 filter FORWARD:IN=eth0 OUT=eth0 SRC=client.ip.address DST=194.145.63.12 LEN=60 TOS=0x00 PREC=0x80 TTL=63 ID=65063 PROTO=ICMP TYPE=8 CODE=0 ID=512 SEQ=16640 mangle POSTROUTING:IN= OUT=eth0 SRC=client.ip.address DST=194.145.63.12 LEN=60 TOS=0x00 PREC=0x80 TTL=63 ID=65063 PROTO=ICMP TYPE=8 CODE=0 ID=512 SEQ=16640 nat POSTROUTING:IN= OUT=eth0 SRC=client.ip.address DST=194.145.63.12 LEN=60 TOS=0x00 PREC=0x80 TTL=63 ID=65063 PROTO=ICMP TYPE=8 CODE=0 ID=512 SEQ=16640 mangle PREROUTING:IN=eth0 OUT= MAC=00:c0:26:79 ![]() ![]() ![]() ![]() ![]() ![]() mangle FORWARD:IN=eth0 OUT=eth0 SRC=194.145.63.12 DST=client.ip.address LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=47844 PROTO=ICMP TYPE=0 CODE=0 ID=512 SEQ=16640 filter FORWARD:IN=eth0 OUT=eth0 SRC=194.145.63.12 DST=client.ip.address LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=47844 PROTO=ICMP TYPE=0 CODE=0 ID=512 SEQ=16640 mangle POSTROUTING:IN= OUT=eth0 SRC=194.145.63.12 DST=client.ip.address LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=47844 PROTO=ICMP TYPE=0 CODE=0 ID=512 SEQ=16640 *************************************************** Ethereal ми показва че пакета върви така request ping: source.addr dst.addr client -> men men -> dir.bg reply ping: dir.bg -> men dir.bg -> client Кажете ми сега от какъв зор му дава request timed out на човека. Къде може да е проблема? Титла: iptables DNAT -> port_forwarding Публикувано от: в Jan 29, 2005, 19:01 нещо стана. току що пробвах с един друг човек. реално ip, без firewall и пинга си стана.
разликата е че последната пратка не е дир.бг-> клиент ами аз-> клиент и всичко си става ток. Може би ако клиент е с нереално ип нещата се презакват - ама не би трябвало, затова трябва да се грижи GW при клиента ![]() Титла: iptables DNAT -> port_forwarding Публикувано от: в Feb 22, 2005, 15:32
KERNEL_DIR=/usr/src/imeto na directoriata na kernela ./runme base tova go izpulniavash v dira na razarhivirania pach-o-matic i ne si durpai patch-o-matic chieto ime sudurga "ng" ako si s iadro po nisko ot 2.6 |