LINUX.ORG.RU

Новичкам тут помогают ? openvpn на vps . На клиенте нет интернета

 


2

1

на vps я поднял openvpn server вот конфиги:

/etc/openvpn/server.conf на vps (Удаленный сервер centos7)

port 1194
proto udp
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem

server 10.0.0.0 255.255.255.0 # подсеть для туннеля, может быть любой
route 192.168.0.0 255.255.255.0 # указываем подсеть, к которой будем обращаться$
push "route 192.168.0.0 255.255.255.0" # передаем маршрут клиентам

ifconfig-pool-persist ipp.txt
client-config-dir /etc/openvpn/ccd
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log         openvpn.log
verb 3
explicit-exit-notify 1

файлик etc/openvpn/ccd/client

iroute 192.168.0.0 255.255.255.0

/etc/openvpn/client.conf моя машина Ubuntu

dev tun
proto udp
remote 85.119.150.139 1194
client
resolv-retry infinite
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client.crt
key /etc/openvpn/client.key
persist-key
persist-tun
comp-lzo
verb 3
status /var/log/openvpn/openvpn-status.log 1
status-version 3
log-append /var/log/openvpn/openvpn-client.log

стартую сервер, стартую клиент. в итоге с клиента пингую сервер по 85.119.150.139 -работает, с сервера пингую клиент по 192.168.0.102 - работает с сервера также идет пинг до яндекса, а вот на клиенте интернета нет. Яндекс не пингуется.

вот route с сервера :

[root@hostcentos ccd]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 eth0
10.0.0.0        10.0.0.2        255.255.255.0   UG    0      0        0 tun0
10.0.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
85.119.150.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.0.0     10.0.0.2        255.255.255.0   UG    0      0        0 tun0

вот route с клиента :

root@mgrhost:/etc/openvpn# route
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0         10.0.0.5        128.0.0.0       UG    0      0        0 tun0
default         readynas.netgea 0.0.0.0         UG    100    0        0 enp3s0
10.0.0.1        10.0.0.5        255.255.255.255 UGH   0      0        0 tun0
10.0.0.5        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
agri-heat.com   readynas.netgea 255.255.255.255 UGH   0      0        0 enp3s0
128.0.0.0       10.0.0.5        128.0.0.0       UG    0      0        0 tun0
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 enp3s0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 enp3s0

еще дам инфу какую скажете. никак не пойму куда думать.

Новичкам тут помогают ?

Обычно они столько инфы в ОП не выливают, её из них клещами вытягивать надо.

У меня была такая ситуёвина полгода назад, но VPS загнулся раньше, чем я успел её решить. (%

r3lgar ★★★★★ ()
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

а вы уверены, что это доходит до клиента?

upd: самое главное-то — в iptables и /etc/sysctl.conf надо форвардинг разрешить

xfilx ★★ ()
Последнее исправление: xfilx (всего исправлений: 1)
Ответ на: комментарий от xfilx

1. а как проверить доходит ли push «dhcp-option DNS 208.67.222.222» до клиента ? и что вообще делает эта строчка ? я её тупо раскоментировал:(

2. я выключил iptables на сервере

root@hostcentos etc]# iptables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 

и клиенте

root@mgrhost:/etc/openvpn# iptables -L -v
Chain INPUT (policy ACCEPT 84161 packets, 32M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 73541 packets, 9429K bytes)
 pkts bytes target     prot opt in     out     source               destination 

/etc/sysctl.conf на клиенте :

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

/etc/sysctl.conf на сервере было пусто. прописал не помогло:

net.ipv4.ip_forward=1

сделал traceroute ya.ru с клиента :

root@mgrhost:/etc# traceroute ya.ru
traceroute to ya.ru (87.250.250.242), 30 hops max, 60 byte packets
 1  10.0.0.1 (10.0.0.1)  28.185 ms  28.182 ms  28.179 ms
 2  * * *
 3  * * *
я так понимаю он идет в туннель и там пропадает. как можно траблшутить в моем случае ? :(

mgaranov ()

Кажется не хватает:

iptables -t nat -A POSTROUTING -o e+ -s 10.0.0.0/24 -j MASQUERADE
Когда пакеты идут от клиента к любому хосту, на сервере с openvpn нужно ip адрес клиента из внутренней сети подменять на ip сервера с openvpn, чтоб целевой сервер знал куда ответ возвращать.

Еще нужно проверить, что на сервере разрешен forwarding: sysctl net.ipv4.ip_forward[/indline] должно вернуть 1.

anonymous ()
Ответ на: комментарий от mgaranov

я выключил iptables на сервере

я так понимаю он идет в туннель и там пропадает.

Верно понимаешь. Но о настройке NAT — вопрос уже не ко мне. (%

Я новичок чисто в линуксе, а задавать вопросы я тот еще спец :)

Грамотно сформулированный вопрос — уже половина его решения. :3

r3lgar ★★★★★ ()
Последнее исправление: r3lgar (всего исправлений: 1)
Ответ на: комментарий от anonymous

добавил

iptables -t nat -A POSTROUTING -o e+ -s 10.0.0.0/24 -j MASQUERADE
теперь клиент похоже не может установить vpn соединение вообще

маршруты клиента :

root@mgrhost:/var/log/openvpn# route
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
default         readynas.netgea 0.0.0.0         UG    100    0        0 enp3s0
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 enp3s0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 enp3s0

лог подключений

Thu Jul  5 23:33:53 2018 Restart pause, 20 second(s)
Thu Jul  5 23:34:13 2018 WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
Thu Jul  5 23:34:13 2018 TCP/UDP: Preserving recently used remote address: [AF_INET]85.119.150.139:1194
Thu Jul  5 23:34:13 2018 Socket Buffers: R=[212992->212992] S=[212992->212992]
Thu Jul  5 23:34:13 2018 UDP link local (bound): [AF_INET][undef]:1194
Thu Jul  5 23:34:13 2018 UDP link remote: [AF_INET]85.119.150.139:1194
Thu Jul  5 23:35:13 2018 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Thu Jul  5 23:35:13 2018 TLS Error: TLS handshake failed
Thu Jul  5 23:35:13 2018 SIGUSR1[soft,tls-error] received, process restarting
Thu Jul  5 23:35:13 2018 Restart pause, 40 second(s)
Thu Jul  5 23:35:53 2018 WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
Thu Jul  5 23:35:53 2018 TCP/UDP: Preserving recently used remote address: [AF_INET]85.119.150.139:1194
Thu Jul  5 23:35:53 2018 Socket Buffers: R=[212992->212992] S=[212992->212992]
Thu Jul  5 23:35:53 2018 UDP link local (bound): [AF_INET][undef]:1194
Thu Jul  5 23:35:53 2018 UDP link remote: [AF_INET]85.119.150.139:1194
Thu Jul  5 23:36:53 2018 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Thu Jul  5 23:36:53 2018 TLS Error: TLS handshake failed
Thu Jul  5 23:36:53 2018 SIGUSR1[soft,tls-error] received, process restarting
Thu Jul  5 23:36:53 2018 Restart pause, 80 second(s)

sysctl net.ipv4.ip_forward на сервере возвращает 1

mgaranov ()
Ответ на: комментарий от bdfy

я на сервере включил. теперь у меня на сервере :

[root@hostcentos etc]# iptables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  600 67182 ACCEPT     all  --  any    any     anywhere             anywhere             state RELATED,ESTABLISHED
    1    84 ACCEPT     icmp --  any    any     anywhere             anywhere            
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            
   23  1340 ACCEPT     tcp  --  any    any     anywhere             anywhere             state NEW tcp dpt:ssh
   87  5167 REJECT     all  --  any    any     anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  any    any     anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 671 packets, 99600 bytes)
 pkts bytes target     prot opt in     out     source               destination         

mgaranov ()
Ответ на: комментарий от mgaranov

/etc/sysctl.conf на клиенте :

net.ipv4.ip_forward=1

на клиенте это очевидно не нужно, а на сервере из конфига оно сработает только после перезагрузки линукса, чтоб заработало сразу, нужно

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

или таки перезагрузить сервер

Harald ★★★★★ ()
Ответ на: комментарий от Harald

на клиенте убрал. сервер перезагрузил. без изменений. с маскардингом vpn не устанавливается, а без него -устанавливается, но интернета нет.

может это vps чего чудит ?

mgaranov ()
Ответ на: комментарий от mgaranov

я на сервере включил. теперь у меня на сервере :

А что ты такое включил что у тебя куча правил в iptables появилась? На мою строчку с MASQUERADE у тебя должно только одно правило в таблице nat добавится:

iptables -t nat -nvL
> pkts bytes target     prot opt ...
>    0     0 MASQUERADE  all  -- ...

А у тебя вместо этого в правилах записано дропать все forward пакеты

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  any    any     anywhere             anywhere             reject-with icmp-host-prohibited

anonymous ()
Ответ на: комментарий от anonymous

и правда. Похоже я , давая команду

systemctl restart iptables.service

возвращал её к какому-то непонятному состоянию. исправил.

но вот что странно. это правило не применяется. я даю

sudo iptables -t nat -A POSTROUTING -o e+ -s 10.0.0.0/24 -j MASQUERADE

а в итоге ничего не изменилось.

[root@hostcentos openvpn]# sudo iptables -t nat -A POSTROUTING -o e+ -s 10.0.0.0/24 -j MASQUERADE
[root@hostcentos openvpn]# iptables -L -v
Chain INPUT (policy ACCEPT 48 packets, 4522 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 38 packets, 6038 bytes)
 pkts bytes target     prot opt in     out     source               destination         

я если честно в iptables вообще профан

mgaranov ()
Ответ на: комментарий от mgaranov

а в итоге ничего не изменилось.

Есть несколько таблиц, ты смотрешь filter, т.е. все равно что выполнить iptables -t filter -nvL, но правило добавилась в таблицу nat, её смотреть нужно так: iptables -t nat -nvL

anonymous ()
Ответ на: комментарий от mgaranov

systemctl restart iptables.service

iptables это не сервис, в твоем дистрибутиве просто дефолтные правила так обозвали, по причинам безопасности такие правила обычно дропают все что нужно и ненужно. Сам же iptables это всего лишь cli интерфейс в юзерспейсе к файрволу в ядре линукса называемому netfilter. Файрвол всегда работает, просто обычно когда дают советы по настройки подразумевают что никаких правил изначально не применено.

anonymous ()
Ответ на: комментарий от anonymous

блииин вот ведь... спасибо.

теперь у меня так:

[root@hostcentos sysconfig]# iptables-save
# Generated by iptables-save v1.4.21 on Fri Jul  6 00:30:15 2018
*nat
:PREROUTING ACCEPT [2:179]
:INPUT ACCEPT [2:179]
:OUTPUT ACCEPT [1:73]
:POSTROUTING ACCEPT [1:73]
-A POSTROUTING -s 10.0.0.0/24 -o e+ -j MASQUERADE
COMMIT
# Completed on Fri Jul  6 00:30:15 2018
# Generated by iptables-save v1.4.21 on Fri Jul  6 00:30:15 2018
*filter
:INPUT ACCEPT [219:18393]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [167:20698]
COMMIT
# Completed on Fri Jul  6 00:30:15 2018

и... УРА ! Я вижу яндекс в туннеле :) спасибо!

весело тут у вас:)

mgaranov ()

Вот тут инструкция по настройке VPN от самого ЦифровогоОкеана, но настройке iptables уделено крайне мало внимания, только чтоб только работало.
А вот тута есть весьма кошерный конфигуратор iptables. На выходе получается скрипт, который надоть запихнуть в автозагрузку. Работает на убунтах, дебианах, центосях и прочем. Только в Centos надо встроенный fiwalld отключить.

robert_d ()
Ответ на: комментарий от robert_d

Да, чуть не забыл. Если воспользуетесь генератором конфигов, не забудьте закоментировать строки вида

$IPT -A bad_tcp_packets -p tcp всякое непонятное -j LOG \
    --log-prefix "чего-то пишем в лог "

Иначе логи будут пухнуть с нечеловеческой силой, т.к. всяких роботов, ломящихся на сервер, бывает по стопиццот в час.

robert_d ()