Я занимался этим несколько дней и перепробовал все, что можно найти в Интернете, но, похоже, ничего не работало.
Клиенты жестяная банка подключаться к VPN-серверу и получать ответы на запросы ping, и я не вижу ошибок в журналах. Просто это у клиентов нет подключения к Интернету.
Всякий раз, когда я комментирую push "redirect-gateway def1 bypass-dhcp"
на server.conf
все идет нормально, но интернет не фильтруется. Если он включен, сайты будут подключаться, но не смогут получать контент.
На клиенте: $ wget google.com
--2016-10-30 13:39:44-- http://google.com/
Resolving google.com (google.com)... 216.58.217.174
Connecting to google.com (google.com)|216.58.217.174|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://www.google.com/ [following]
--2016-10-30 13:39:44-- http://www.google.com/
Resolving www.google.com (www.google.com)... 216.58.217.164
Connecting to www.google.com (www.google.com)|216.58.217.164|:80... connected.
HTTP request sent, awaiting response...
... и остается там до тайм-аута.
Вот мои конфи и настройки:
Система:
Ubuntu 16.04.1 on EC2, OpenVPN 2.3.10 x86_64
Настройки AWS EC2:
Security Group: Allow Inbound: ports 22/tcp and 1194/udp
Allow Outbound: all
Source/Destination Check: Disabled # (Is this really necessary?)
Сервер:
$ cat /etc/openvpn/server.conf | grep -v '#' | grep -v ';' | tr -s '\n'
port 1194
proto udp
dev tun
ca ca.crt
cert AWS-01.crt
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.0.0.0 255.255.0.0"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
client-to-client
keepalive 10 120
key-direction 0
auth SHA256
comp-lzo
max-clients 10
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
$ cat /proc/sys/net/ipv4/ip_forward
1
$ sudo cat /etc/ufw/before.rules
...
# First entry
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT
...
$ cat /etc/default/ufw | grep -v '#' | tr -s '\n'
IPV6=yes
DEFAULT_INPUT_POLICY="DROP"
DEFAULT_OUTPUT_POLICY="ACCEPT"
DEFAULT_FORWARD_POLICY="ACCEPT"
DEFAULT_APPLICATION_POLICY="SKIP"
MANAGE_BUILTINS=no
IPT_SYSCTL=/etc/ufw/sysctl.conf
IPT_MODULES="nf_conntrack_ftp nf_nat_ftp nf_conntrack_netbios_ns"
$ sudo ufw status
Status: active
To Action From
-- ------ ----
22 LIMIT Anywhere
1194/udp LIMIT Anywhere
22 (v6) LIMIT Anywhere (v6)
1194/udp (v6) LIMIT Anywhere (v6)
Ссылка на сайт: Pastebin серверных $ sudo iptables -L -v -n
Клиенты:
client.ovpn
протестировано как на Ubuntu 16.10, так и на Android 7.0 с такими же результатами.
client
dev tun
proto udp
remote XXX.XXX.public.ip 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
remote-cert-tls server
cipher AES-128-CBC
auth SHA256
key-direction 1
comp-lzo
verb 3
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
<ca>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN ENCRYPTED PRIVATE KEY-----
-----END ENCRYPTED PRIVATE KEY-----
</key>
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
-----END OpenVPN Static key V1-----
</tls-auth>
Любая помощь в том, что мне не хватает? Спасибо!
Дополнительная информация:
Клиентские, до и после правил брандмауэра VPN:
http://pastebin.com/vJRRwzpe, http://pastebin.com/DJ6Wv5q0
Таблица маршрутизации клиентов $ route -n
:
preVPN:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.254.254 0.0.0.0 UG 600 0 0 wlp3s0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 docker0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.254.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp3s0
postVPN:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 192.168.254.254 0.0.0.0 UG 600 0 0 wlp3s0
10.0.0.0 10.8.0.5 255.255.0.0 UG 0 0 0 tun0
10.8.0.0 10.8.0.5 255.255.255.0 UG 0 0 0 tun0
10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
52.45.164.133 192.168.254.254 255.255.255.255 UGH 0 0 0 wlp3s0
128.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 docker0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.254.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp3s0
В Ubuntu 18.04 вам необходимо:
openvpn-systemd-resolved
пакет: sudo apt install openvpn-systemd-resolved
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .
Client VPN endpoint
конфигурация, вы заполнили IP DNS сервераПоскольку вы можете получить страницу по адресу google.com
, который возвращает перенаправление на www.google.com
, в вашей конфигурации все в порядке. Этот факт означает, что клиент может открыть TCP-соединение с google.com
, и отправьте HTTP-запрос и получите ответ.
Такое бывает и на других сайтах?