VPNの設定が完了したばかりで、Googleは私のIPがVPNのIPであることを示しているので、これは問題なく機能します。ただし、SSHを介してVPNサーバーにログインすると、最後のログインが(VPNを使用していない)IPのログインであることが示されます(複数回のログイン/ログアウトの後でも)。これにより、すべてのデータがVPNを通過しているわけではないと私は信じています。
私のserver.conf
次のディレクティブがあります。
Push "redirect-gateway def1 bypass-dhcp"
Push "dhcp-option DNS 8.8.8.8"
Push "dhcp-option DNS 8.8.4.4"
そして、iptables
は次のように設定されています。
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
これを修正する方法はありますか?それ
これは100%期待される動作です。 VPN接続を介してすべてのトラフィックをルーティングするために、仮想インターフェイスをターゲットとしてデフォルトルートが追加されます。ただし、これには問題があります。VPN接続自体を伝送するために使用されるネットワークパケットもVPNインターフェイスにルーティングされ、一種のルーティングループが作成されます。これを解決するために、VPNサーバーへの静的ホストルートが、通常のインターネットギャットウェイをターゲットとして使用して追加されます。このようにして、OpenVPNによって作成されたパケットは、インターネット経由でOpenVPNサーバーに移動し、他のすべてのパケットはVPNリンク経由で送信されます。
ホストルートがあるため、VPNサーバーのインターネットアドレスにSSHで接続しようとすると、接続は通常のインターネット接続を経由し、who
またはlast
。一方、VPNトンネルのもう一方の端にSSHで接続すると、接続はクライアントのトンネルの端に割り当てられたIPアドレスから発信されているように見えます。
たとえば、これは典型的なOpenVPN仮想インターフェースの構成方法です。
$ ifconfig
...
tun0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.10.11.9 --> 10.10.11.10 netmask 0xffffffff
open (pid 48658)
この場合のVPNトンネルのリモートエンドは10.10.11.10
。これはBSDスタイルのifconfig
出力(実際にはOS X)です。 Linuxでの出力は少し異なります。そしてこれは対応するホストルートです(これもBSD形式です):
$ netstat -rn
Destination Gateway Flags Refs Use Netif Expire
0/1 10.10.11.9 UGSc 0 0 tun0
default 10.0.1.1 UGSc 22 0 en0
10.0.1/24 link#4 UCS 1 0 en0
10.10.11/24 10.10.11.9 UGSc 0 0 tun0
10.10.11.9 10.10.11.10 UHr 5 0 tun0
yy.yy.yy.yy/32 10.0.1.1 UGSc 1 0 en0
最初のルートはすべてのトラフィックを転送します(ローカルネットワークに送信されるルートを除く10.0.1/24
)からtun0
インターフェース、つまりOpenVPNへ。 OpenVPNサーバーへの静的ルートは最後の行にあります。 10.0.1.1
この場合はインターネットゲートウェイです。