web-dev-qa-db-ja.com

VPNが再接続しない(ホストアドレスを解決できない)

多分誰かが私を助けることができます:

現時点では、仮想マシン上の商用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またはインターネット接続の問題が発生した後、再接続できますか?誰かが必要とする場合は、より具体的な情報を提供させていただきます。

4
virtualusermob

これには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
2
Menua