Перенаправление или маршрутизация всего трафика на OpenVPN на клиенте Mac OS X

Вопрос или проблема

Я настроил сервер OpenVPN (2.2.1) на виртуальной машине Ubuntu в облаке Amazon Elastic Compute. Сервер работает. Я установил OpenVPN (2.2.1) на клиенте Mac OS X (10.8.2) и использую бинарный файл openvpn2 для подключения (в отличие от других клиентов, таких как Tunnelblick или Viscosity). Я могу подключиться к серверу и успешно пинговать его или заходить по ssh через туннель.

Однако я не могу перенаправить весь интернет-трафик через VPN, даже если использую параметр push “redirect-gateway def1 bypass-dhcp” в конфигурациях server.conf. Когда я подключаюсь к серверу с этими конфигурациями, я получаю успешное соединение, но затем бесконечную серию сообщений об ошибках: “write UDPv4: No route to host (code=65)”. Похоже, что маршрутизация трафика нарушена, потому что я больше не могу ничего получить, даже сам сервер OpenVPN (например, пингуя 10.8.0.1).

Это выше моего понимания. Я нахожу мало помощи в интернете и не знаю, что пробовать дальше. Я не думаю, что это проблема пересылки трафика на сервере, поскольку, во-первых, я также позаботился об этом, и, во-вторых, я не могу даже пинговать сервер VPN локально через туннель (или пинговать что-либо еще в этом плане).

Спасибо за вашу помощь.

Вот файл server.conf:

port 1194
proto udp
dev tun
ca ca.crt
cert ec2-server.crt
key ec2-server.key # Этот файл должен храниться в секрете
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3

И файл client.conf:

client
dev tun
proto udp
remote servername.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert Toto5.crt
key Toto5.key
ns-cert-type server
comp-lzo
verb 3

Вот лог соединения с сообщениями об ошибках:

$ sudo openvpn2 --config client.conf
Ср Мар 13 22:58:22 2013 OpenVPN 2.2.1 x86_64-apple-darwin12.2.0 [SSL] [LZO2] [eurephia] собран 4 Марта 2013
Ср Мар 13 22:58:22 2013 ЗАМЕТКА: OpenVPN 2.1 требует '--script-security 2' или выше для вызова пользовательских скриптов или исполняемых файлов
Ср Мар 13 22:58:22 2013 Инициализация сжатия LZO
Ср Мар 13 22:58:22 2013 Параметры MTU канала управления [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
Ср Мар 13 22:58:22 2013 Буферы сокетов: R=[196724->65536] S=[9216->65536]
Ср Мар 13 22:58:22 2013 Параметры MTU канала передачи данных [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
Ср Мар 13 22:58:22 2013 Хеш локальных параметров (VER=V4): '41690919'
Ср Мар 13 22:58:22 2013 Ожидаемый хеш удаленных параметров (VER=V4): '530fdded'
Ср Мар 13 22:58:22 2013 Локальная ссылка UDPv4: [undef]
Ср Мар 13 22:58:22 2013 Удаленная ссылка UDPv4: 54.234.43.171:1194
Ср Мар 13 22:58:22 2013 TLS: Начальный пакет от 54.234.43.171:1194, sid=ffbaf343 d0c1a266
Ср Мар 13 22:58:22 2013 VERIFY OK: depth=1, /C=US/ST=CA/L=SanFrancisco/O=Fort-Funst ... ost.domain
Ср Мар 13 22:58:22 2013 VERIFY OK: nsCertType=SERVER
Ср Мар 13 22:58:22 2013 VERIFY OK: depth=0, /C=US/ST=CA/L=SanFrancisco/O=Fort-Funst ... ost.domain
Ср Мар 13 22:58:23 2013 Шифрование канала передачи данных: шифр 'BF-CBC' инициализирован с 128 битным ключом
Ср Мар 13 22:58:23 2013 Шифрование канала передачи данных: используется 160 битный хэш сообщения 'SHA1' для HMAC аутентификации
Ср Мар 13 22:58:23 2013 Дешифрование канала передачи данных: шифр 'BF-CBC' инициализирован с 128 битным ключом
Ср Мар 13 22:58:23 2013 Дешифрование канала передачи данных: используется 160 битный хэш сообщения 'SHA1' для HMAC аутентификации
Ср Мар 13 22:58:23 2013 Канал управления: TLSv1, шифр TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 битный RSA
Ср Мар 13 22:58:23 2013 [ec2-server] Установлено соединение с 54.234.43.171:1194
Ср Мар 13 22:58:25 2013 ОТПРАВЛЕНО УПРАВЛЕНИЕ [ec2-server]: 'PUSH_REQUEST' (status=1)
Ср Мар 13 22:58:25 2013 PUSH: Получено управляющее сообщение: 'PUSH_REPLY,route 10.8.0.0 255.255.255.0,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5'
Ср Мар 13 22:58:25 2013 ИМПОРТ ПАРАМЕТРОВ: таймеры и/или таймауты изменены
Ср Мар 13 22:58:25 2013 ИМПОРТ ПАРАМЕТРОВ: --ifconfig/up параметры изменены
Ср Мар 13 22:58:25 2013 ИМПОРТ ПАРАМЕТРОВ: параметры маршрута изменены
Ср Мар 13 22:58:25 2013 МАРШРУТ default_gateway=0.0.0.0
Ср Мар 13 22:58:25 2013 Устройство TUN/TAP /dev/tun0 открыто
Ср Мар 13 22:58:25 2013 /sbin/ifconfig tun0 delete
ifconfig: ioctl (SIOCDIFADDR): Невозможно назначить запрашиваемый адрес
Ср Мар 13 22:58:25 2013 ЗАМЕТКА: Попытка удалить существующий экземпляр tun/tap -- Нет проблем, если неудача
Ср Мар 13 22:58:25 2013 /sbin/ifconfig tun0 10.8.0.6 10.8.0.5 mtu 1500 netmask 255.255.255.255 up
Ср Мар 13 22:58:25 2013 /sbin/route add -net 10.8.0.0 10.8.0.5 255.255.255.0
добавить сеть 10.8.0.0: шлюз 10.8.0.5
Ср Мар 13 22:58:25 2013 Инициализация последовательности завершена
^CСр Мар 13 22:58:30 2013 event_wait : Прерывание системного вызова (code=4)
Ср Мар 13 22:58:30 2013 TCP/UDP: Закрытие сокета
Ср Мар 13 22:58:30 2013 /sbin/route delete -net 10.8.0.0 10.8.0.5 255.255.255.0
удалить сеть 10.8.0.0: шлюз 10.8.0.5
Ср Мар 13 22:58:30 2013 Закрытие интерфейса TUN/TAP
Ср Мар 13 22:58:30 2013 SIGINT[hard,] получено, процесс завершен
toto5:ttntec2 Dominic$ sudo openvpn2 --config client.conf --remote ec2-54-234-43-171.compute-1.amazonaws.com
Ср Мар 13 22:58:57 2013 OpenVPN 2.2.1 x86_64-apple-darwin12.2.0 [SSL] [LZO2] [eurephia] собран 4 Марта 2013
Ср Мар 13 22:58:57 2013 ЗАМЕТКА: OpenVPN 2.1 требует '--script-security 2' или выше для вызова пользовательских скриптов или исполняемых файлов
Ср Мар 13 22:58:57 2013 Инициализация сжатия LZO
Ср Мар 13 22:58:57 2013 Параметры MTU канала управления [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
Ср Мар 13 22:58:57 2013 Буферы сокетов: R=[196724->65536] S=[9216->65536]
Ср Мар 13 22:58:57 2013 Параметры MTU канала передачи данных [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
Ср Мар 13 22:58:57 2013 Хеш локальных параметров (VER=V4): '41690919'
Ср Мар 13 22:58:57 2013 Ожидаемый хеш удаленных параметров (VER=V4): '530fdded'
Ср Мар 13 22:58:57 2013 Локальная ссылка UDPv4: [undef]
Ср Мар 13 22:58:57 2013 Удаленная ссылка UDPv4: 54.234.43.171:1194
Ср Мар 13 22:58:57 2013 TLS: Начальный пакет от 54.234.43.171:1194, sid=a0d75468 ec26de14
Ср Мар 13 22:58:58 2013 VERIFY OK: depth=1, /C=US/ST=CA/L=SanFrancisco/O=Fort-Funst ... ost.domain
Ср Мар 13 22:58:58 2013 VERIFY OK: nsCertType=SERVER
Ср Мар 13 22:58:58 2013 VERIFY OK: depth=0, /C=US/ST=CA/L=SanFrancisco/O=Fort-Funst ... ost.domain
Ср Мар 13 22:58:58 2013 Шифрование канала передачи данных: шифр 'BF-CBC' инициализирован с 128 битным ключом
Ср Мар 13 22:58:58 2013 Шифрование канала передачи данных: используется 160 битный хэш сообщения 'SHA1' для HMAC аутентификации
Ср Мар 13 22:58:58 2013 Дешифрование канала передачи данных: шифр 'BF-CBC' инициализирован с 128 битным ключом
Ср Мар 13 22:58:58 2013 Дешифрование канала передачи данных: используется 160 битный хэш сообщения 'SHA1' для HMAC аутентификации
Ср Мар 13 22:58:58 2013 Канал управления: TLSv1, шифр TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 битный RSA
Ср Мар 13 22:58:58 2013 [ec2-server] Установлено соединение с 54.234.43.171:1194
Ср Мар 13 22:59:00 2013 ОТПРАВЛЕНО УПРАВЛЕНИЕ [ec2-server]: 'PUSH_REQUEST' (status=1)
Ср Мар 13 22:59:00 2013 PUSH: Получено управляющее сообщение: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,route 10.8.0.0 255.255.255.0,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5'
Ср Мар 13 22:59:00 2013 ИМПОРТ ПАРАМЕТРОВ: таймеры и/или таймауты изменены
Ср Мар 13 22:59:00 2013 ИМПОРТ ПАРАМЕТРОВ: --ifconfig/up параметры изменены
Ср Мар 13 22:59:00 2013 ИМПОРТ ПАРАМЕТРОВ: параметры маршрута изменены
Ср Мар 13 22:59:00 2013 МАРШРУТ default_gateway=0.0.0.0
Ср Мар 13 22:59:00 2013 Устройство TUN/TAP /dev/tun0 открыто
Ср Мар 13 22:59:00 2013 /sbin/ifconfig tun0 delete
ifconfig: ioctl (SIOCDIFADDR): Невозможно назначить запрашиваемый адрес
Ср Мар 13 22:59:00 2013 ЗАМЕТКА: Попытка удалить существующий экземпляр tun/tap -- Нет проблем, если неудача
Ср Мар 13 22:59:00 2013 /sbin/ifconfig tun0 10.8.0.6 10.8.0.5 mtu 1500 netmask 255.255.255.255 up
Ср Мар 13 22:59:00 2013 /sbin/route add -net 54.234.43.171 0.0.0.0 255.255.255.255
добавить сеть 54.234.43.171: шлюз 0.0.0.0
Ср Мар 13 22:59:00 2013 /sbin/route add -net 0.0.0.0 10.8.0.5 128.0.0.0
добавить сеть 0.0.0.0: шлюз 10.8.0.5
Ср Мар 13 22:59:00 2013 /sbin/route add -net 128.0.0.0 10.8.0.5 128.0.0.0
добавить сеть 128.0.0.0: шлюз 10.8.0.5
Ср Мар 13 22:59:00 2013 /sbin/route add -net 10.8.0.0 10.8.0.5 255.255.255.0
добавить сеть 10.8.0.0: шлюз 10.8.0.5
Ср Мар 13 22:59:00 2013 Инициализация последовательности завершена
Ср Мар 13 22:59:00 2013 write UDPv4: No route to host (code=65)
Ср Мар 13 22:59:00 2013 write UDPv4: No route to host (code=65)
Ср Мар 13 22:59:01 2013 write UDPv4: No route to host (code=65)
Ср Мар 13 22:59:01 2013 write UDPv4: No route to host (code=65)
Ср Мар 13 22:59:01 2013 write UDPv4: No route to host (code=65)
Ср Мар 13 22:59:02 2013 write UDPv4: No route to host (code=65)
Ср Мар 13 22:59:02 2013 write UDPv4: No route to host (code=65)
Ср Мар 13 22:59:02 2013 write UDPv4: No route to host (code=65)
Ср Мар 13 22:59:02 2013 write UDPv4: No route to host (code=65)
Ср Мар 13 22:59:02 2013 write UDPv4: No route to host (code=65)
...

Таблица маршрутизации после подключения БЕЗ параметра push redirect-gateway (весь трафик не перенаправляется на VPN, и все работает нормально, я могу пинговать или заходить по ssh на сервер OpenVPN и получать доступ ко всем другим ресурсам Интернета через мой шлюз по умолчанию):

Destination        Gateway            Flags        Refs      Use   Netif Expire
default            user148-1.wireless UGSc           50        0     en1
10.8/24            10.8.0.5           UGSc            2        7    tun0
10.8.0.5           10.8.0.6           UH              3        2    tun0
127                localhost          UCS             0        0     lo0
localhost          localhost          UH              6     6692     lo0
client.openvpn.net client.openvpn.net UH              3       18     lo0
142.1.148/22       link#5             UCS             2        0     en1
user148-1.wireless 0:90:b:27:10:71    UHLWIir        50        0     en1     76
user150-173.wirele localhost          UHS             0        0     lo0
142.1.151.255      ff:ff:ff:ff:ff:ff  UHLWbI          0        2     en1
169.254            link#5             UCS             1        0     en1
169.254.255.255    0:90:b:27:10:71    UHLSWi          0        0     en1     71

Таблица маршрутизации после подключения с включенной опцией push redirect-gateway, как в файле server.conf выше (весь интернет-трафик должен перенаправляться в туннель VPN, но ничего не работает, я не могу получить доступ к интернет-ресурсам вообще):

Destination        Gateway            Flags        Refs      Use   Netif Expire
0/1                10.8.0.5           UGSc            1        0    tun0
default            user148-1.wireless UGSc            7        0     en1
10.8/24            10.8.0.5           UGSc            0        0    tun0
10.8.0.5           10.8.0.6           UHr             6        0    tun0
54.234.43.171/32   0.0.0.0            UGSc            1        0     en1
127                localhost          UCS             0        0     lo0
localhost          localhost          UH              3     6698     lo0
client.openvpn.net client.openvpn.net UH              0       27     lo0
128.0/1            10.8.0.5           UGSc            2        0    tun0
142.1.148/22       link#5             UCS             1        0     en1
user148-1.wireless 0:90:b:27:10:71    UHLWIir         1        0     en1    833
user150-173.wirele localhost          UHS             0        0     lo0
169.254            link#5             UCS             1        0     en1
169.254.255.255    0:90:b:27:10:71    UHLSW           0        0     en1

Я думаю, что нашел проблему. Объяснения и возможные решения будут опубликованы здесь: https://forums.openvpn.net/post28560.html#p28560.

Ответ или решение

Перенаправление всего трафика через OpenVPN на клиенте Mac OS X

Установка и настройка OpenVPN может быть непростой задачей, особенно когда дело касается перенаправления всего интернет-трафика через VPN-туннель. В данном случае, мы имеем установленные OpenVPN сервер (на Ubuntu) и клиент (на Mac OS X), и столкнулись с проблемой, связанной с ошибками маршрутизации и невозможностью доступа к ресурсам.

Описание проблемы

На вашем Mac OS X клиенте установлен OpenVPN, и вы успешно подключаетесь к серверу. Однако после этого не удаётся перенаправить весь интернет-трафик через VPN. Использование директивы push "redirect-gateway def1 bypass-dhcp" в конфигурации сервера не решает проблему – происходит ошибка: write UDPv4: No route to host (code=65). Вы не можете получить доступ даже к самому серверу, находясь за туннелем.

Анализ конфигурации

  1. Конфигурационный файл сервера (server.conf):

    port 1194
    proto udp
    dev tun
    ca ca.crt
    cert ec2-server.crt
    key ec2-server.key
    dh dh1024.pem
    server 10.8.0.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    push "redirect-gateway def1 bypass-dhcp"
    client-to-client
    keepalive 10 120
    comp-lzo
    persist-key
    persist-tun
    status openvpn-status.log
    verb 3
  2. Конфигурационный файл клиента (client.conf):

    client
    dev tun
    proto udp
    remote servername.com 1194
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    ca ca.crt
    cert Toto5.crt
    key Toto5.key
    ns-cert-type server
    comp-lzo
    verb 3
  3. Логи подключения показывают, что сервер успешно предоставляет конфигурацию, и туннель корректно инициализируется. Однако в маршрутах по умолчанию отмечается, что шлюз по умолчанию равен 0.0.0.0, что является основной причиной ваших проблем с маршрутизацией.

Решение проблемы

Вот шаги, которые помогут вам обойти текущие неудобства и добиться успешного перенаправления всего трафика через OpenVPN:

  1. Проверка конфигурации маршрутизации:
    Убедитесь, что OpenVPN серверу разрешен пересылка пакетов. Для этого выполните команду:

    echo 1 > /proc/sys/net/ipv4/ip_forward

    И добавьте следующую строку в /etc/sysctl.conf для постоянного изменения:

    net.ipv4.ip_forward = 1
  2. Проверьте настройки iptables:
    Убедитесь, что у вас есть необходимые правила iptables, чтобы разрешить NAT (включение IP-переадресации):

    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

    Замените eth0 на ваш интерфейс, который используется для выхода в интернет.

  3. Корректировка маршрутов на клиенте:
    Убедитесь, что клиентский маршрут настроен правильно. В конфигурации клиента добавьте:

    route 0.0.0.0 0.0.0.0 10.8.0.5
  4. Тестирование соединения:
    После внесенных изменений, перезапустите сервер и клиент OpenVPN. После успешного подключения проверьте маршруты на клиенте с помощью команды netstat -rn. Убедитесь, что маршруты к сети 0.0.0.0 направляются через туннель.

  5. Тестирование доступа:
    После настройки, попробуйте получить доступ к Интернет-ресурсам, чтобы убедиться, что трафик действительно маршрутизируется через VPN. Вы можете использовать команду curl ifconfig.co для проверки вашего внешнего IP-адреса.

Заключение

Перенаправление всего интернет-трафика через VPN может быть сложной задачей, но с правильной конфигурацией это возможно. Убедившись в том, что маршруты правильно настроены как на сервере, так и на клиенте, вы сможете успешно использовать OpenVPN для безопасного доступа к интернет-ресурсам. Если ошибки сохраняются, проверьте логи и старайтесь искать решения на специализированных форумах, таких как OpenVPN Community, либо обратитесь к профессиональным администраторам для более глубокого анализа.

Оцените материал
Добавить комментарий

Капча загружается...