Klasicky si forwarduji porty z VPS přes iptables -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.1.8.1:80 , kde 10.1.0,0/16 je nějaký tunel, který nás v tuto chvíli nezajímá.
V dotazu mě zajímá, řešení na straně VPS. A to využívá conntrack a vlastně to modifikuje TCP segmenty - (přepisuje to volitelně-port a) mění to i cílovou adresu IP, že? Už asi víte kam mířím.
Je možná docílit i "port forwardingu" jiným způsobem, a to přes ip rule add dport 80 table pomocna; ip route add ??.??.??.?? via vpn Tím by totiž mohly chodit pakety bez nutnosti perestrojky (volitelně-portu a) dst IP. (A asi by bylo nutné udělat rovnák na dalších pár věcí na druhé straně tunelu...
Ono udělat port forwarding přes i ten pitomý DNAT --to chce alchymii s mangle-PREROUTING restore-mark a fwmark)
Jde to takhle? Jsou v tom nějaké praktické výhody? Jsou tam nějaká úskalí vůbec stojí za to ta složitější konfigurace(jelikož chodí defakto cizí dst IP, asi by se musel obměkčit rp-filter, "klonovat" ip adresa VPS) - to znamená, ža na druhém konci tunelu by musel soket poslouchat na této IP vps nebo v nějakém "*" režimu
PS: pokud (ne nutně na konfiguraci výše) například spustím php -S "0.0.0.0:80", bude dostanou se do PHP procesu vůbec TCP streamy s dst IP , která neni mezi IP adresami stroje? Nebo jádro nejdřív provádí u příchozích paketů kontrolu IP adres na všech rozhraních a propustí aplikaci jen typ toky, kde dst IP je některá z adres stroje.
A je tato kontrola provedena jen jednou v okamžiku spuštění naslouchacího procesu nebo je dynamická(když se přidají rozhraní nebo adresy na rozhraní)?
není i tohle nějaká opšna TCP, která právě aktivuje "roadwarrior"/"wildcard" režim naslouchání?