2つの仮想マシンでcentos7を実行しています。ファイアウォールは両方の仮想マシンで実行されています。アプリケーションがポート5044を使用してコンピュータAで実行されているとします。 Machine Bという別のコンピュータがあり、このコンピュータはポート5044でこのコンピュータにTelnetを試みています。当時、Telnetは例外を通して話しました。
Trying 192.168.115.141...
telnet: connect to address 192.168.115.141: No route to host
しかし、ファイアウォールをオフにすると通信はうまくいきます。しかし、ファイアウォールを無効にしたくありません。それでは、他のマシンBがマシンAと通信することをどのように許可しますか? IPテーブルまたはファイアウォールルールのリストにどのタイプのポリシーを定義する必要があるかを知っていますか?
どんな助けでも大変感謝します。
答え1
Centos 7を使用しています。firewalld
基本的に。現在は、カーネルが提供するファイアウォールへのより高いレベルのインターフェイスです。iptables
。実際にiptables
使用方法を知る必要はありませんが、firewalld
よく理解することは確かに役立ちます。制御のための主なインターフェースfirewalld
は次のとおりです。firewall-cmd
注文する。このコマンドを一緒に使用すると、設定--permanent
にのみ影響し、再ロード、サービスの再起動、または再起動までは目に見える効果はありません。このオプションがないと、すぐに目に見える効果しかなく、保存された設定は変更されません。 GUIなどの他のインターフェイスが存在します。firewall-config
。
firewalld
などの抽象的な概念が多い。エリア。デフォルトでは、パブリックゾーンは使用中ですが、多くのゾーンが事前定義されています(trusted、work、dmz ...)。各ゾーンには使用ロールがあり、いくつかの事前定義された設定が含まれています(たとえば、公開SSHはデフォルトでゾーンで許可されています)。特定のソースにのみサービスアクセスを制限するには、パブリックゾーンよりも代替ゾーンを優先的に使用する必要があります。事前定義されたゾーンの1つを選択する必要がありますが、とにかく新しいゾーンを作成し、ソース(MachineBのIP)にバインドし、TCPポート5044を許可します。 MachineBのIPが次のようになっているとします10.0.3.66
(他の有効なソースは、たとえばAll LANをソースに、この例ではLANに変更されます10.0.3.0/24
)。
# firewall-cmd --permanent --new-zone peervm
# firewall-cmd --permanent --zone peervm --add-source 10.0.3.66
# firewall-cmd --permanent --zone peervm --add-port 5044/tcp
効果は構成で見ることができます。たとえば、次のようになります。
# egrep -r '10.0.3.66|5044' /etc/firewalld
/etc/firewalld/zones/peervm.xml.old: <source address="10.0.3.66"/>
/etc/firewalld/zones/peervm.xml: <source address="10.0.3.66"/>
/etc/firewalld/zones/peervm.xml: <port protocol="tcp" port="5044"/>
変更を有効にするには、次のコマンドを使用します。
# firewall-cmd --reload
success
これはデフォルトのルールをリセットし、iptables
その効果は次のとおりです。
# iptables-save |egrep '10.0.3.66|5044'
-A POSTROUTING_ZONES_SOURCE -d 10.0.3.66/32 -g POST_peervm
-A PREROUTING_ZONES_SOURCE -s 10.0.3.66/32 -g PRE_peervm
-A PREROUTING_ZONES_SOURCE -s 10.0.3.66/32 -g PRE_peervm
-A PREROUTING_ZONES_SOURCE -s 10.0.3.66/32 -g PRE_peervm
-A FORWARD_IN_ZONES_SOURCE -s 10.0.3.66/32 -g FWDI_peervm
-A FORWARD_OUT_ZONES_SOURCE -d 10.0.3.66/32 -g FWDO_peervm
-A INPUT_ZONES_SOURCE -s 10.0.3.66/32 -g IN_peervm
-A IN_peervm_allow -p tcp -m tcp --dport 5044 -m conntrack --ctstate NEW -j ACCEPT
抽象化レイヤーを使用すると、上記のような多くの定型句ルールを作成できます。デフォルトでは、iptables
1つのルールでこれを行います(ここには示されていないいくつかの標準ルールが適用されます)。
# iptables -I INPUT -s 10.0.3.66/32 -p tcp --dport 5044 -j ACCEPT
したがって、使い慣れた場合は、最も簡単な場合は直接ルールと保存されている他の設定ツールセットを使用し、CentOSなどのツールiptables
で簡単に処理できない非常に複雑な場合は、スペクトルの反対側で使用することを検討する必要がfirewalld
あります。iptables
使用iptables-services
変えるfirewalld
。