Díky všem za rady, zkusím to projít všechnou, doufám že z toho vykřešu správné rozuzlení. Současný stav (po aplikaci mangle a rule fwmark) je, že příchozí pakety jsou značkované, ale odpověď stále má tendenci jít přes wan, Takže si myslím že problém bude v obsahu tabulky vpn (default via 10.0.0.2 dev tun2) inicované pravidlem fwmark 1234 lookup vpn -- buď nějak vyhodnocování routy neskončí u tabulky vpn nebo selže pravidlo all fwmark 1234...
Dokonce si myslím, že bych si vystačil i s pravidlem
ip rule add iif tun2 -jMARK 1234 ; ip rule add fwmark 1234 oof tun2 (schématicky, hypoteticky) bez nutnosti iptables
nemůže tam být nějaký problém s prioritou tabulek a prioritou pravidel? Když rule určí podle jaké tabulky routovat, a nevyhoví žádná routa, postupuje se podle dalších tabulek? Žeby to probublalo až k
main?
Musím napsat, co vlastně je cílem. Nějak to z toho nevyplývá. Port forwarding z dostupného VPS do interní sítě. Tedy pro příchozí spojení z internetu na počítače vevnitř. (což jsou ty záznamy na vps ip route -tnat PRE -dport 80 --to 192.168.0.N:8080, 8022 -> 192.168.0.1:22 ,etc)
Taky jsem nezmínil, že na tom VPSmám logicky ip route add 192.168.0.0 via 192.168.0.1 dev tun2. Ano, je to přes ssh -w. Bez žádných konfiguračních skripů, protože to právě se snažím zprovoznit.
Nemám ani 2 ISP ani nemám VPN na způsob "veškerý traffic přes VPN", ale ta "VPN" jen spojka mezi VPS a sítí za routerem, a to co chci zvenku dostupné řeším na tom VPS těmi DNATy
(To pak nějak mění koncepci použití toho značkování, že se vlaastně značkuje inverzně, nebo aby se to nezacyklilo nebo v případě 2 isp se značkuje "horizontálně")
Na nějaké odkazy na stack overflow jsem koukal. Ale
Mezitím jsem si přidal pravidla do mangle: (jen odmazáno 0.0.0.0/0 aby se to vešlo na šírku)
PRE: 126 6812 CONNMARK all -- tun2 * ctstate NEW CONNMARK set 0x4d2
FWD: 919 48108 MARK all -- * * connmark match 0x4d2 MARK set 0x10e1
OUT: 946 95784 MARK all -- * * connmark match 0x4d2 MARK set 0x10e1
Podíval jsem se to
conntrack -L |grep -Pi 'mark=\d\d'Vantomas: tenhle link jsem neviděl. Vyzkouším --save mark a restore-mark, ale iptables -j MARK vidím poprvé.
Tazatel přesměruje pakety z internetu ("klient.cz" mířící na "vps.cz") skrz tunel do lokální sítě která je "za-natem.cz". Zařízení v lokální síti dostane paket se zdrojovou adresou "klient.cz" a odpoví na něj - posláním odpovědi na "klient.cz". Výsledkem je, že klient.cz dostane paket
To je jen detail a důsledek, ale dodám, že odpověď ke klientovi
nedorazí, ze 5 důvodů:
- může být taky za NATem, pak ji zařízne jeho ISP
- 192.168 neprojde internetem
-odejde poj jinou src IP, tcp stack protistrany si to nedá dohromady i kdyby neměl nat
-zablokuje ji můj ISP (protože přímo z mého WAN odchází src roszah mé interní sítě)
ale hlavně ji zablokuje můj firewall ( -I FORWARD -s 192.168.0/24 -o wan -j REJECT) (v podstatě kontrola z předchozího řádku; jen na blíže-na mém perimetru)
Výpis:
0: from all lookup local
32764: from all fwmark 0x10e1 lookup vpn
32765: from 10.2.0.0/24 lookup vpn
32766: from all lookup main
32767: from all lookup default
#ip r s t vpn (ať žijou zkratky)
default via 10.2.88.2 dev tun8
192.168.1.0/24 via 192.168.1.208 dev eth0