Debianマシンでは、openVPNサーバーへの接続に問題がありました。
インターフェイスが追加され、10.130.xx IPが割り当てられるという意味でのみ、接続を確立できましたが、VPNを通過するトラフィックを取得できませんでした。すべてのトラフィックは依然として元のパブリックIPアドレスを経由します。
root@vps2:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
92.222.32.0 0.0.0.0 255.255.255.0 U 0 0 0 venet0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo
92.222.32.42
root@vps2:~# service openvpn start
[ ok ] Starting virtual private network daemon: myvpn.
root@vps2:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.130.3.137 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
92.222.32.0 0.0.0.0 255.255.255.0 U 0 0 0 venet0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo
92.222.32.42
root@vps2:~#
syslogでメッセージを確認できましたNOTE: unable to redirect default gateway -- Cannot read current default gateway from system
。そして、いくつかの検索を行った結果、デフォルトゲートウェイが明示的に設定されていないことが原因であることがわかりました。リモートVPNは、明示的にデフォルトゲートウェイセットを見つけることだけを期待しているのではない、ある種のクライアントスクリプトを使用していると思います。
デフォルトゲートウェイを明示的に設定する2つの方法を試しました。そして、両方とも機能します!
最初に、元のパブリックIPアドレスをデフォルトゲートウェイとして設定してみました。
route add default gw 92.222.32.42
root@vps2:~# route add default gw 92.222.32.42
root@vps2:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
92.222.32.0 0.0.0.0 255.255.255.0 U 0 0 0 venet0
0.0.0.0 92.222.32.42 0.0.0.0 UG 0 0 0 venet0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
root@vps2:~# service openvpn start
[ ok ] Starting virtual private network daemon: myvpn.
root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo
217.23.15.239
root@vps2:~#
しかし、デフォルトのゲートウェイとして元のパブリックIPを使用するのはなぜですか?知りません。そのため、ランダムトレースルートからの最初のホップをデフォルトゲートウェイとして設定することも試みました。そしてまた働いた:
root@vps2:~# traceroute foo.com
traceroute to foo.com (121.232.122.233), 30 hops max, 60 byte packets
1 49.ip-92-222-50.eu (92.222.50.49) 0.039 ms 0.011 ms 0.012 ms
2 [......... I stop the traceroute when I see the first hop]
^C
root@vps2:~# route add default gw 92.222.50.49
root@vps2:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
92.222.32.0 0.0.0.0 255.255.255.0 U 0 0 0 venet0
0.0.0.0 92.222.50.49 0.0.0.0 UG 0 0 0 venet0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
root@vps2:~# service openvpn start
[ ok ] Starting virtual private network daemon: myvpn.
root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo
217.23.15.239
root@vps2:~#
やった!私はこれを自分で手に入れました。
これで、VPNに接続した後、ルーティングが自動的に変更されます。これは素晴らしいことですが、今では元のパブリックIPアドレスを介したすべての接続が失われ、SSH接続が切断され、Webサーバーにアクセスできなくなり、提供している他のサービスさえもなくなりました。これは、すべての着信接続に応答がVPN経由でルーティングされているためだと思います。同じIPからの応答を取得するために、元のパブリックIPを介して着信するすべての接続を確認したいです。また、VPNは、サーバーが外の世界に向けて開始する接続にのみ使用されます。私はまだこの部分を理解していません。
これは、VPNに接続した後のルーティングの様子です。
root@vps2:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.130.0.1 10.130.3.73 255.255.255.255 UGH 0 0 0 tun0
10.130.3.73 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
217.23.15.239 92.222.32.42 255.255.255.255 UGH 0 0 0 venet0
92.222.32.0 0.0.0.0 255.255.255.0 U 0 0 0 venet0
0.0.0.0 10.130.3.73 128.0.0.0 UG 0 0 0 tun0
128.0.0.0 10.130.3.73 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 92.222.32.42 0.0.0.0 UG 0 0 0 venet0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
root@vps2:~#
だから私の質問は:
両方の方法が機能したため、デフォルトゲートウェイとして何を使用する必要がありますか?私の元のパブリックIPまたはtracerouteの最初のホップ?それともまったく違うものですか?
どうすれば自動化できますか?起動時にゲートウェイが自動的に設定されますか?つまり、サーバーはブート時にデフォルトゲートウェイが設定されているかどうかを確認し、設定されていない場合はパブリックIPまたはtracerouteの最初のホップをデフォルトゲートウェイとして設定します...
そして、ついにopenVPNに接続した後、元のパブリックIPアドレスを介して接続が失われないようにしながら、すべての発信接続でVPNを使用する方法を教えてください。