私は走っているCentOS 7のopenvpnそしてファイアウォール。公開(デフォルト)領域でクロッキングを有効にしましたが、うまく機能します。しかし、時にはlocalhost / 127.0.0.1でサービスを実行する必要がありますが、偽装すると問題が発生します。サービスは127.0.0.1に正しくバインドされていますが、接続を試みるクライアントコードは、宛先IPアドレス127.0.0.1をサーバーが受信していないIPアドレスeth0にマップするようです(127.0.0.0で構成されています。0).0.1)のみ可能です。
openvpn が動作し続けながら、最も干渉なく localhost のローカルサービスにアクセスできるようにマスカレーディングを特定のサブネットに限定するにはどうすればよいですか?
私の質問を表現する別の方法は次のとおりです。ループバックアドレスのなりすましを防ぐ方法は?
いくつかのアイデアがありますが、どうすればよいかわかりません(または他の作業を中断することなく実行できます)。
- openvpn迷彩を10.8.0.0/16に制限
- eth0のIPアドレスを別のゾーンに移動してマスカレーディングを制限します。
- ループバックインターフェイスを信頼できるゾーンに移動し、eth0のIPアドレスを信頼できるゾーンのソースとして追加してマスカレーディングを許可します。
答え1
解決策が見つかりました。
external
interfaces: eth0
masquerade: yes
internal
interfaces: tun0
masquerade: no
public (default)
interfaces: # not used
masquerade: no
trusted
interfaces: lo
masquerade: no
これを達成するためには、lo
ゾーンtrusted
、tun0
インinternal
ゾーン、およびeth0
ゾーンであることを明示的に宣言する必要がありますexternal
。この目的のために、以下を使用しました(例:)。
firewall-cmd --permanent --zone=external --add-interface=eth0
firewall-cmd --permanent --zone=internal --add-interface=tun0
firewall-cmd --permanent --zone=trusted --add-interface=lo
firewall-cmd --reload
の場合、再起動後も引き続き機能するには、を追加する必要がeth0
あります。他のインターフェイスには必要ありません。ZONE="external"
/etc/sysconfig/network-scripts/ifcfg-eth0
実際のサービス/ポートはtrusted
およびinternal
ゾーンで開かれるので、デフォルト値のままにしました。public
緊急事態(たとえば、名前が変更されたインターフェースの更新)に備えて、デフォルトゾーン(デフォルト)にSSHがあることを確認し、eth0
そのゾーンに公開するサービスを追加しましたexternal
。
masquerade
デフォルトでは、この領域ではオンにexternal
なり、他の領域ではオフになっています。
この設定は以下に適用されます。ファイアウォールd-0.3.9-14.el7.noarch
ループバックインターフェイスのマスカレーディングを除外するために別々の領域に配置する必要がある理由はわかりません。マスカレーディングをオンにするとルールが設定されます。これ-A POST_external_allow ! -i lo -j MASQUERADE
は十分ですが、専門家ではありません。しかし、私は発見したこのエラーこれは関連している可能性があり、将来のリリースで問題が解決する可能性があります。