Portál AbcLinuxu, 12. května 2025 07:33
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:
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
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ě...
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
)
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
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.