Я не могу понять, почему не работает мое соединение openvpn. Кажется, что оно работает нормально при подключении. Я могу подключиться к своему серверу, но однажды, когда я подключен, я не могу использовать интернет через vpn.
Это VPS-сервер, работающий на Debian.
Вот мой файл openvpn server.conf
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
verb 6
mute 20
А вот мой файл client.conf
client
dev tun
proto udp
remote server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3
remote-cert-tls server
Я также добавил правила брандмауэра для принятия соединения и маршрутизации, но странность в том, что некоторые правила появляются несколько раз. Вот мой файл сохранения iptables
# Generated by iptables-save v1.4.8 on Sun Dec 22 04:36:18 2013
*nat
:PREROUTING ACCEPT [53:9749]
:POSTROUTING ACCEPT [9:675]
:OUTPUT ACCEPT [9:675]
-A PREROUTING -d server_ip/32 -p udp -m udp --dport 53 -j REDIRECT --to-ports 1194
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source server_ip
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Sun Dec 22 04:36:18 2013
# Generated by iptables-save v1.4.8 on Sun Dec 22 04:36:18 2013
*filter
:INPUT ACCEPT [946:112417]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [824:172939]
-A INPUT -i tun0 -p tcp -m tcp --dport 1194 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT
COMMIT
# Completed on Sun Dec 22 04:36:18 2013
Я также проверил /etc/sysctl.conf, чтобы убедиться, что
net.ipv4.ip_forward=1
у меня тоже есть
net.ipv6.conf.all.forwarding=1
Итак, я попробовал соединение OpenVPN на моем компьютере с Linux и на Virtualbox XP, и на обоих устройствах соединение есть, но ни на одном из них нет доступа к Интернету после подключения.
Самое странное во всем этом то, что когда я провожу трассировку, она показывает соединение через VPN.
Например я делаю traceroute google.com
1 my ip from vpn connection
2 openvpn server ip
3 ...
4 ...
5 ... few hops between server to google
6 and finally google server ip
Итак, traceroute показывает, что соединение проходит через vpn, а также когда я пингую, пинг увеличивается до 100 мс, в то время как когда я не подключен к vpn, пинг составляет около 20 мс.
Но когда я пытаюсь выйти в интернет с помощью любой программы (firefox, chrome, iexplorer), я ничего не получаю. Ничего не загружается и соединение прерывается.
Дело не в том, что мой сервер медленный и страницы не загружаются. Тест скорости показывает скорость соединения на сервере около 70 Мбит/с, а у меня соединение 6 Мбит/с.
И когда я пытаюсь подключиться к другому vpn, например cloudnymous, все работает нормально. Это просто что-то не так в моей настройке openvpn.
EDIT: После того, как я думал, что наконец-то заставил это работать, после множества настроек я, наконец, могу подключиться к своему VPN и выйти в Интернет оттуда.
Теперь у меня есть одна последняя проблема. Так как я использую Linux, несколько программ здесь не работают, и я использую VirtualBox с установкой Windows XP, но при подключении к VPN на VirtualBox я могу серфить в Интернете. Но ни одна программа не может подключиться к Интернету. Также мое VPN-подключение время от времени теряет Интернет, и это не мой Интернет или подключение к серверу, потому что в это время, когда я теряю Интернет через VPN, я все еще могу подключиться к серверу с помощью Putty по SSH и делать различные вещи.
решение1
Маскарадинг не работает на VPS. iptables
Source NAT
Вместо этого необходимо использовать:
iptables -t nat -A POSTROUTING -s 10.x.x.x/xx -j SNAT --to-source y.y.y.y
x.x.x.x/x
— это подсеть VPN — y.y.y.y
это IP-адрес выходного интерфейса вашего сервера.
решение2
Убедитесь, что /etc/default/ufw
на сервере DEFAULT_FORWARD_POLICY="ACCEPT"
вместо этого есть "DROP"
, а затем перезапустите брандмауэр
sudo ufw disable
sudo ufw enable
решение3
У меня была похожая проблема, когда OpenVPN работал нормально, пока я не поменял маршрутизатор. Я подозревал брандмауэр маршрутизатора, хотя я открыл требуемые порты. Однако я посмотрел на rc.local и увидел, что при первой настройке строка iptables была настроена с реальным IP-адресом, а не с переменной $MY_IP, как я ожидал, вот так:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to 192.168.0.15
скорее, чем:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to $MY_IP
Проблема заключалась в том, что маршрутизатор назначил серверу другой IP-адрес, и я просто зарезервировал новый IP-адрес и ожидал, что все будет работать.
Если бы я зарезервировал тот же IP-адрес для сервера, что и раньше, мне бы не пришлось долго ломать голову.