AWS EC2(CentOS)インスタンスで実行されているOpenVPNサーバーに接続するクライアントの静的IP構成を設定しました。静的IPを割り当てる目的は、帯域幅の使用が制御されるように、すべてのクライアントにQUOTA
を使用してiptables
を割り当てることです。
以下は私の設定です:
server.conf:
mode server
tls-server
dev tun
topology subnet
Push "topology subnet"
ifconfig 10.8.1.1 255.255.255.0
Push "route-gateway 10.8.1.1"
port 443
proto tcp-server
Push "redirect-gateway def1 bypass-dhcp"
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
tls-crypt tc.key
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
client-config-dir /etc/openvpn/ccd/
management localhost 7505
/ etc/openvpn/ccd/client:
ifconfig-Push 10.8.1.2 255.255.255.0
iptablesルール:
-P FORWARD DROP
-A FORWARD -d 10.8.1.2/32 -g client
-A FORWARD -s 10.8.1.2/32 -g client
-A client -m quota --quota 10000000000 -j ACCEPT
client.ovpn:
client
dev tun
remote-cert-tls server
cipher AES-256-CBC
pull
resolv-retry infinite
remote xyz.dynu.net 443 tcp-client
nobind
<ca> ... </ca>
<cert> ... </cert>
<key> ... </key>
<tls-crypt> ... </tls-crypt>
クライアントには、Windows、Linux、およびAndroidユーザーが含まれます。
私の質問は:
client
が(IPアドレスとルートを手動で構成することにより)IPを使用することは可能ですか10.8.1.3
の代わりに 10.8.1.2
どちらがサーバーからプッシュされましたか?嫌いですtopology net30
古くなっており、クライアント用のIPプールが小さいためです。
同様の質問がここで行われます: openvpnクライアントがタップデバイスのIPを変更できないようにする しかし、それはtun
デバイスには当てはまりません。
古いスレッド ミッシングリンククライアントにifconfig-Pushを受け入れるよう強制する 状態:
特定のクライアントからパケットを受信すると(OpenVPNサーバー)、リバースパスチェックを実行して、送信元IPアドレスに送信していた場合、そのクライアントに送信することを確認します。そうでない場合は、パケットをドロップします。
したがって、クライアントが別のIPアドレスを選択した場合、パケットは通過しません。
この動作はどこかに文書化されていますか?これは最新のOpenVPNリリース(2.4.6)にも当てはまりますか?
あなたが投稿した古いスレッドのニールブラウンからの引用の後に、ソースコードへの参照が続きます。
Multi.cの1605行目のコメントと周囲のコードを参照してください。
彼は現在 行2569 にあるコメントを参照していたと思います:
/* make sure that source address is associated with this client */
後で、行2580と2690で、これが次のログメッセージになる可能性があることがわかります。
"マルチ:クライアント[%s]からの不正な送信元アドレス、パケットがドロップされました"
ですから、それは今日でも当てはまると思います。
将来の参考のために、「今日」とはバージョン2.4.7を指します。
編集:
今日はテスト用のOpenVPNサーバーをセットアップしました。また、仮想インターフェースからのすべての着信パケットをカウントするルールをマシンのファイアウォールに設定しました。クライアントから接続した後、サーバーから到達可能な別のアドレスにpingを実行でき、カウンターが増加していました(存在しないホストの場合でも)。次に、クライアントインターフェイスのアドレスを変更しました。
ip a add 192.168.1.3/24 dev tun0
ip a del 192.168.1.2/24 dev tun0
そのインターフェイスを介して何もpingできなくなったため、カウンターが増加していませんでした。クライアントで冗長性を5に設定すると、送信されたpingパケットごとにrW
が返されるため、クライアントはまだトンネルを介してパケットを送信しているようです。 r
は、tun
インターフェースから受信したパケット(openvpn
プロセスの観点から)を表し、W
は、カプセル化されてサーバーに送信されたパケットです。 (通常、応答があった場合はRw
も取得します。)これは、パケットがサーバー側でドロップされたことを示しています。いいね。
サーバーopenvpn
のログにパケットがドロップされているのを見ませんでしたが、これはおそらく、冗長性が3に設定されていて、 this 、D_MULTI_DROPPED
は4以上でのみ表示されます。
次に、アドレスを元の割り当てに戻しました(接続を再起動せずに)。
ip a add 192.168.1.2/24 dev tun0
ip a del 192.168.1.3/24 dev tun0
そして、すべてが再び機能し、カウンターが増加し、既存のホストが応答していました。