2

может кто-нибудь может мне помочь

В данный момент я пытаюсь настроить отказоустойчивое VPN-соединение с коммерческим VPN-провайдером на виртуальной машине. Это работает нормально, пока мой маршрутизатор не хочет сбросить мой IPv4-адрес ученика (каждые несколько дней). Тогда VPN-клиент на виртуальной машине не может переподключиться к VPN-серверу, поскольку он не может подключиться к DNS-серверу из-за моих настроек iptables (только мое предположение).

Моя настройка:

Виртуальная машина имеет виртуальный IP-адрес в моей локальной сети. На ВМ работает прокси-сервер (squid). Таким образом, все мои клиенты (в моей локальной сети) приложения могут использовать VPN-соединение на виртуальной машине для доступа в Интернет.

Я использую Debian 7.8 с openvpn 2.2.1-8+deb7u3, squid 2.7.STABLE9-4.1+deb7u1 и iptables 1.4.14-3.1 на моей виртуальной машине.

Configs:

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

/ и т.д. / сеть / интерфейсы


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.

Я предполагаю, что проблема заключается в следующем: В конфигурации openvpn я должен установить URL-адрес провайдера vpn вместо IP-адреса с: remote urlofvpnserver.com 3478.

Я попытался изменить это на IP-адрес провайдера vpn. Но они используют более одного IP-адреса и диапазона. Я думаю, что на стороне сервера я буду подключен к серверу, который не слишком перегружен, чтобы гарантировать лучшую скорость соединения. Но если я изменю urlofvpnserver.com на один из их IP-адресов, соединение будет работать только в 50% случаев. (некоторые сценарии сервера vpn могут блокировать это)

Поэтому после того, как я потерял соединение с vpn, виртуальная машина пытается разрешить IP-адрес urlofvpnserver.com , запрашивая DNS-сервер. Но виртуальная машина не может подключиться к DNS-серверу, потому что может быть вынуждена использовать VPN-подключение?

Sry для редактирования моих файлов конфигурации. Я просто немного параноик. Я только начал изучать iptables и сетевые протоколы. Так что я могу быть совершенно не прав.

У кого-нибудь есть идея, как это исправить? Таким образом, VPN-клиент может переподключиться после проблем с маршрутизатором или интернет-соединением? Я был бы рад предоставить более конкретную информацию, если кому-то это нужно.

1 ответ1

2

Похоже, что в 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 "openvpn@client.service"
  fi
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .