IPtablesルールで特定のポートのトラフィックを許可するにはどうすればよいですか?

IPtablesルールで特定のポートのトラフィックを許可するにはどうすればよいですか?

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

抽象化レイヤーを使用すると、上記のような多くの定型句ルールを作成できます。デフォルトでは、iptables1つのルールでこれを行います(ここには示されていないいくつかの標準ルールが適用されます)。

# iptables -I INPUT -s 10.0.3.66/32 -p tcp --dport 5044 -j ACCEPT

したがって、使い慣れた場合は、最も簡単な場合は直接ルールと保存されている他の設定ツールセットを使用し、CentOSなどのツールiptablesで簡単に処理できない非常に複雑な場合は、スペクトルの反対側で使用することを検討する必要がfirewalldあります。iptables使用iptables-services変えるfirewalld

関連情報