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/x
VPN サブネット -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 をサーバーに予約しておけば、頭を悩ませる手間を大幅に省けたはずです。