OpenVPN 用の Linux IP 転送 - ファイアウォールの設定は正しいですか?

OpenVPN 用の Linux IP 転送 - ファイアウォールの設定は正しいですか?

Linux マシンで OpenVPN を実行しています。VPN サーバーにはパブリック IP アドレス (xxxx) があり、VPN クライアントには 10.8.0.0\24 の "tun" デバイス上のアドレスが割り当てられています。10.8.0.0\24 をパブリック IP アドレスに NAT マスカレードする IPTables ルールがあります。

VPN サーバーを実行するには、IP 転送を有効にする必要がありました (そのため、net.ipv4.conf.default.forwarding=1 を設定しました)。

...言い換えれば、これは OpenVPN チュートリアルで説明されているとおりの手順であり、特別なトリックは一切ありません。

すべてうまくいきましたが、転送を有効にする部分が心配です。考えるマシンは、任意の IP アドレスからのパケットを任意の IP アドレスに転送するようになりましたが、これは適切ではないようです。パブリックにアクセス可能な IP を持っているため、これは特に悪いです。

不要な転送動作を制限するためのファイアウォール ルールの提案はありますか? 答えは FORWARD チェーン内の 1 つ以上の IPTables ルールになると思いますが、ここで行き詰まっています。

ありがとう!

答え1

転送テーブルにこれらのルールを使用すれば、問題はないはずです。

-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -j REJECT

/etc/sysconfig/iptablesファイルにルールを記述し、ファイアウォールを再起動することができます。コマンドラインで試す場合は、まず

 iptables -F 

転送トラフィックのデフォルトの拒否を削除し、上記の 3 つのルールの前にそれぞれ「iptables」を追加します。

答え2

以下は、私の OpenVPN ゲートウェイで設定した内容のサブセットです。

iptables -A FORWARD -i tun0 -o tun0 -j ACCEPT # vpn to vpn
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT # vpn to ethernet
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT # ethernet to vpn

これは単なるサブセットであることに注意してください。ルールの残りの部分は標準の NAT 処理を実行します。

関連情報