Estoy intentando que la horquilla NAT funcione en mi enrutador. No puedo acceder al servidor de mi sitio web local en mi LAN (192.168.1.3). Estoy usando nftables con la siguiente configuración:
enp1s0 = WAN enp2s0 = LAN
#!/sbin/nft -f
flush ruleset
table ip nat {
chain prerouting {
type nat hook prerouting priority -100; policy accept;
iifname "enp1s0" tcp dport { 80, 443 } dnat to 192.168.1.3
meta nftrace set 1
}
chain postrouting {
type nat hook postrouting priority 100; policy accept;
ip saddr 192.168.1.0/24 ip daddr 192.168.1.3 tcp dport { http, https } counter snat 192.168.1.1
oifname "enp1s0" masquerade
meta nftrace set 1
}
}
¿Cómo puedo exactamente hacer que funcione la horquilla? He visto a personas usar DNS dividido, pero no estoy muy seguro de cómo configurarlo.
Respuesta1
Para realizar NAT Hairpinning en nftables, puede agregar una regla DNAT que verifica si la dirección de destino de los paquetes es la IP externa de su red. También debe enmascararse en la interfaz interna (LAN).
flush ruleset
define wan = enp1s0
define lan = enp2s0
define webserver = 192.168.1.3
define extip = 1.2.3.4
table ip nat {
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
tcp dport { 80, 443 } ip daddr $extip dnat to $webserver
}
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
oif $wan masquerade
oif $lan masquerade
}
}