Ich versuche, das Äquivalent dieser iptables-Regel in firewalld auszuführen
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Wie kann ich das machen?
Geben Sie Folgendes ein, um die Maskierung in der externen Zone einzurichten:
# firewall-cmd --zone=external --add-masquerade
extern : Zur Verwendung in externen Netzwerken mit aktivierter Maskierung, insbesondere für Router. Sie vertrauen nicht darauf, dass die anderen Computer im Netzwerk Ihren Computer nicht beschädigen. Es werden nur ausgewählte eingehende Verbindungen akzeptiert.
intern : Zur Verwendung in internen Netzwerken. Sie vertrauen meistens darauf, dass die anderen Computer in den Netzwerken Ihren Computer nicht beschädigen. Es werden nur ausgewählte eingehende Verbindungen akzeptiert.
Als Referenz:
ALREADY_ENABLED
. Sollte das der Fall sein?10.8.0.0/24
in Ihrer Konfiguration nichts erwähnt .Alternativ können Sie die Regel zu Ihrer Datei hinzufügen: /etc/firewalld/direct.xml , z.
Dann:
quelle
eth0
maskiert werden soll. Es gibt keine Möglichkeit, den Datenverkehr aus einem Subnetz nur über die einfache--add-masquerade
Anweisung zu maskieren . Es müssen direkte Regeln (wie in der obigen Antwort erläutert) verwendet werden.Sie verwenden solche Regeln nicht direkt. Sie platzieren Ihre Schnittstelle (eth0) einfach in einer externen Zone, die bereits in RHEL7 / CentOS7 vorkonfiguriert ist und deren Maskerade aktiviert ist, oder Sie können die Maskierung in der Zone aktivieren, in der sich Ihre Schnittstelle befindet. Standardmäßig ist sie öffentlich. Die richtige Antwort wäre also entweder:
oder
Das ist wirklich alles was Sie tun müssen. Um NAT nur für ein bestimmtes Subnetz oder einen bestimmten Bereich zu aktivieren, benötigen Sie eine Rich-Regel oder eine Direktregel. Das ist etwas komplexer. Sie können Pakete auch einfach für andere ablehnen, was ebenfalls eine Option zu sein scheint.
quelle