- Вопрос или проблема
- Ответ или решение
- Почему OpenVPN Подключается к Серверу, Но Нет Доступа в Интернет: Подробный Анализ и Решения
- 1. Проверка Конфигурации Сервера
- 2. Настройка NAT и IP Forwarding
- 3. Конфигурация Клиента
- 4. Проверка Маршрутизации на Клиенте
- 5. Проверка Настроек Брандмауэра
- 6. Тестирование
- Заключение
Вопрос или проблема
Я хочу настроить сервер OpenVPN, и после недели попыток день и ночь (без знаний Linux) мне удалось успешно подключиться к серверу с помощью OpenVPN GUI, но теперь, когда я могу подключиться, нет пинга к 8.8.8.8, и веб-страницы не открываются.
Сервер работает: CentOS 7 X64
Клиент работает: Windows 10 Pro Build 10586.17 X64 с Kaspersky Internet Security
Вот моя конфигурация сервера
#измените на свой порт
port 1337
#Вы можете использовать udp или tcp
proto udp
# "dev tun" создаст маршрутизируемый IP-туннель.
dev tun
#Конфигурация сертификата
#ca сертификат
ca ca.crt
#Сертификат сервера
cert server.crt
#Ключ сервера, храните его в секрете
key server.key
#Смотрите размер dh ключа в /etc/openvpn/keys/
dh dh2048.pem
#Внутренний IP будет получен при подключении
server 192.168.200.0 255.255.255.0
#эта строка перенаправит весь трафик через наш OpenVPN
push "redirect-gateway def1"
#Предоставить DNS-серверы клиенту, вы можете использовать DNS Google
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
#Разрешить подключение нескольких клиентов с тем же ключом
duplicate-cn
keepalive 20 60
comp-lzo
persist-key
persist-tun
daemon
#включить лог
log-append /var/log/myvpn/openvpn.log
#Уровень журнала
verb 3
Вот моя конфигурация клиента
client
dev tun
proto udp
remote MY_SERVER_IP_ADDRESS 1337
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
comp-lzo
verb 3
<ca>
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXX
-----END PRIVATE KEY-----
</key>
ИЗМЕНЕНИЕ: Я также добавил следующие команды.
yum install iptables-services -y
systemctl mask firewalld
systemctl enable iptables
systemctl stop firewalld
systemctl start iptables
iptables --flush
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables
nano /etc/sysctl.conf
ДОБАВИЛ ЭТО В sysctl.conf -> net.ipv4.ip_forward = 1
systemctl restart network.service
systemctl -f enable [email protected]
systemctl start [email protected]
Но я все еще могу подключиться, но у меня нет пинга и я не могу открыть ни один веб-сайт.
Ниже приведен мой route print
после установления соединения с моим сервером.
Сетевое назначение Маска сети Шлюз Интерфейс Метрика
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.11 10
0.0.0.0 128.0.0.0 192.168.200.5 192.168.200.6 20
127.0.0.0 255.0.0.0 На линк 127.0.0.1 306
127.0.0.1 255.255.255.255 На линк 127.0.0.1 306
127.255.255.255 255.255.255.255 На линк 127.0.0.1 306
128.0.0.0 128.0.0.0 192.168.200.5 192.168.200.6 20
MY_SERVER_IP 255.255.255.255 192.168.1.1 192.168.1.11 10
169.254.0.0 255.255.0.0 На линк 169.254.61.91 276
169.254.61.91 255.255.255.255 На линк 169.254.61.91 276
169.254.255.255 255.255.255.255 На линк 169.254.61.91 276
192.168.1.0 255.255.255.0 На линк 192.168.1.11 266
192.168.1.11 255.255.255.255 На линк 192.168.1.11 266
192.168.1.255 255.255.255.255 На линк 192.168.1.11 266
192.168.183.0 255.255.255.0 На линк 192.168.183.1 276
192.168.183.1 255.255.255.255 На линк 192.168.183.1 276
192.168.183.255 255.255.255.255 На линк 192.168.183.1 276
192.168.200.1 255.255.255.255 192.168.200.5 192.168.200.6 20
192.168.200.4 255.255.255.252 На линк 192.168.200.6 276
192.168.200.6 255.255.255.255 На линк 192.168.200.6 276
192.168.200.7 255.255.255.255 На линк 192.168.200.6 276
192.168.230.0 255.255.255.0 На линк 192.168.230.1 276
192.168.230.1 255.255.255.255 На линк 192.168.230.1 276
192.168.230.255 255.255.255.255 На линк 192.168.230.1 276
224.0.0.0 240.0.0.0 На линк 127.0.0.1 306
224.0.0.0 240.0.0.0 На линк 192.168.1.11 266
224.0.0.0 240.0.0.0 На линк 169.254.61.91 276
224.0.0.0 240.0.0.0 На линк 192.168.200.6 276
224.0.0.0 240.0.0.0 На линк 192.168.230.1 276
224.0.0.0 240.0.0.0 На линк 192.168.183.1 276
255.255.255.255 255.255.255.255 На линк 127.0.0.1 306
255.255.255.255 255.255.255.255 На линк 192.168.1.11 266
255.255.255.255 255.255.255.255 На линк 169.254.61.91 276
255.255.255.255 255.255.255.255 На линк 192.168.200.6 276
255.255.255.255 255.255.255.255 На линк 192.168.230.1 276
255.255.255.255 255.255.255.255 На линк 192.168.183.1 276
Вы не упомянули, какую ОС использует клиентский компьютер. Это может быть проблема брандмауэра или проблема с правильным NAT или пересылкой IP.
Прежде всего, после подключения проверьте конфигурацию IP и маршрутизацию на клиентском компьютере. Убедитесь, что таблица маршрутизации правильная и маршрут по умолчанию установлен на VPN-сервер. Вы также должны иметь возможность пинговать его. Если все в порядке, то нужно проверить правила NAT и брандмауэра вашего VPN-сервера.
Для Windows 7 или более поздних версий Windows вам также нужно запускать клиент openvpn от имени администратора, в противном случае клиент не сможет установить правильную маршрутизацию.
Моя конфигурация клиента openvpn.ovpn включает
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
update-resolv-conf – это, по сути,
#!/bin/sh
IFACE=`route -n show | grep -m 1 default | awk '{ print $NF }'`
dhclient -r $IFACE
case "$script_type" in
up)
echo "prepend domain-name-servers $route_vpn_gateway;" > /etc/dhclient.conf
;;
down)
echo " " > /etc/dhclient.conf
;;
esac
dhclient $IFACE
Парсит переменные окружения из openvpn, чтобы установить DHCP от вашего VPN-сервера, чтобы перенастроить конфигурацию вашего устройства, используя dhclient. Это работает для OpenBSD или различных дистрибутивов Linux. Также можно использовать resolvconf от Debian аналогично для того же эффекта.
Ответ или решение
Почему OpenVPN Подключается к Серверу, Но Нет Доступа в Интернет: Подробный Анализ и Решения
На первый взгляд, успешное соединение с OpenVPN сервером – это хороший признак. Однако отсутствие доступа в интернет вызывает беспокойство. Давайте разберемся в возможных причинах и способах их устранения, учитывая вашу конфигурацию сервера и клиента.
1. Проверка Конфигурации Сервера
Файл конфигурации сервера:
Ваш конфигурационный файл сервера выглядит в целом корректно. Однако обратите внимание на несколько ключевых моментов:
push "redirect-gateway def1"
: Эта команда должна перенаправлять весь интернет-трафик через OpenVPN сервер. Однако работает она только при правильной настройке маршрутизации и NAT.- DNS-серверы: Вы указали Google DNS, что хорошо, но может потребоваться проверка доступности этих серверов из вашей VPN-сети.
2. Настройка NAT и IP Forwarding
Вы уже добавили необходимые команды для разрешения IP-проброса и настройки NAT:
# Включение IP-проброса
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
# Настройка iptables для NAT
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o eth0 -j MASQUERADE
Проблемы с iptables: Убедитесь, что iptables
активен и правильно настроен. Проверьте правила командой:
iptables -L -v -n
iptables -t nat -L -v -n
Если вам нужно разрешить трафик на сервере, добавьте правило для ACCEPT:
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT
Не забудьте сохранить изменения в iptables и перезапустить сервис:
iptables-save > /etc/sysconfig/iptables
systemctl restart iptables
3. Конфигурация Клиента
Файл конфигурации клиента: Убедитесь, что OpenVPN клиент на Windows запускается с правами администратора. Это может влиять на возможность установки маршрутов.
4. Проверка Маршрутизации на Клиенте
После подключения к серверу, выполните команду route print
на клиенте. Проверьте, что у вас есть маршрут по умолчанию, который указывает на VPN-интерфейс.
Обратите внимание на строку с 0.0.0.0
и убедитесь, что в качестве шлюза используется IP вашего VPN сервера. В вашем случае, это должно выглядеть так:
0.0.0.0 128.0.0.0 192.168.200.5 192.168.200.6
Если это не так, значит, проблема может быть в настройке push "redirect-gateway def1"
на сервере.
5. Проверка Настроек Брандмауэра
Убедитесь, что Kaspersky Internet Security на клиенте не блокирует OpenVPN. Попробуйте временно отключить его или добавить в исключения OpenVPN. Иногда антивирусные программы блокируют туннелирование.
6. Тестирование
После всех изменений, выполните следующие шаги:
- Перезапустите OpenVPN сервер.
- Переподключите клиент и проверьте доступность интернета, введите команду
ping 8.8.8.8
. - Если всё ещё нет доступа, проверьте логи OpenVPN на сервере для выявления возможных ошибок:
tail -f /var/log/myvpn/openvpn.log
Заключение
Если, следуя всем указанным шагам, вы всё ещё не имеете доступа в интернет через OpenVPN, рекомендуется проверить наличие конфигурационных конфликтов в системе сетевых настроек или обратиться к сообществу OpenVPN за дополнительной поддержкой. Каждый шаг важно выполнять внимательно, чтобы обеспечить правильной работоспособности вашего VPN-сервера.