Portál AbcLinuxu, 8. listopadu 2025 17:46
Řešení dotazu:
A) na to, co jsi zapsal za IP adresu, se Ti asi nikdo nebude snažit odpovědět ... B) najdi si, jak chodí pakety kernelem a dojde Ti, co máš udělat.
), ale odpovídá na počítač 192.168.1.60 pouze v lokální síti. Jeslti se jako laik nemýlím, tak musíte na routeru přidat na rozhranní, na které je lokální síť připojena další adresu - tedy 192.168.1.60 a potom si v iptables nastavit to, že co příjde na 192.168.1.60 se má DNATovat na 158.235.555.42
Ale to samozřejmě není všechno. To by stačilo jenom na to, aby vnitřní PC vidělo ven. Ale nikdo by se na něj z venku nedostal. Musí se tedy udělat i ten samý postup i pro druhou stranu . Pak už si jen stačí říct, co všechno chcete na ten PC směrovat a vesele si to nastavit
Jestli to dobře chápu, je to NAT 1:1. Teď jsem to nasimuloval ve VMwaru, tak koukněte do přiloženého kódu
... jestli to je bezpečnostně správně a jeslti to je košér řešení, to nevim, ale kdybych potřeboval to co vy, řešil bych to takhle
... Jenom, na co potřebujete, aby se ten venkovní PC tvářil jako vnitřní PC ?
#///////////////////////////////////////////////////////////////////////////////// # ODCHOZI PAKETY / #///////////////////////////////////////////////////////////////////////////////// # Vše co má jít z 192.168.1.2 pošli na 158.235.555.42 iptables -t nat -A PREROUTING -i eth1 -s 192.168.1.2 -d 192.168.1.60 -j DNAT --to 158.235.555.42 # Vše co má jít na 158.235.555.42, tak ať má source IP veřejnou adresu routeru iptables -t nat -A POSTROUTING -o eth0 -d 158.235.555.42 -s 192.168.1.2 -j SNAT --to "VEŘEJNÁ IP ROUTERU" #///////////////////////////////////////////////////////////////////////////////// # PRICHOZI PAKETY / #///////////////////////////////////////////////////////////////////////////////// # Vše co má jít na lokální PC z veřejné IP adresy, pošli na IP adresu lokálního PC iptables -t nat -A PREROUTING -i eth0 -d "VEŘEJNÁ IP ROUTERU" -s 158.222.235.42 -j DNAT --to 192.168.1.2 # Vše co má jít na lokální PC, ať má zdrojovou adresu 192.168.1.60 iptables -t nat -A POSTROUTING -o eth1 -d 192.168.1.2 -s 158.222.235.42 -j SNAT --to 192.168.1.60
Je to defacto NAT 1:1, že cokoliv ti příjde na 1 veřejnou IP se pošle na nějakou interní IP a opačně. Samozřejmě je možnost si tam ještě přidat volbu jen pro specifický port, jestli potřebuješ forwardovat jen nějakou specifickou službu na vnitří PC a ostatní služby jako HTTP šlo třeba všem dalším klientům v lokální síti.
Aspoň se laik jako já dozví něco novýho
root@xxxxx# tcpdump host 192.168.1.60 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on br0, link-type EN10MB (Ethernet), capture size 96 bytes 00:22:25.602532 IP 192.168.1.60.52600 > 192.168.1.22.22: S 187316279:187316279(0) win 5840 1452,sackOK,timestamp 85961749 0,nop,wscale 6> 00:22:25.605406 arp who-has 192.168.1.60 tell 192.168.1.22 00:22:26.605398 arp who-has 192.168.1.60 tell 192.168.1.22 00:22:27.605324 arp who-has 192.168.1.60 tell 192.168.1.22a donekonecna sa opakuju tieto 4 riadky, dokonca pri nahadzovani pravidiel som posunul pravidlo ako prioritne cez -I prepinac takze by ho malo matchnut ako prve. Niekde este musim mat chybu ale nic ma nenapada....
192.168.1.60, cílový počítač pak samozřejmě chce odpovědět této IP adrese (protože požadavek dostal jakoby od ní), takže ji hledá v síti. A pravděpodobně tam žádnou takovou IP adresu nenajde (a i kdyby ji našel, odpoví tomu počítači, jenže ten žádnou komunikaci nezahájil, takže ty pakety zahodí, a výsledek bude stejný).
Bylo by lepší, kdybyste napsal, čeho opravdu chcete docílit – ten váš původní požadavek totiž nedává žádný smysl.
Tunel je dělán mezi dvěma body a co přijde z rozhraní mimo tunel je zpravidla zahozeno = jako by to nepřišlo. Proto potřebujete routovat provoz do tunelu - nebo třeba natovat za jeden ověřený konec/stroj v LAN.
smtp:~# tcpdump -i eth1 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes 13:33:36.638877 IP 192.168.1.4 > 192.168.1.60: ICMP echo request, id 65289, seq 1, length 64 13:33:36.639654 IP 192.168.1.60 > 192.168.1.4: ICMP echo reply, id 65289, seq 1, length 64 13:33:37.641796 IP 192.168.1.4 > 192.168.1.60: ICMP echo request, id 65289, seq 2, length 64 13:33:37.643817 IP 192.168.1.60 > 192.168.1.4: ICMP echo reply, id 65289, seq 2, length 64 13:33:38.645862 IP 192.168.1.4 > 192.168.1.60: ICMP echo request, id 65289, seq 3, length 64 13:33:38.646107 IP 192.168.1.60 > 192.168.1.4: ICMP echo reply, id 65289, seq 3, length 64 smtp:~# tcpdump -i eth0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 13:35:48.226084 IP 10.10.10.120 > 10.10.10.253: ICMP echo request, id 65289, seq 132, length 64 13:35:48.226502 IP 10.10.10.253 > 10.10.10.120: ICMP echo reply, id 65289, seq 132, length 64 13:35:49.230896 IP 10.10.10.120 > 10.10.10.253: ICMP echo request, id 65289, seq 133, length 64 13:35:49.232620 IP 10.10.10.253 > 10.10.10.120: ICMP echo reply, id 65289, seq 133, length 64
iptables -t nat -A PREROUTING -p tcp -s 158.235.555.42 --dport 5555 -j DNAT --to 192.168.1.2 iptables -t nat -A POSTROUTING -p tcp -s 158.235.555.42 -d 92.168.1.2 --dport 5555 -j SNAT --to $IP_ROUTERU
FORWARDu povolit komunikaci z 158.235.555.42 na 192.168.1.2 na portu tcp/5555 a zpět.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.