LINUX.ORG.RU
ФорумAdmin

OpenVPN server CentOS7

 , ,


0

1

Доброго времени суток коллеги, возникла такая потребность поднять OpenVPN server на CentOS, задачка простая, спору нет. К этому серваку должны подключаться микротки, то же сделано, но вот проблема, ни с одного клиента я не могу достучатся до внутренних ресурсов за сервером/шлюзом…

Схема такая:

  • 172.16.20.0/24 - внутренние ресурсы
  • 172.16.20.1 - интерфейс внутренний на шлюзе/сервере OpenVPN
  • 192.168.122.151 - внешний интерфейс шлюза/сервера OpenVPN
  • 10.0.0.0/24 - сеть OpenVPN
  • 192.168.122.170 - внешний интерфейс клиента
  • 172.16.10.1 - внутренний интерфейс клиента
  • 172.16.10.0/24 - внутренняя сеть

С клиентских устройств я максимум что могу так это пропинговать 172.16.20.1, но не ресурсы за ним.

Трасеровка говорит следующее:

[admin@MikroTik] > /tool traceroute 172.16.20.2
 # ADDRESS                          LOSS SENT    LAST     AVG    BEST   WORST STD-DEV STATUS                                                                   
 1 172.16.10.1                        0%    1   0.6ms     0.6     0.6     0.6       0                                                                          
 2 10.0.0.1                           0%    1   1.5ms     1.5     1.5     1.5       0                                                                          
 3                                  100%    1 timeout                                                                                                          
 4                                  100%    1 timeout                                                                                                          
 5                                  100%    1 timeout                                                                                                          
 6                                  100%    1 timeout                                                                                                          
 7                                    0%    1     0ms  

Конфигурация клиента:

[admin@MikroTik] > /ip add print
Flags: X - disabled, I - invalid, D - dynamic 
 #   ADDRESS            NETWORK         INTERFACE                                                                                                              
 0 D 192.168.122.170/24 192.168.122.0   ether1                                                                                                                 
 1   172.16.10.1/24     172.16.10.0     ether2                                                                                                                 
 2 D 10.0.0.6/32        10.0.0.5        ovpn-out1   

[admin@MikroTik] > /interface ovpn-client print 
Flags: X - disabled, R - running 
 0  R name="ovpn-out1" mac-address=02:EF:F2:1F:B5:FA max-mtu=1500 connect-to=192.168.122.151 port=13555 mode=ip user="mk-1" password="" profile=default 
      certificate=mk-1.crt_0 verify-server-certificate=no auth=sha1 cipher=aes128 add-default-route=no 

[admin@MikroTik] > ip route print 
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit 
 #      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
 0 ADS  0.0.0.0/0                          192.168.122.1             1
 1 ADS  10.0.0.0/24                        10.0.0.5                  1
 2 ADC  10.0.0.5/32        10.0.0.6        ovpn-out1                 0
 3 ADC  172.16.10.0/24     172.16.10.1     bridge1                   0
 4 ADS  172.16.20.0/24                     10.0.0.5                  1
 5 ADC  192.168.122.0/24   192.168.122.170 ether1                    0

[admin@MikroTik] > /ip firewall nat print 
Flags: X - disabled, I - invalid, D - dynamic 
 0    chain=srcnat action=masquerade out-interface-list=WAN 

 1 X  chain=srcnat action=masquerade out-interface=ovpn-out1 log=no log-prefix="" 

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

[snofroy@localhost ~]$ ip add show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 0c:79:af:95:25:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.151/24 brd 192.168.122.255 scope global noprefixroute dynamic ens3
       valid_lft 2509sec preferred_lft 2509sec
    inet6 fe80::1ffe:d74a:654e:298d/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 0c:79:af:95:25:01 brd ff:ff:ff:ff:ff:ff
    inet 172.16.20.1/24 brd 172.16.20.255 scope global noprefixroute ens4
       valid_lft forever preferred_lft forever
    inet6 fe80::fa1a:da52:94b2:1403/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4: ens5: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 0c:79:af:95:25:02 brd ff:ff:ff:ff:ff:ff
8: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 10.0.0.1 peer 10.0.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::c3d3:a08:9f4d:63/64 scope link flags 800 
       valid_lft forever preferred_lft forever


[snofroy@localhost ~]$ ip route
default via 192.168.122.1 dev ens3 proto dhcp metric 100 
10.0.0.0/24 via 10.0.0.2 dev tun0 
10.0.0.2 dev tun0 proto kernel scope link src 10.0.0.1 
172.16.10.0/24 via 10.0.0.2 dev tun0 
172.16.20.0/24 dev ens4 proto kernel scope link src 172.16.20.1 metric 101 
192.168.122.0/24 dev ens3 proto kernel scope link src 192.168.122.151 metric 100 

[snofroy@localhost ~]$ sudo iptables -L -n -v
[sudo] пароль для snofroy: 
Chain INPUT (policy DROP 74 packets, 10434 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
  976  187K ACCEPT     all  --  ens4   *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 0
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 3
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 11
    5   300 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8
   31  4154 ACCEPT     all  --  tun+   *       0.0.0.0/0            0.0.0.0/0           
 1870  159K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            state INVALID
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:!0x17/0x02 state NEW
    1    60 ACCEPT     tcp  --  ens3   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    2   120 ACCEPT     tcp  --  ens3   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:13555

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 TCPMSS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x06/0x02 TCPMSS clamp to PMTU
   86  5072 ACCEPT     all  --  tun+   *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  ens4   tun+    0.0.0.0/0            0.0.0.0/0           
    2   120 ACCEPT     all  --  ens4   ens3    0.0.0.0/0            0.0.0.0/0           
    2   120 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            state INVALID

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0           
  657 55064 ACCEPT     all  --  *      ens4    0.0.0.0/0            0.0.0.0/0           
 1503  193K ACCEPT     all  --  *      ens3    0.0.0.0/0            0.0.0.0/0           
    9   716 ACCEPT     all  --  *      tun+    0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:!0x17/0x02 state NEW


[snofroy@localhost ~]$ cat /etc/openvpn/server.conf 
port 13555 # я предпочитаю использовать нестандартные порты для работы
proto tcp # протокол может быт и tcp, если есть необходимость в этом
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 172.16.10.0 255.255.255.0 # указываем подсеть, к которой будем обращаться через vpn
push "route 172.16.10.0 255.255.255.0" # передаем маршрут клиентам
push "route 172.16.20.0 255.255.255.0"

ifconfig-pool-persist ipp.txt # файл с записями соответствий clinet - ip
client-to-client # позволяет клиентам openvpn подключаться друг к другу
client-config-dir /etc/openvpn/ccd # директория с индивидуальными настройками клиентов

cipher AES-128-CBC # AES
auth SHA1

user nobody
group nogroup

keepalive 10 120
#comp-lzo
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 3

Я понимаю что сам сервак просто не маршрутизирует пакеты, но где проблема найти не получается…

Тебе нужно разрешить прохождение пакетов между интерфейсами:

https://www.garron.me/en/go2linux/how-enable-ip-forwarding-linux-slackware-ubuntu-debian-fedora.html

И в цепочке forward разрешить прохождение пакетов из одной сети в другую.

Если это ещё не разрешено.

После чего на клиентах прописать маршруты до нужных сетей через ip адрес VPN сервера в VPN сети.

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

Я же все конфиги скинул, всё это есть, дублирую для Вас:

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 TCPMSS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x06/0x02 TCPMSS clamp to PMTU
    0     0 ACCEPT     all  --  tun+   *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  ens4   tun+    0.0.0.0/0            0.0.0.0/0 
[snofroy@localhost ~]$ sudo sysctl -p
[sudo] пароль для snofroy: 
net.ipv4.ip_forward = 1

[admin@MikroTik] /ip route> print 
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit 
 #      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
 0 ADS  0.0.0.0/0                          192.168.122.1             1
 1 ADS  10.0.0.0/24                        10.0.0.5                  1
 2 ADC  10.0.0.5/32        10.0.0.6        ovpn-out1                 0
 3 ADC  172.16.10.0/24     172.16.10.1     bridge1                   0
 4 ADS  172.16.20.0/24                     10.0.0.5                  1
 5 ADC  192.168.122.0/24   192.168.122.170 ether1                    0
snofroy
() автор топика

А с внутренних ресурсов до микротика трассировку покажи.

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

Проблема с sysctl, файл полностью пустой, руками добиваю net.ipv4.ip_forward = 1, применяю, ребутаю, всё равно не работает.

Пробовал на Ubuntu, все работает…

snofroy
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.