Portál AbcLinuxu, 7. května 2025 09:56

Dotaz: Problém v nastavení SNAT DNAT veřejné ip na privátní

18.1.2008 09:39 POWERuser.CZ
Problém v nastavení SNAT DNAT veřejné ip na privátní
Přečteno: 3254×
Odpovědět | Admin
Dobrý den,

dostal jsem od našeho ISP další veřejnou IP adresu a rád bych si ji převedl na privátní na můj druhý počítač pomocí iptables(používám router s NAT na jádře 2.4.)

veřejná IP je: 81.31.46.70

privátní IP druhého počítače je: 192.168.1.2

příkazy IPTABLES,které se snažím použít:

ifconfig eth0:1 81.31.46.70

iptables -t nat -A POSTROUTING -s 192.168.1.2 -j SNAT --to 81.31.46.70

iptables -t nat -A PREROUTING -d 81.31.46.70 -j DNAT --to 192.168.1.2

Problém je v tom, že podle informací z internetu jsou tyto příkazy správně(prý ani není potřeba doplňovat rozhraní eth0, eth1, či povolovat samotný průchod portů mezi rozhraními). Můj ISP tyto příkazy používá na svém mikrotiku a opravdu po zadání Ip adresy 81.31.46.70 z netu, se dostanu na WEB server(na který ukazuje moje první veřejná IP adresa), avšak já se chci dostat na WEB server(a všechny další služby/porty) mého druhého počítače.

Bylo mi řečeno, že toto stačí zadat kamkoliv do firewall.init, ale to mi nefunguje. Buď je interní počítač skryt pod původní veřejnou adresou, nebo se na internet nedostane vůbec.

Proto bych rád požádal zkušenější, zda by mi nepomohli problém vyřešit(a mockrát děkuji za jakékoliv postřehy-v linuxu jsem podle mě stále ještě začátečník).

Můj firewall.init:

iptables -F

iptables -X

iptables -Z

for i in `cat /proc/net/ip_tables_names` do iptables -F -t i iptables -X -t i iptables -Z -t i done

iptables -t nat -I POSTROUTING -o eth0 -p tcp --dport 25 -s ! 192.168.1.1 -j DROP

ifconfig eth0:1 81.31.46.70

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

iptables -N syn-flood

iptables -A INPUT -i {OUTSIDE_DEVICE} -p tcp --syn -j syn-flood

iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN

iptables -A syn-flood -j DROP

iptables -A INPUT -i {OUTSIDE_DEVICE} -p tcp ! --syn -m state --state NEW -j DROP

iptables -t nat -A POSTROUTING -s {INSIDE_NETWORK}/{INSIDE_NETMASK} -o {OUTSIDE_DEVICE} -j MASQUERADE

iptables -t nat -I POSTROUTING -s 192.168.1.2 -j SNAT --to 81.31.46.70

iptables -t nat -I PREROUTING -d 81.31.46.70 -j DNAT --to 192.168.1.2

iptables -A INPUT -p tcp -m tcp -d {OUTSIDE_IP} -i eth0 --dport 22 --sport 1024:65535 -j ACCEPT

iptables -A FORWARD -m state --state NEW -i {INSIDE_DEVICE} -j ACCEPT

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -m state --state NEW,INVALID -i {OUTSIDE_DEVICE} -j DROP

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

iptables -t nat -A PREROUTING -p TCP --dport 135:139 -j DROP

iptables -t nat -A PREROUTING -p UDP --dport 137:139 -j DROP

iptables -t nat -A PREROUTING -p TCP --dport 445 -j DROP

iptables -t nat -A PREROUTING -p UDP --dport 445 -j DROP

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -p icmp -j ACCEPT # to both sides.

iptables -A INPUT -p icmp -j ACCEPT

iptables -A INPUT -i {INSIDE_DEVICE} -j ACCEPT

iptables -A OUTPUT iptables -A FORWARD -p tcp -d

iptables -A INPUT -i lo -j ACCEPT

#HTB zacatek

#HTB konec

if [ -f /etc/dmz.info ]; then echo "Setting up DMZ." . /etc/dmz.info iptables -N dmz if [ "DMZ_USE_NAT" = "y" ] then iptables -t nat -A POSTROUTING -s {DMZ_NETWORK}/{DMZ_NETMASK} -o {OUTSIDE_DEVICE} -j MASQUERADE fi fi iptables -L

echo 7 > /proc/sys/net/ipv4/ip_dynaddr

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

/bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

echo "1" > /proc/sys/net/ipv4/tcp_syncookies

if [ -f /proc/sys/net/ipv4/conf/all/rp_filter ] then echo "1" > /proc/sys/net/ipv4/conf/default/rp_filter echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter else echo "Anti spoofing is not available, the author of this floppy spoofed, mail him." fi

if [ -f /proc/sys/net/ipv4/conf/all/accept_redirects ] then echo "0" > /proc/sys/net/ipv4/conf/default/accept_redirects echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects else echo "Anti spoofing is not available, the author of this floppy spoofed, mail him." fi

/bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

echo "65535" > /proc/sys/net/ipv4/ip_conntrack_max

echo "Enabling IP forwarding."

echo "1" > /proc/sys/net/ipv4/ip_forward
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.1.2008 09:59 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Odpovědět | | Sbalit | Link | Blokovat | Admin
iptables -t nat -A POSTROUTING -s 192.168.1.2 -j SNAT --to 81.31.46.70 
iptables -t nat -A PREROUTING -d 81.31.46.70 -j DNAT --to 192.168.1.2
Tohle by mělo být v pořádku – určitě každé zvlášť, nevím, jesttli v téhle kombinaci se o ty pakety SNAT a DNAT nepoperou.
iptables -A FORWARD -m state --state NEW -i {INSIDE_DEVICE} -j ACCEPT 
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 
iptables -A FORWARD -m state --state NEW,INVALID -i {OUTSIDE_DEVICE} -j DROP
Tady povolujete veškerá nová průchozí spojení zahájená uvnitř sítě, ale zakážete veškerá průchozí spojení zahájená v internetu. Tudíž vám bude fungovat SNAT (spojení zahájená vaším počítačem projdou), ale paket, který projde DNATem bude vzápětí tímto filtrem zahozen.

Přidal bych tam jeden řádek:
iptables -A FORWARD -m state --state NEW -i {INSIDE_DEVICE} -j ACCEPT 
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 
iptables -A FORWARD -m state --state NEW -i {OUTSIDE_DEVICE} -d 192.168.1.2 -j ACCEPT
iptables -A FORWARD -m state --state NEW,INVALID -i {OUTSIDE_DEVICE} -j DROP
25.1.2008 17:55 POWERuser.CZ
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Ahoj, píšu protože se mi to zatím stále nepodařilo rozchodit. Hrál jsem si stím různě-možně, vypínal a zapínal pravidla, ale nefunguje mi to. Asi zkusím udělat mikrotik router a bude. Každopádně díky za pomoc.
25.1.2008 18:07 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Nejjednodušší způsob, jak zjistit, zda NAT funguje, je nastavit defaultní politiku na FORWARD na ACCEPT a vymazat všechny pravidla ve FORWARD. Pokud pak komunikace funguje, je problém v nastavení firewallu. Pokud nefunguje ani pak, je problém s NATem (nebo mimo NATující router). Dobrý pomocník pro hledání chyby je např. tcpdump spouštěný postupně na vnějším i vnitřním rozhraní. Pokud na jedno rozhraní paket přijde a z druhého už neodejde, je problém na routeru, pokud odejde z vnitřního rozhraní ale už nepřijde odpověď, je pro blém na cílovém počítači (nebo mezi ním a routerem). Pokud routerem projdou první pakety v obou směrech, ale navazování spojení nepokračuje, bude asi problém v NATu a router odesílá do internetu pakety se špatnými adresami, které nedorazí k adresátovi, nebo je adresát zahodí, protože je (podle adres) nečeká.
28.1.2008 15:23 POWERuser.CZ
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Díky za reakci, zkusím to ověřit(já myslím, že hlavní problém je jako vždy mezi židlí a klávesnicí, ale o tom to je, že v linuxu se mám ještě hodně co učit, takže každopádně díky za pomoc)
18.1.2008 10:02 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše OT: formátování
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ještě něco
iptables -A OUTPUT iptables -A FORWARD -p tcp -d
Tohle je předpokládám chyba při vkládání do diskuze. Použijte tag <pre>…</pre>, případně <pre class="kod">…</pre>, usnadníte si tím práci a výpis bude přeheldnější.
18.1.2008 11:31 POWERuser.CZ
Rozbalit Rozbalit vše Re: OT: formátování
Děkuji mockrát za reakci. Hned zítra to zkusím. Ta chyba je opravdu chyba vkládání do diskuze, po obyčejném copy-paste byl text v náhledu šíleně nepřehledný(nefungovaly entery a vše bylo v jednom řádku),tak jse mto musel ručně upravovat.
18.1.2008 12:17 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: OT: formátování
po obyčejném copy-paste byl text v náhledu šíleně nepřehledný(nefungovaly entery a vše bylo v jednom řádku),tak jse mto musel ručně upravovat
To by právě vyřešil tag <pre>, což je „formátovaný text (kód)“, který právě mimo jiné zachová konce řádků tam, kde je „Enter“.
25.1.2008 18:27 David Jaša | skóre: 44 | blog: Dejvův blog
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak vypadají ta rozhraní na routeru aneb proč využíváš silně zastaralá virtuální rozhraní?
oVirt | SPICE
28.1.2008 15:30 POWERuser.CZ
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
No on je to hoodně starej router, funguje přes 4 roky a spokojenost. Až teď, když je potřeba něco vylepšit tak zjišťuju, že to není zas tak lehký jak se zdá. Každopádně pro konfiguraci používám standartně vyplněnej config, kde je jako eth0 vnější rozhraní s IP adresou řady 10.10.X.Y a vnitřní eth1 je moje 192.168.X.Y. Obyčejný NAT s HTB shapingem. Poskytovatel mi na Ip adresu eth0 převádí veřejnou IPnu 81.31.46.69 a já chtěl jen další pro druhý počítač na LAN. Sem si myslel, že to bude pár pravidel a pohoda, ale spletl sem se(nejsem odborník na linux). Ale dík za reakci.
2.2.2008 02:06 Poweruser
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Vypadá to, že to budu muset takto nakonec zkusit:-p
25.1.2008 20:07 magnum
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Odpovědět | | Sbalit | Link | Blokovat | Admin
toto
ifconfig eth0:1 81.31.46.70
nahrad
ip addr add 81.31.46.70/32 dev eth0
28.1.2008 15:32 POWERuser.CZ
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Určitě zkusím, díky moc.
2.2.2008 02:05 Poweruser
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Tak nic, pořád to nejde. Nevadí díky.
26.1.2008 10:01 Tomáš Crhonek | skóre: 12
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ja osobne pouzivam NAT 1:1
26.1.2008 10:09 Tomáš Crhonek | skóre: 12
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
takto:

ifconfig eth0:1 12.34.56.78 iptables -t nat -A POSTROUTING -s 172.16.0.11 -j SNAT --to 12.34.56.78 iptables -t nat -A PREROUTING -d 12.34.56.78 -j DNAT --to 172.16.0.11
26.1.2008 10:09 Tomáš Crhonek | skóre: 12
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
pardon... zapomnel jsem na pre..
ifconfig eth0:1 12.34.56.78
iptables -t nat -A POSTROUTING -s 172.16.0.11 -j SNAT --to 12.34.56.78
iptables -t nat -A PREROUTING -d 12.34.56.78 -j DNAT --to 172.16.0.11
28.1.2008 15:31 POWERuser.CZ
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Určitě zkusím a poreferuju jak sem dopadl. Moc díky za pomoc.
2.2.2008 02:03 Poweruser
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Tak v podstatě přesně tohle jsem si myslel, že půjde a nejde :-p
2.2.2008 11:57 Tomáš Crhonek | skóre: 12
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
To je zajimave, zkousel jste se mrknout tcpdumpem, jestli tam nejaka komunikace prochazi?
28.1.2008 15:42 Xerces
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj, řešil jsem cca před 2 lety stejný problém. Bylo to trošku složitější v tom, že jsem na ten počítač s druhou veřejnou IP co je schovaný za tím prvním potřeboval dostat VPN spojení. Sice nejsem nějaký expert na síťování a možná mě tady odborníci rozcupujou, ale zkus aktivovat proxy ARP na obou rozhraních toho prvního počítače, tedy:
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
To co radí kolegové s nastavením iptables vypadá správně, ale mne to také nefungovalo, dokud jsem neprovedl výše uvedené. Shruba jde o to, že ty stroje mezi sebou komunikují ještě na nižší úrovni tím protokolem ARP a jde o to aby se pakety dostali až k tomu druhýmu počítači jestli to chápu správně.
28.1.2008 19:27 Xerces
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Jeste pridam pekny navod pro blby od soudruha Kubečka. http://www.abclinuxu.cz/faq/site/jak-zprovoznit-verejnou-ip-adresu-ve-vnitrni-siti-nebo-dmz
29.1.2008 14:50 POWERuser.CZ
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Jakmile se dostanu domů k počítači tak to zkusím a snad už úspěšně zakončíme toto vlákno :-) Díky.
2.2.2008 02:04 Poweruser
Rozbalit Rozbalit vše Re: Problém v nastavení SNAT DNAT veřejné ip na privátní
Zatím mi to arpproxy nejde,ale ještě to zkusím zadat přímo do firewall.init.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.