Есть шлюз с двумя внешними интерфейсами и 1 локальный
Eeth1: 192.168.1.2
Eeth2: 172.16.2.2
Leth0: 100.127.1.1
В локальной сети есть HTTP сервер: 100.127.1.2
Есть прочие клиенты локальной сети: 100.127.1.15...
Если зайти на внешние IP "извне" - сайт открывается
Если зайти на внешние IP "изнутри" - сайт НЕ открывается
Правила nft:
# nft list table inet nat
table inet nat {
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
iif "Eeth1" tcp dport { 80, 443 } dnat ip to 100.127.1.2
iif "Eeth2" tcp dport { 80, 443 } dnat ip to 100.127.1.2
}
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 100.127.1.0/24 masquerade
}
}
Маршруты:# ip route show
default via 192.168.1.1 dev Eeth1
100.127.1.0/24 dev Leth0 proto kernel scope link src 100.127.1.1
172.16.2.0/24 dev Eeth2 proto kernel scope link src 172.16.2.2
192.168.1.0/24 dev Eeth1 proto kernel scope link src 192.168.1.2
# ip route show table 101
default via 192.168.1.1 dev Eeth1
192.168.1.0/24 dev Eeth1 scope link
# ip route show table 102
default via 172.16.2.1 dev Eeth2
172.16.2.0/24 dev Eeth2 scope link
# ip rule show
0: from all lookup local
32760: from all to 172.16.2.2 lookup firstline
32761: from 172.16.2.2 lookup firstline
32762: from all to 192.168.1.3 lookup unilink
32763: from 192.168.1.3 lookup unilink
32764: from all to 192.168.1.2 lookup unilink
32765: from 192.168.1.2 lookup unilink
32766: from all lookup main
32767: from all lookup default
PS Это тестовый стенд VirtualBox