IP エイリアス (eth0:0) を使用した Firewalld

IP エイリアス (eth0:0) を使用した Firewalld

(解決策が見つかりました。下記を参照してください...)

サーバー (CentOS 7) には複数のパブリック IP があり、これらは通常のifcfg-eth0:0構成ファイルで設定されており、正常に動作しています。私は、(iptables から移行した) firewalld に適応しようとしています。IP エイリアスごとに開いているポートを指定できるようにしたいのですが、iptables では、ポートを必要とするエイリアスに一致するように宛先 IP を設定するだけで済みました。

考えFirewalld では、各インターフェースに異なるゾーンを適用して同じ効果を得ることができますが、そうすることはできないようです。

まず、次のことから始めます。

# firewall-cmd --get-active-zones
public
  interfaces: eth0 eth0:0
trusted
  interfaces: eth1

public_web使用したい新しいゾーンを作成しましたeth0:0

# firewall-cmd --permanent --new-zone=public_web
success
# firewall-cmd --permanent --zone=public_web --add-service=http
success
# firewall-cmd --permanent --zone=public_web --add-interface=eth0:0
success
# firewall-cmd --reload
success

しかし...

# firewall-cmd --get-active-zones
public
  interfaces: eth0 eth0:0
trusted
  interfaces: eth1

--remove-interface、および他のさまざまなコマンドをさまざまな順序で試しました--change-interfaceが、eth0:0変わりません。エイリアスの使用に関するドキュメントがどこにも見つからないため、これが目的を達成するための正しい方法であるかどうかはわかりません。

皆さんありがとう。


解決:

解決策は、destinationサービス ファイルでタグを使用することです。タグはサービスごとに 1 回しか使用できません。

87.98.256.512のポート443を使いたい場合、ファイルのコピーhttps.xml(オリジナルには触れないことを推奨)を に作成します/etc/firewalld/services。ここでは、https-admin.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>HTTPS for 87.98.256.512</short>
  <description>...</description>
  <port protocol="tcp" port="443"/>
  <destination ipv4="87.98.256.512" />
</service>

それから

# firewall-cmd --permanent --zone=public --add-service=https-admin
success
# firewall-cmd --reload
success
# firewall-cmd --zone=public --list-services
http https-admin

最後にiptablesで確認します

Chain IN_public_allow (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            87.98.256.512        tcp dpt:443 ctstate NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 ctstate NEW

覚えておいてください:destinationサービスごとにタグは 1 つだけなので、必要に応じて複数のサービスを作成してください。

答え1

インターフェイス エイリアス機能全体は、過去から引き継がれています。実際には、別のインターフェイスは作成されません。長い間、単一のインターフェイスに複数の IP を割り当てるためにエイリアスを使用する必要はありませんでした。これは「実際の」インターフェイスではないため、ファイアウォール ソフトウェアはこれを実際のインターフェイスのように扱うことができません。 コマンドを使用すると、アドレスがすべてメイン インターフェイスに割り当てられ、 は単にそのアドレスのラベルと見なされることがip addrわかります。eth0:0

これらすべてを考慮すると、ファイアウォールを調整するために何をする必要があるのか​​よくわかりません。IP アドレスやエイリアスではなく、IP でポートを指定する必要があるのではないかと思います。

関連情報