Firewalld CentOS 7 Masquerading


8

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?

Antworten:


6

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:

http://www.certdepot.net/rhel7-get-started-firewalld/


Ich bekomme eine Warnung ALREADY_ENABLED. Sollte das der Fall sein?
Jacob Tomlinson

1
Auch wird 10.8.0.0/24in Ihrer Konfiguration nichts erwähnt .
Jacob Tomlinson

1
@JacobTomlinson In diesem Fall ist es bereits aktiviert und Ihre Frage macht keinen Sinn.
Michael Hampton

1
ja @JacobTomlinson ist richtig, wenn aktiv als das, was tatsächlich ein Problem ist
TBI Infotech

1

Alternativ können Sie die Regel zu Ihrer Datei hinzufügen: /etc/firewalld/direct.xml , z.

<?xml version="1.0" encoding="utf-8"?>
<direct>
...
  <rule priority="0" table="filter" ipv="ipv4" chain="POSTROUTING">-table nat -jump MASQUERADE --source 10.8.0.0/24 --out-interface eth0</rule>  
</direct>

Dann:

firewall-cmd --reload

Es sollte ausdrücklich betont werden, dass die akzeptierte Antwort insofern falsch ist, als sie zeigt, wie eine Maskerade / NAT-Konfiguration erstellt wird, jedoch nur, wenn der gesamte Datenverkehr auf dem Ausgang eth0maskiert werden soll. Es gibt keine Möglichkeit, den Datenverkehr aus einem Subnetz nur über die einfache --add-masqueradeAnweisung zu maskieren . Es müssen direkte Regeln (wie in der obigen Antwort erläutert) verwendet werden.
P Marecki

1

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:

# firewall-cmd --zone=public --add-masquerade

oder

# firewall-cmd --change-zone=eth0 --zone=external

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.