Der Schlüssel zu dem Problem ist, dass dstnat
es früher als verarbeitet wird srcnat
. Wenn Daten durchgelaufen sind dstnat
, funktionieren die `srcnat-Regeln und nur dann.
Hier ist die Konfiguration, die Hairpin NAT zum Funktionieren bringt:
/ip firewall nat> print Flags: X - disabled, I - invalid, D - dynamic 0 ;;; Hairpin NAT chain=srcnat action=masquerade protocol=tcp src-address=192.168.0.0/24 dst-address=192.168.0.0/24 out-interface=bridge-local log=no log-prefix="" 1 ;;; NAT masquerade for outgoing connections chain=srcnat action=masquerade out-interface=ether1-gateway log=no log-prefix="" 2 ;;; HTTP chain=dstnat action=netmap to-addresses=192.168.0.150 to-ports=80 protocol=tcp dst-address=76.35.222.205 dst-address-type=local dst-port=81 log=no log-prefix=""
76.35.222.205
ist eine falsche Adresse, die meine externe IP-Adresse darstellt. Ich habe versucht, ohne zu arbeiten, aber bei der Verwendung von Hairpin NAT kommt es zu einer Verzögerung von einigen Sekunden.
- Regel 0 stellt sicher, dass die Antwort an die innere Maschine gesendet wird, die eine Anforderung gesendet hat.
- Regel 1 ist eine herkömmliche NAT-Maskerade, die mit oder ohne Hairpin-NAT verwendet wird
- Regel 2 ist Portweiterleitung, unabhängig davon, von wo aus die Verbindung hergestellt wurde.
Wenn Sie einen lokalen HTTP-Server von innen anfragen, funktioniert die Regel 2 zuerst und dann die Regel 0.
Es kann auch sein, dass in Ihren Filterregeln etwas nicht stimmt.