Невозможно получить доступ к сайту в локальной сети. NAT Hairpinning в nftables

Невозможно получить доступ к сайту в локальной сети. NAT Hairpinning в nftables

Я пытаюсь заставить работать NAT hairpinning на моем маршрутизаторе. Я не могу получить доступ к своему локальному веб-хосту в моей локальной сети (192.168.1.3). Я использую nftables со следующей конфигурацией:

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
        }
}

Как именно мне заставить работать hairpinning? Я видел, что люди используют split DNS, но я не совсем уверен, как это настроить.

решение1

Для NAT Hairpinning в nftables вы можете добавить правило DNAT, которое проверяет, является ли адрес назначения пакетов внешним IP вашей сети. Вам также нужно сделать маскарадинг на внутреннем интерфейсе (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
        }
}

Связанный контент