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:~#
マイシステムログで注:デフォルトゲートウェイをリダイレクトできません - システムは現在デフォルトゲートウェイを読み取ることができないというメッセージを表示できます。検索してみると、デフォルトゲートウェイが明示的に設定されていないためであることがわかりました。リモート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またはトラッキングルートの最初のホップはありますか?それとも全く違うのでしょうか?
起動時にゲートウェイが自動的に設定されるように自動化するにはどうすればよいですか?つまり、起動時にサーバーはデフォルトゲートウェイが設定されていることを確認し、そうでない場合は、パブリックIPまたはトレースパスの最初のホップをデフォルトゲートウェイに設定します。
最後に、openVPNに接続した後に元のパブリックIPアドレスを介して接続が切断されるのを防ぎながら、すべての発信接続がVPNを使用できるようにするにはどうすればよいですか?
答え1
最初から始めて、順番に問題を解決してください。
接続を確立できません。
接続が確立され、IPを取得できますが、デフォルトゲートウェイが確立されていないため、VPN経由でトラフィックを取得できません[...]
接続のリモート側でpingを実行できない場合は、デフォルトパスを変更するよりも重要な問題があります。潜在的なルーティングの問題を調べる前に、リモート側にpingを送信できることを確認してください。クライアント構成ファイルのおおよその内容が含まれていないため、特定のコマンドを発行できません。
デフォルトゲートウェイを変更するには?
デフォルトゲートウェイを直接変更しないでください。 VPN 接続を介してすべてのトラフィックをルーティングするには、次を使用します。
redirect-gateway def1
構成パラメータOpenVPN HOWTOで説明されているとおりです。起動時にVPNを起動する方法は?
これもOpenVPN HOWTOで説明されています。適切な設定ファイルを作成し、
/etc/openvpn
Debian派生システムで編集して/etc/default/openvpn
自動起動を有効にします。他のインターネット接続が切断されない方法
最後にopenVPNに接続したら、デフォルトのゲートウェイをopenVPNを使用するように変更します。ただし、既存の接続(SSH接続など)が失われ、インターネットを介してコンピュータにアクセスできなくなります。この行動を止めることはできますか?
すべてのトラフィックをVPN経由でルーティングする場合は、一部のトラフィックをインターネット経由でルーティングすることを選択することはできません。 VPNを介して「すべての」トラフィックをルーティングする基準を再検討してください。たとえば、「HTTP / HTTPSトラフィックのみ」、「SSHを除くすべてのトラフィック」になりますか?
答え2
あなたのパスのためにvenet
OpenVZのようなものを実行していると思いますか?
その場合は、ハイパーバイザーにトンモジュールをロードし、ゲストがそれを使用できるようにする必要があるかもしれません。 OpenVZを使用すると仮定すると、次のようになります。
vz# modprobe tun && echo tun >>/etc/modules
vz# vzctl set $CTID --devnodes net/tun:rw --capability net_admin:on --save