OpenVPN は接続しているがインターネットにアクセスできない

OpenVPN は接続しているがインターネットにアクセスできない

OpenVPN 接続が機能しない理由がわかりません。接続時には正常に機能しているようです。サーバーに接続できますが、接続すると VPN 経由でインターネットを使用できなくなります。

これはDebian上で動作するVPSサーバーです

これが私のopenvpn server.confファイルです

port 1194

proto udp

dev tun

ca ca.crt
cert server.crt
key server.key  # This file should be kept secret

dh dh2048.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "redirect-gateway def1"

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

keepalive 10 120

comp-lzo

user nobody
group nogroup

persist-key
persist-tun

status openvpn-status.log

log         openvpn.log

verb 6

mute 20

そしてこれが私のclient.confファイルです

client

dev tun

proto udp

remote server_ip 1194

resolv-retry infinite

nobind

persist-key
persist-tun

ca ca.crt
cert client.crt
key client.key

ns-cert-type server

comp-lzo

verb 3

remote-cert-tls server

接続とルートを受け入れるためのファイアウォールルールも追加しましたが、奇妙なことに、いくつかのルールが複数回表示されます。これが私のiptables保存ファイルです。

# Generated by iptables-save v1.4.8 on Sun Dec 22 04:36:18 2013
*nat
:PREROUTING ACCEPT [53:9749]
:POSTROUTING ACCEPT [9:675]
:OUTPUT ACCEPT [9:675]
-A PREROUTING -d server_ip/32 -p udp -m udp --dport 53 -j REDIRECT --to-ports 1194 
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source server_ip 
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 
COMMIT
# Completed on Sun Dec 22 04:36:18 2013
# Generated by iptables-save v1.4.8 on Sun Dec 22 04:36:18 2013
*filter
:INPUT ACCEPT [946:112417]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [824:172939]
-A INPUT -i tun0 -p tcp -m tcp --dport 1194 -j ACCEPT 
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -s 10.8.0.0/24 -j ACCEPT 
-A FORWARD -j REJECT --reject-with icmp-port-unreachable 
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -s 10.8.0.0/24 -j ACCEPT 
-A FORWARD -j REJECT --reject-with icmp-port-unreachable 
-A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT 
COMMIT
# Completed on Sun Dec 22 04:36:18 2013

また、/etc/sysctl.confをチェックして、

net.ipv4.ip_forward=1

私も持っています

net.ipv6.conf.all.forwarding=1

そこで、Linux PC と Virtualbox XP で OpenVPN 接続を試してみましたが、両方とも接続はできましたが、接続後はどちらもインターネットにアクセスできませんでした。

最も奇妙なのは、traceroute を実行すると VPN 経由の接続が表示されることです。

例えば、traceroute google.comを実行します

1 my ip from vpn connection
2 openvpn server ip
3 ...
4 ...
5 ... few hops between server to google
6 and finally google server ip

したがって、traceroute は接続が VPN を経由していることを示し、また、ping を実行すると、ping が約 20 ミリ秒のときに VPN に接続していないときの ping が 100 ミリ秒に増加します。

しかし、どのプログラム (Firefox、Chrome、iexplorer) でもインターネットを閲覧しようとすると、何も表示されません。何も読み込まれず、接続がタイムアウトします。

サーバーが遅いためにページが読み込まれないわけではありません。速度テストではサーバー上の接続速度が約 70 メガビットと表示され、私の接続速度は 6 メガビットです。

また、cloudnymous などの他の VPN に接続しようとすると、すべて正常に動作します。これは、私の openvpn 設定に問題があるだけです。

編集: 結局、多くの設定をいじくり回した後、ようやく動作するようになったと思いましたが、最終的に VPN に接続してそこからインターネットに接続できるようになりました。

最後にもう 1 つ問題があります。Linux を使用しているため、ここでは機能しないプログラムがいくつかあります。Windows XP をインストールした VirtualBox を使用していますが、VirtualBox で VPN に接続すると、インターネットを閲覧できます。ただし、どのプログラムもインターネットに接続できません。また、VPN 接続でインターネットが時々切断されますが、インターネット接続やサーバー接続の問題ではありません。VPN 経由でインターネットが切断されている間も、PuTTY で SSH 経由でサーバーに接続してさまざまな操作を実行できます。

答え1

マスカレードは VPS では機能しません。iptables Source NAT代わりに以下を使用する必要があります。

iptables -t nat -A POSTROUTING -s 10.x.x.x/xx -j SNAT --to-source y.y.y.y

x.x.x.x/xVPN サブネット -y.y.y.yサーバー出力インターフェイスの IP アドレスです。

答え2

/etc/default/ufwサーバーに が になっていることを確認してDEFAULT_FORWARD_POLICY="ACCEPT"から"DROP" ファイアウォールを再起動してください

sudo ufw disable
sudo ufw enable

答え3

ルーターを変更するまでは OpenVPN が正常に動作していたのに、同様の問題が発生しました。必要なポートを開いていたにもかかわらず、ルーターのファイアウォールが原因だと疑いました。しかし、rc.local を確認すると、最初に構成したときに、iptables 行が次のように、予想していた $MY_IP 変数ではなく、実際の IP アドレスで設定されていたことがわかりました。

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to 192.168.0.15

それよりも:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to $MY_IP

問題は、ルーターを変更してサーバーに別の IP を割り当てたことです。新しい IP を予約しただけで、すべてが機能すると思っていました。

以前と同じ IP をサーバーに予約しておけば、頭を悩ませる手間を大幅に省けたはずです。

関連情報