Соединение OpenVPN работает, но шлюз не назначен

Я пытаюсь настроить OpenVPN на VPS, и я могу установить соединение с сервером, но шлюз не назначен клиенту.

Вот мои файлы конфигурации:

клиентский конфиг:

client
dev tun
proto udp
remote foo.bar 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
redirect-gateway
comp-lzo
verb 3
pull

Конфигурация сервера:

port 1194
proto udp
dev tun
ca easy-rsa/2.0/keys/ca.crt
cert easy-rsa/2.0/keys/server.crt
key easy-rsa/2.0/keys/server.key
dh easy-rsa/2.0/keys/dh2048.pem
server 172.30.90.0 255.255.255.192
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
log-append openvpn.log
verb 3

клиент ifconfig:

tun0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 172.30.90.6 --> 172.30.90.5 netmask 0xffffffff
open (pid 42823)

Правила iptables на сервере:

iptables -L

Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT udp -- anywhere anywhere state NEW udp dpt:openvpn
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target prot opt source destination 

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

Спасибо!

2 ответа

После подключения к VPN запустите команду route -n или же netstat -rn на клиенте и посмотреть, назначен ли адрес шлюза.

Проверьте, сделали ли вы следующее:

На сервере:

протолкнуть шлюз к клиенту:

Добавьте это в файл: /etc/openvpn/server.conf

push "redirect-gateway def1"

Добавьте это в файл: /etc/sysctl.conf

net.ipv4.ip_forward=1

Или введите следующую команду, чтобы установить эту переменную для текущего сеанса:

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

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

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s [vpn client subnet] -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s [vpn client subnet] -o eth0 -j MASQUERADE

Источник

Попробуйте удалить:

redirect-gateway

в конфигурации клиента.

Вы уже подталкиваете redirect-gateway конфигурация через push механизм сервера и только в этом случае вы отправляете его с правильным параметром (def1).

Поведение redirect-gateway Параметр без параметра зависит от openvpn-версии (и вы не указали свою конкретную версию), так что лучше быть в безопасности.

Если это не помогает, я вижу разные возможные проблемы.

Я предлагаю следующее устранение неполадок:

  • проверьте, что вы можете пропинговать другую сторону туннеля
  • если да, попробуйте добавить вручную шлюз по умолчанию, указывающий на удаленную сторону туннеля, и попробуйте пинговать 8.8.8.8 (чтобы устранить возможную проблему в DNS, который вы проталкиваете через туннель)
  • если это не работает, ваша проблема, скорее всего, в конфигурации nat (вы не опубликовали результат iptables -L -t nat) или в конфигурации пересылки
  • если это работает, но пинг www.google.com не работает, ваша проблема, вероятно, в конфигурации DNS
Другие вопросы по тегам