===== motivace ===== * proc mi n2n posila data pres vpn50 a ne primo na hosta? proc nefunguje traverzovani? ===== FAQ ===== * kdyz poslu UDP paket nekam.. NAT otevre pro me port na externim rozhrani, jake pakety posle na muj pc? overuje jen zdrojovou adresu? nebo i zdrojovy port? odpovedi :) * podle typu natu :) prvni 3 typy lze v pohode protunelovat, pokud znam nat sport, ktery by mel byt pro klient IP + sport stejny * jaky je system pridelovani portu? muze treba klient otevrit v NAT jeden port, pres ktery by posilal na vice IP? treba port 80 vlastne komunikuje bezne s vice IP :) * v diskuzi se psalo: "Potreba premapovat porty (zmena sport na natu pri opakovanem udp pozadavku ze stejneho sport) je jen v pripade ze by dva NATovane pocitace chtely spojeni ze stejneho zdrojoveho portu na stejnou cilovou IP + stejny cilovy port." - ale nektere naty to meni i tak :) * ano jde to a u prvnich 3 typu natu se to i vlastne deje. prvni 3 typy pouziji stejny nat sport, pokud klient IP + sport je stejna ===== traverzovani ===== * jak to teda vlastne funguje? * tady je to hezky popsano [[http://www.root.cz/clanky/prelez-preskoc-a-podlez-nat/|link]], * ale predpoklada se, ze NAT pro pouzije stejny sport, jako zadal klient * pokud nat provadi premapovani klient sportu na jiny nat sport tak, * pokud urcity klient sport je vzdy mapovan na urcity nat port.. lze jej pomoci prostrednika s verejnou zjistit (navaze se na nej spojeni s urcitym sportem, ktery chceme zjistit] * v diskuzi se psalo: "Potreba premapovat porty (zmena sport na natu pri opakovanem udp pozadavku ze stejneho sport) je jen v pripade ze by dva NATovane pocitace chtely spojeni ze stejneho zdrojoveho portu na stejnou cilovou IP + stejny cilovy port." - ale nektere naty to meni i tak? :) * pokud urcity klient sport je pokazdy na jiny nat sport.. tak to nejde? :) * existuji 4 typy natu [[http://en.wikipedia.org/wiki/Network_address_translation#Types_of_NAT|link]] [[http://www.ietf.org/rfc/rfc3489.txt|rfc sekce 5]] * full cone (1:1) - jak se otevre externi port, forwarduji se pakety ze vsech IP a portu zaslanych na otevreny port klientovi * (Address) restricted cone NAT - forwarduje jen z puvodni cilove IP * Port-restricted cone NA - navic musi byt i stejny port * symetric nat - Typ NATu, kde jsou všechny dotazy ze stejné lokální IP adresy a portu na danou cílovou IP adresu a port mapovány na stejnou vnější IP adresu a port. Pokud stejný počítač pošle paket se stejnou zdrojovou IP adresou a portem, ale na jinou destinaci, je použito jiné mapování. Pouze ten počítač ve vnější síti, který obdrží UDP paket, může poslat UDP paket zpět počítači v lokální síti. * prvni tri typy nejspis pouzivaji stejny nat sport pri stejnem klient IP a sport na libovolnou destinaci, posledni otevira pro ruzne destinace ruzne porty.. kdyz je nat sport obsazen, musi se pouzit jiny... * jaky nat podporuje iptables? [[http://www.compatdb.org/forums/topic/62698-iptables-for-different-types-of-nat/|link]] /-"Full Cone NAT", with the following rules:/ iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.2.170 iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-destination 10.0.0.1 /-"Port Restricted Cone NAT", with just a single rule:/ iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.2.170 * prakticka zkouska djbuldog@Pharaon:~$ echo "aa" | nc -u veneto.liberouter.org 1235 Pharaon:/home/djbuldog# tcpdump -i eth0 -n host veneto.liberouter.org and udp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 22:57:42.175668 IP 10.10.11.2.59223 > 147.251.21.178.1235: UDP, length 3 root@HomeRouterII:~# tcpdump -i eth0 -n host veneto.liberouter.org and udp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 09:22:39.679431 IP 192.168.0.254.59223 > 147.251.21.178.1235: UDP, length 3 veneto(CentOS5) ~ # tcpdump -i eth0 -n host djbuldog.dyndns.org and udp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 22:57:41.989465 IP 62.245.126.208.61482 > 147.251.21.178.1235: UDP, length 3 root@HomeRouterII:~# cat /proc/net/ip_conntrack | grep 147.251.21.178 udp 17 55 src=10.10.11.2 dst=147.251.21.178 sport=59223 dport=1235 packets=1 bytes=31 [UNREPLIED] src=147.251.21.178 dst=192.168.0.254 sport=1235 dport=59223 packets=0 bytes=0 mark=0 use=2 * jde videt, ze muj router pouziva stejny nat port jako zadal klient, ale ten kabel modem jej premapovava jinam. Premapovava jej pokazde na stejny jinam? - '''otestovat''' * "Spoleha se na to ze NAT zdrojovy port nezmeni. Vetsinou to plati, 100% to ovsem neni. Linux driv (2.2.x?) vsechny porty premapovaval nekam nad 60000, ted uz to nedela" --- takze nase brana je na linuxu? * dalsi test - jina destinace se stejnym klient ip + sport pouziva stejny nat sport .. (ale dport+1 = nat sport+1) djbuldog@Pharaon:~$ sudo mz -B pinot.liberouter.org -t udp dp=12345 -p 100 djbuldog@Pharaon:~$ sudo mz -B veneto.liberouter.org -t udp dp=12345 -p 100 Pharaon:/home/djbuldog# tcpdump -i eth0 -n udp and port 12345 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 01:25:42.965221 IP 10.10.11.2.0 > 147.251.21.190.12345: UDP, length 100 01:25:47.632213 IP 10.10.11.2.0 > 147.251.21.178.12345: UDP, length 100 root@HomeRouterII:~# tcpdump -i eth0 -n udp and port 12345 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 11:50:40.458579 IP 192.168.0.254.0 > 147.251.21.190.12345: UDP, length 100 11:50:45.125564 IP 192.168.0.254.0 > 147.251.21.178.12345: UDP, length 100 veneto(CentOS5) ~ # tcpdump -i eth0 -n host djbuldog.dyndns.org and udp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 01:25:47.273630 IP 62.245.126.208.13369 > 147.251.21.178.12345: UDP, length 100 pinot(CentOS5) ~ # tcpdump -i eth0 -n host djbuldog.dyndns.org and udp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 01:25:42.638418 IP 62.245.126.208.13369 > 147.251.21.190.12345: UDP, length 100 ===== aplikace ===== * n2n * pwnat [[http://samy.pl/pwnat/|link]] - client server model behind the nat