90.90.90.90 と 90.90.90.100 の 2 つのパブリック IP アドレスを持つ Debian VPS があります。
私がやりたいのは、サーバーが他のパブリック IP への着信トラフィックのみを受け入れるようにすることです。
例:
サーバー上で OpenVPN サーバーを実行しています。90.90.90.90 に VPN 接続すると、パブリック IP は 90.90.90.100 になります。(これが現在の状況です)
OpenVPN ポートを 90.90.90.100 に対して開くのではなく、サーバーに接続するときに使用する他の IP に対してのみ開きます。
これは iptables または他の方法を使用して可能ですか?
ありがとう!
答え1
私が理解している限りでは、IP #1 への VPN 接続で発信接続を IP #2 としてマスカレードし、IP #2 への VPN 接続で発信接続を IP #1 としてマスカレードしたいということですね。
この回答では、90.90.90.90をIP #1、90.90.90.100をIP #2と呼ぶことにします。
これを行う最も簡単な方法は、2 つの openvpn サーバーを実行することです。それぞれを異なるプライベート サブネット範囲で設定します。たとえば、IP #1 の着信接続は 10.0.1.0/24 の範囲のアドレスを受信し、IP #2 の着信接続は 10.0.2.0/24 の範囲のアドレスを受信します。
設定ファイルは、3 行を除いて元の設定とほぼ同じですが、最初の設定は次のようになります。
local 90.90.90.90
server 10.0.1.0 255.255.255.0
push "route 10.0.1.0 255.255.255.0"
一方、2 番目では、代わりに次のようになります。
local 90.90.90.100
server 10.0.2.0 255.255.255.0
push "route 10.0.2.0 255.255.255.0"
両方の設定ファイルがアクティブになっていることを確認するために、openvpn サービスを再起動します。
次に、VPN サーバーを離れるときに接続が正しい外部 IP アドレスを取得することを確認するために、次の iptables ルールを使用できます。eth0 を実際のインターフェース名に置き換えます。
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o eth0 -j SNAT --to 90.90.90.100
iptables -t nat -A POSTROUTING -s 10.0.2.0/24 -o eth0 -j SNAT --to 90.90.90.90
これで、VPN接続は1つのIPで入ってきて、別のIPを装って出て行きます。これは必要以上に複雑になる可能性があり、特に実行する理由はありません。二VPN サーバーの場合、構成の 1 つを削除し、残りの構成のみを使用します。