ゲートウェイが設定されていないため、OpenVPNが機能しない

ゲートウェイが設定されていないため、OpenVPNが機能しない

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

最初から始めて、順番に問題を解決してください。

  1. 接続を確立できません。

    接続が確立され、IPを取得できますが、デフォルトゲートウェイが確立されていないため、VPN経由でトラフィックを取得できません[...]

    接続のリモート側でpingを実行できない場合は、デフォルトパスを変更するよりも重要な問題があります。潜在的なルーティングの問題を調べる前に、リモート側にpingを送信できることを確認してください。クライアント構成ファイルのおおよその内容が含まれていないため、特定のコマンドを発行できません。

  2. デフォルトゲートウェイを変更するには?

    デフォルトゲートウェイを直接変更しないでください。 VPN 接続を介してすべてのトラフィックをルーティングするには、次を使用します。redirect-gateway def1構成パラメータOpenVPN HOWTOで説明されているとおりです。

  3. 起動時にVPNを起動する方法は?

    これもOpenVPN HOWTOで説明されています。適切な設定ファイルを作成し、/etc/openvpnDebian派生システムで編集して/etc/default/openvpn自動起動を有効にします。

  4. 他のインターネット接続が切断されない方法

    最後にopenVPNに接続したら、デフォルトのゲートウェイをopenVPNを使用するように変更します。ただし、既存の接続(SSH接続など)が失われ、インターネットを介してコンピュータにアクセスできなくなります。この行動を止めることはできますか?

    すべてのトラフィックをVPN経由でルーティングする場合は、一部のトラフィックをインターネット経由でルーティングすることを選択することはできません。 VPNを介して「すべての」トラフィックをルーティングする基準を再検討してください。たとえば、「HTTP / HTTPSトラフィックのみ」、「SSHを除くすべてのトラフィック」になりますか?

おすすめ記事