多分誰かが私を助けることができます:
現時点では、仮想マシン上の商用VPNプロバイダーへのフェイルセーフVPN接続を構成しようとしています。これは、ルーターがIPv4 puplicアドレスをリセットするまで(数日ごとに)正常に機能しています。次に、VMのVPNクライアントはVPNサーバーに再接続できません。これは、DNSサーバーに接続できないためです。これは、私のiptables設定が原因です(私の想定です)。
私のセットアップ:
VMはローカルネットワークに仮想IPアドレスを持っています。VMにはプロキシサーバーが実行されています(squid)。したがって、すべてのクライアント(ローカルネットワーク)アプリケーションは、VM)のVPN接続を使用してインターネットにアクセスできます。
私はVMでopenvpn2.2.1-8 + deb7u3、squid 2.7.STABLE9-4.1 + deb7u1、iptables1.4.14-3.1でDebian7.8を使用しています。
構成:
openvpn:
client
dev tun
proto udp
remote urlofvpnserver.com 3478
cipher AES-128-CBC
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ca TrustedRoot.pem
verb 3
auth-user-pass /root/.secretfile
reneg-sec 0
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
iptables:
*filter
:INPUT DROP [6:1984]
:FORWARD DROP [0:0]
:OUTPUT DROP [177:11271]
//local communication
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
//accept local network traffic
-A INPUT -s 192.168.2.0/24 -j ACCEPT
-A OUTPUT -d 192.168.2.0/24 -j ACCEPT
//allow connections to the VPN servers different IP ranges
-A OUTPUT -d hiddenvpnwebsite -j ACCEPT
-A INPUT -s hidden -j ACCEPT
-A INPUT -s hidden -j ACCEPT
-A INPUT -s hidden -j ACCEPT
-A INPUT -s hidden -j ACCEPT
-A INPUT -s hidden -j ACCEPT
-A INPUT -s hidden -j ACCEPT
-A INPUT -s hidden -j ACCEPT
-A INPUT -s hidden -j ACCEPT
-A INPUT -s hidden -j ACCEPT
-A INPUT -s hidden -j ACCEPT
-A OUTPUT -d hidden -j ACCEPT
-A OUTPUT -d hidden -j ACCEPT
-A OUTPUT -d hidden -j ACCEPT
-A OUTPUT -d hidden -j ACCEPT
-A OUTPUT -d hidden -j ACCEPT
-A OUTPUT -d hidden -j ACCEPT
-A OUTPUT -d hidden -j ACCEPT
-A OUTPUT -d hidden -j ACCEPT
-A OUTPUT -d hidden -j ACCEPT
-A OUTPUT -d hidden -j ACCEPT
//squid port
-A INPUT -i eth1 -p tcp -m tcp --dport 3128 -j ACCEPT
//DNS servers
-A INPUT -s 208.67.222.222/32 -j ACCEPT
-A OUTPUT -d 208.67.222.222/32 -j ACCEPT
//allow traffic on tun
-A INPUT -i tun+ -j ACCEPT
-A OUTPUT -o tun+ -j ACCEPT
//open openvpn ports
-A OUTPUT -p udp -m udp --dport 1194 -j ACCEPT
COMMIT
/ etc/network/interfaces
auto lo eth0
iface lo inet loopback
iface eth0 inet static
address 192.168.2.122
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers 208.67.222.222 208.67.220.220 8.8.8.8
dns-search 208.67.222.222
/etc/resolv.conf
nameserver 208.67.222.222
nameserver 208.67.220.220
/var/log/openvpn/openvpn.log
Wed Jan 28 03:59:46 2015 OpenVPN 2.2.1 x86_64-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [eurephia] [MH] [PF_INET6] [IPv6 payload 20110424-2 (2.2RC2)] built on Dec 1 2014
Wed Jan 28 03:59:46 2015 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Wed Jan 28 03:59:46 2015 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Wed Jan 28 03:59:46 2015 Control Channel MTU parms [ L:1557 D:138 EF:38 EB:0 ET:0 EL:0 ]
Wed Jan 28 03:59:46 2015 Socket Buffers: R=[229376->131072] S=[229376->131072]
Wed Jan 28 03:59:47 2015 Data Channel MTU parms [ L:1557 D:1450 EF:57 EB:4 ET:0 EL:0 ]
Wed Jan 28 03:59:47 2015 Local Options hash (VER=V4): '8326dbaa'
Wed Jan 28 03:59:47 2015 Expected Remote Options hash (VER=V4): 'b7f67de4'
Wed Jan 28 03:59:47 2015 UDPv4 link local: [undef]
Wed Jan 28 03:59:47 2015 UDPv4 link remote: [AF_INET]one_of_the_hidden_vpn_ips:3478
Wed Jan 28 03:59:47 2015 TLS: Initial packet from [AF_INET]one_of_the_hidden_vpn_ips:3478, sid=68e25514 fb7384de
Wed Jan 28 03:59:47 2015 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Wed Jan 28 03:59:47 2015 VERIFY OK: depth=2, hidden_CA
Wed Jan 28 03:59:47 2015 VERIFY OK: depth=1, hidden_CA
Wed Jan 28 03:59:47 2015 VERIFY OK: depth=0, hidden_CA .hidden_vpn_url
Wed Jan 28 03:59:47 2015 Data Channel Encrypt: Cipher 'AES-128-CBC' initialized with 128 bit key
Wed Jan 28 03:59:47 2015 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Jan 28 03:59:47 2015 Data Channel Encrypt: Cipher 'AES-128-CBC' initialized with 128 bit key
Wed Jan 28 03:59:47 2015 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Jan 28 03:59:47 2015 Data Channel Decrypt: Cipher 'AES-128-CBC' initialized with 128 bit key
Wed Jan 28 03:59:47 2015 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Jan 28 03:59:47 2015 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 4096 bit RSA
Wed Jan 28 03:59:47 2015 [_.hidden_vpn_url] Peer Connection Initiated with [AF_INET]hidden_vpn_ip:3478
Wed Jan 28 03:59:49 2015 SENT CONTROL [_.hidden_vpn_url]: 'Push_REQUEST' (status=1)
Wed Jan 28 03:59:49 2015 Push: Received control message: 'Push_REPLY,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,topology subnet,ping 5,ping-restart 15,explicit-exit-notify,route-gateway 10.3.$
Wed Jan 28 03:59:49 2015 OPTIONS IMPORT: timers and/or timeouts modified
Wed Jan 28 03:59:49 2015 OPTIONS IMPORT: explicit notify parm(s) modified
Wed Jan 28 03:59:49 2015 OPTIONS IMPORT: --ifconfig/up options modified
Wed Jan 28 03:59:49 2015 OPTIONS IMPORT: route options modified
Wed Jan 28 03:59:49 2015 OPTIONS IMPORT: route-related options modified
Wed Jan 28 03:59:49 2015 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Wed Jan 28 03:59:49 2015 ROUTE default_gateway=192.168.2.1
Wed Jan 28 03:59:49 2015 TUN/TAP device tun0 opened
Wed Jan 28 03:59:49 2015 TUN/TAP TX queue length set to 100
Wed Jan 28 03:59:49 2015 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Wed Jan 28 03:59:49 2015 /sbin/ifconfig tun0 10.3.134.57 netmask 255.255.255.0 mtu 1500 broadcast 10.3.134.255
Wed Jan 28 03:59:49 2015 /sbin/route add -net hidden_vpn_ip netmask 255.255.255.255 gw 192.168.2.1
Wed Jan 28 03:59:49 2015 /sbin/route del -net 0.0.0.0 netmask 0.0.0.0
Wed Jan 28 03:59:49 2015 /sbin/route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.3.134.57
Wed Jan 28 03:59:49 2015 Initialization Sequence Completed
Comment: now everything works, until my router disconnects:
Wed Jan 28 05:33:48 2015 [_.hidden_vpn_url] Inactivity timeout (--ping-restart), restarting
Wed Jan 28 05:33:48 2015 TCP/UDP: Closing socket
Wed Jan 28 05:33:48 2015 SIGUSR1[soft,ping-restart] received, process restarting
Wed Jan 28 05:33:48 2015 Restart pause, 2 second(s)
Wed Jan 28 05:33:50 2015 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Wed Jan 28 05:33:50 2015 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Wed Jan 28 05:33:50 2015 Re-using SSL/TLS context
Wed Jan 28 05:33:50 2015 Control Channel MTU parms [ L:1557 D:138 EF:38 EB:0 ET:0 EL:0 ]
Wed Jan 28 05:33:50 2015 Socket Buffers: R=[229376->131072] S=[229376->131072]
Wed Jan 28 05:35:10 2015 RESOLVE: Cannot resolve Host address: hidden_vpn_url: [Host_NOT_FOUND] The specified Host is unknown.
Wed Jan 28 05:35:10 2015 Data Channel MTU parms [ L:1557 D:1450 EF:57 EB:4 ET:0 EL:0 ]
Wed Jan 28 05:35:10 2015 Local Options hash (VER=V4): '8326dbaa'
Wed Jan 28 05:35:10 2015 Expected Remote Options hash (VER=V4): 'b7f67de4'
Wed Jan 28 05:36:30 2015 RESOLVE: Cannot resolve Host address: hidden_vpn_url: [Host_NOT_FOUND] The specified Host is unknown.
Wed Jan 28 05:37:55 2015 RESOLVE: Cannot resolve Host address: hidden_vpn_url: [Host_NOT_FOUND] The specified Host is unknown.
Wed Jan 28 05:39:20 2015 RESOLVE: Cannot resolve Host address: hidden_vpn_url: [Host_NOT_FOUND] The specified Host is unknown.
Wed Jan 28 05:40:45 2015 RESOLVE: Cannot resolve Host address: hidden_vpn_url: [Host_NOT_FOUND] The specified Host is unknown.
問題は次のとおりだと思います。openvpnconfigで、IPアドレスの代わりにvpnプロバイダーのURLをremote urlofvpnserver.com3478で設定する必要があります。
これをVPNプロバイダーのIPアドレスに変更しようとしました。ただし、複数のIPアドレスと範囲を使用します。サーバー側では、最高の接続速度を保証するために、それほど過負荷ではないサーバーに接続すると思います。しかし、urlofvpnserver.comをIPアドレスの1つに変更すると、接続は50%の時間しか機能しません。 (一部のVPNサーバースクリプトがこれをブロックしている可能性があります)
したがって、VPNへの接続が失われた後、VMはurlofvpnserver.comのIPアドレスを解決しようとしますDNSサーバーに問い合わせることによって。しかし、VMはVPN接続を使用することを余儀なくされている可能性があるため、DNSサーバーに接続できませんか?
設定ファイルを編集してください。私は少し妄想的です。 iptablesとネットワークプロトコルを学び始めたところです。だから私は完全に間違っているかもしれません。
誰かがアイデアを持っています、これを修正する方法は?したがって、VPNクライアントはルーターDCまたはインターネット接続の問題が発生した後、再接続できますか?誰かが必要とする場合は、より具体的な情報を提供させていただきます。
これにはopenvpnにバグがあるようですが、同様の問題があり、openvpnトンネルがない場合にopenvpnサービスを再起動する単純なサービスを作成することで解決しました。私のニーズには問題なく動作し、接続の安定性に問題はありません。
これがサービスのサンプルスクリプトです。
#!/bin/bash
while true
do
sleep 50
if ifconfig | grep tun0;
then
echo tunnel is available
else
echo "no tunnel available , going to restart openvpn"
systemctl restart "[email protected]"
fi
done