Portál AbcLinuxu, 12. května 2025 07:33

Dotaz: IP tables -- DNAT

5.4.2011 15:05 Krabák | skóre: 3
IP tables -- DNAT
Přečteno: 433×
Odpovědět | Admin
Dobrý den,

mám problém: Na serveru mám VPN, na které přes kterou přistupuju do jiné sítě. Chci udělat to, aby všechny HTTP požadavky přicházející na můj server port 8080 byly přesměrovány na PC ve VPN, port 8080.

Můj PC v mojí síti má IP 10.186.68.115/16, vzdálený má IP 10.12.154.90. Udělal jsem to tahle:

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 10.12.154.90:8080

ale nefunguje to ..:-( Zadal jsem tenhle jeden příkaz - nic víc. Co mám ještě udělat? :-)

Dííky


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.4.2011 15:15 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: IP tables -- DNAT
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co nefunguje? Pakety nedojdou na cílový server, ztratí se odpověď? Zkoušíte to z počítače, se kterým bude vzdálený server komunikovat zase přes ten router? Při DNATu se nemění zdrojová adresa, takže pokud je např server ve stejné síti, jako klient, pošle mu odpověď rovnou. Jenže klient ji dostane z jiné IP adresy, než kam posílal požadavek, takže si pakety nespáruje a paket zahodí.
5.4.2011 15:23 Krabák | skóre: 3
Rozbalit Rozbalit vše Re: IP tables -- DNAT

No ... nefunguje to ani z mého serveru (tam, kde provádím ten DNAT), ani z jiného PC v mé síti. Viz (připomínám, že 10.186.68.115 je můj server):

sd-debian:~# wget 10.186.68.115:8080
--2011-04-05 15:18:02--  http://10.186.68.115:8080/
Navazuje se spojení s 10.186.68.115:8080… nezdařilo se: Spojení odmítnuto.

Ale pokud to udělám na serveru přímo:

sd-debian:~# wget 10.12.154.90:8080
--2011-04-05 15:22:45--  http://10.12.154.90:8080/
Navazuje se spojení s 10.12.154.90:8080… spojeno.
HTTP požadavek odeslán, program čeká na odpověď… 200 OK
Délka: 104 [text/html]
Ukládám do: „index.html.1“.

A výpis iptables:

sd-debian:~# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 882 packets, 115K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    2   120 DNAT       tcp  --  eth0   *       0.0.0.0/0            10.186.68.115       tcp dpt:8080 to:10.12.154.90:8080 

Chain POSTROUTING (policy ACCEPT 709 packets, 44592 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 702 packets, 44172 bytes)
 pkts bytes target     prot opt in     out     source               destination    
5.4.2011 16:16 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: IP tables -- DNAT
A co filter FORWARD, neblokuje to?
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
5.4.2011 16:27 Krabák | skóre: 3
Rozbalit Rozbalit vše Re: IP tables -- DNAT
Nezdá se... je to ve výchozím nastavení:
Chain FORWARD (policy ACCEPT)
Navíc to není "tím cílovým serverem" ... když tam dám jinou IP, tak se to chová stejně...
cezz avatar 5.4.2011 16:28 cezz | skóre: 24 | blog: dm6
Rozbalit Rozbalit vše Re: IP tables -- DNAT

Tiez by som to videl na problem s forwardom. Konkretne je potrebne forwarding povolit v jadre:

sysctl -w net.ipv4.ip_forward=1

A nasledne povolit vo FW:

iptables -A FORWARD -p tcp -d 10.12.154.90 --dport 8080 -j ACCEPT

Ak to zafunguje, tak to bude treba povolit nastalo (sysctl zvycajne v /etc/sysctl.conf)

Computers are not intelligent. They only think they are.
5.4.2011 16:45 Krabák | skóre: 3
Rozbalit Rozbalit vše Re: IP tables -- DNAT

Výše zmíněné jsem udělal.

Abych to zrekapitulovat: Mám server 10.186.68.115, který je připojen do VPN (ve které je i server, kam se chci připojit, tj. 10.12.154.90). Na serveru jsem udělal:

iptables -t nat -F
iptables -F

sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -p tcp -d 10.12.154.90 --dport 8080 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 10.12.154.90:8080

Můj server se na svůj vlastní port 8080 vůbec nepřipojí - Spojení odmítnuto. Pokud zkouším z jiného PC v mojí síti (10.186.68.126) dostávám:

root@ondra:~# wget 10.186.68.115:8080
--2011-04-05 16:35:10--  http://10.186.68.115:8080/
Navazuje se spojení s 10.186.68.115:8080… nezdařilo se: Spojení bylo příliš dlouho neaktivní.
Zkusí se to znovu.
....

Pokud se koukám do Wiresharku, vidím, že se odesílá pouze SYN, ale už nepřijde ACK :-(

Řešení 1× (Krabák (tazatel))
5.4.2011 16:00 NN
Rozbalit Rozbalit vše Re: IP tables -- DNAT
Odpovědět | | Sbalit | Link | Blokovat | Admin
Telnet + tcpdump a postupuj od rozhrani k rozhrani. Takze bych si nejdrive overil jesli pozadavek pres VPN vubec odchazi, nebo jestli se jen nevraci. Pokud se nevraci, tak proc..

NN

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.