Configurez TPROXY pe routerul meu VyOS pentru a redirecționa un anumit trafic către un proxy transparent local. Funcționează destul de bine, până când am descoperit că toate regulile mele de redirecționare a portului DNAT nu mai funcționează (timeout de conectare când mă conectez de la o rețea externă).
Mediu inconjurator
- Router:
10.0.0.1/24
(Proxy rulează 1234
port și adăugând SO_MARK cu 0xff
)
- Gazdă internă:
10.0.0.2/24
(Port 80
ar trebui să fie expusă publicului)
Regulile TPROXY
regulă ip adăugați fwmark 1 tabelul 100
ip route add local 0.0.0.0/0 dev lo tabelul 100
nft adăugați tabelul myproxy
nft add chain myproxy prerouting { tip filter hook prerouting prioritate 0 \; }
nft add rule myproxy prerouting ip daddr { 127.0.0.1/32, 224.0.0.0/4, 255.255.255.255/32 } return
nft add rule myproxy prerouting meta l4proto tcp ip daddr 10.0.0.0/24 return
nft adăugare regulă myproxy prerouting mark 0xff return
nft add rule myproxy prerouting meta l4proto { tcp, udp } mark set 1 tproxy to 127.0.0.1:1234 accept
nft add chain myproxy output { tip route hook output priority 0 \; }
nft add rule myproxy output ip daddr { 127.0.0.1/32, 224.0.0.0/4, 255.255.255.255/32 } return
nft add rule myproxy output meta l4proto tcp ip daddr 10.0.0.0/24 return
nft adăugare regulă myproxy output mark 0xff return
nft add rule myproxy output meta l4proto { tcp, udp } marca set 1 accept
nft adăugați filtru de masă
nft add chain filter divert { type filter hook prerouting priority -150 \; }
nft adaugă regulă filtru deviere meta l4proto tcp socket transparent 1 meta marca set 1 accept
Regulile DNAT
$ nft list table nat
table ip nat {
lanț PREROUTING {
tip nat hook prerouting priority dstnat; acceptarea politicii;
iifname "pppoe0" tcp dport { 8080 } contor pachete 7 octeți 400 dnat la 10.0.0.2:80
}
}
Simptome
Conectare RouterPublicIP:8080
expiră. În mod ideal, ar trebui să redirecționeze traficul către 10.0.0.2:80
.
Bănuiesc că traficul DNAT de intrare este redirecționat eronat către proxy (în loc de gazda reală 10.0.0.2
), totuși nu mi-am putut da seama de regulile nft corecte.
Mulțumesc anticipat!