私はfirewalldでこのiptablesルールと同等のことをやろうとしています
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
これどうやってするの?
外部ゾーンでマスカレードを設定するには、次のように入力します。
# firewall-cmd --zone=external --add-masquerade
external:マスカレードが特にルーターで有効になっている外部ネットワークで使用します。コンピューターに害を与えないようにネットワーク上の他のコンピューターを信頼しません。選択された着信接続のみが受け入れられます。
internal:内部ネットワークで使用します。ネットワーク上の他のコンピュータを信頼して、コンピュータに害を与えないようにします。選択された着信接続のみが受け入れられます。
参考のため:
または、次のルールを追加できます。/ etc/firewalld/direct.xmlファイル.
<?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>
次に:
firewall-cmd --reload
そのようなルールを直接使用することはありません。インターフェース(eth0)をexternalゾーンに配置するだけです。これは、RHEL7/CentOS7ですでに構成済みであり、マスカレードがオンになっているか、インターフェースが存在するゾーンでマスカレードを有効にできます。デフォルトでは、公衆。したがって、正しい答えは次のいずれかです。
# firewall-cmd --zone=public --add-masquerade
または
# firewall-cmd --change-zone=eth0 --zone=external
それが本当にあなたがする必要があるすべてです。 NATを特定のサブネットまたは範囲でのみ有効にするには、リッチルールまたはダイレクトルールが必要です。これは少し複雑です。他のパケットを拒否することもできますが、これもオプションのようです。