そのため、ファイアウォールとLinuxネットワーキング全体を理解する課題がありました。これは私のテスト設定です。
ルータとクライアントはDebian 12を実行しており、ノートブックはUbuntu 22.04を実行しています。
この設定は次の目標を達成する必要があります。
- ルーターは明らかにサブネット192.168.8.0/24と192.168.7.0/24の間でルーターとして機能する必要があります。
- ノートブックとクライアントは互いにpingを送信できる必要があります。
- 送信元IPが192.168.7.120の場合、クライアントからのトラフィックは192.168.8.120で指定する必要があります。
- 送信元IPが192.168.7.121の場合、クライアントからのトラフィックは192.168.8.121を介してNATする必要があります。
- ファイアウォール標準機能を備えたルータのファイアウォール、直接ルールなし
私の問題は5を実装することです。何を試しても、トラフィックは常に192.168.8.120を介してNATされます。
ファイアウォールの構成は次のとおりです。
firewall-cmd --permanent --new-zone=ext0
firewall-cmd --permanent --zone=ext0 --set-target=default
firewall-cmd --permanent --zone=ext0 --add-masquerade
firewall-cmd --permanent --zone=ext0 --add-forward
firewall-cmd --permanent --zone=ext0 --add-service=ssh
firewall-cmd --permanent --zone=ext0 --change-interface=enp1s0:0
firewall-cmd --permanent --zone=ext0 --add-source=192.168.7.120
firewall-cmd --permanent --zone=ext0 --add-source=192.168.8.100/32
firewall-cmd --permanent --new-zone=ext1
firewall-cmd --permanent --zone=ext1 --set-target=default
firewall-cmd --permanent --zone=ext1 --add-masquerade
firewall-cmd --permanent --zone=ext1 --add-forward
firewall-cmd --permanent --zone=ext1 --add-service=ssh
firewall-cmd --permanent --zone=ext1 --change-interface=enp1s0:1
firewall-cmd --permanent --zone=ext1 --add-source=192.168.7.121
firewall-cmd --permanent --zone=ext1 --add-source=192.168.8.0/24
私はさまざまなデバイスタイプを試しましたので、インターフェイス名がわずかに異なるさまざまな設定を使用しました。
- 仮想インターフェイス、ここで見られる問題は、enp1s0:0とenp1so:1などの2つのデバイスが同じMACアドレスを共有することです。新しいローカルMACアドレスを割り当て、各インターフェイスをブリッジにラップします。
- 同じ問題であるVLANもMACを割り当て、ブリッジをバイパスしようとしました。
- 仮想インターフェイスは外界には見えず、ブリッジでラップすることは役に立ちません。
基本的なアイデアは2つの領域で、1つは192.168.8.120のトラフィック用、もう1つは192.168.8.121のトラフィック用です。そのIPを持つ「発信」インターフェイスを各ゾーンに追加し、偽装と転送をオンにしてから、最後に「受信」インターフェイスまたはIPアドレスを送信元として追加します。インターフェイスを追加するだけでは十分ではなく、IPソースを追加した場合にのみ機能することがわかりました。
私が見たもう1つの問題は、同じソースをファイアウォールの他の領域に追加できないことです(ソース192.168.8.100/32および192.168.8.0/24を参照)。 AFAIK IPソースはインターフェイスより優先され、ゾーンはアルファベット順に処理されるため、少なくとも192.168.8.100のトラフィック(エコー応答など)がゾーンext0に輻輳されます。
ファイアウォール文書に豊富なルールは最後の手段としてのみ使用すべきであると明示されているので、まだこれについて詳しく調べていません(今はそうしているのでどんなアドバイスでも感謝します)。
それでは、私が何を間違っているのでしょうか? Firewalldの基本機能でこれを行うことはできますか?
助けてくれてありがとうございます:)