LINUX.ORG.RU

Проблема настройки VPN тоннеля между сервером и клиентом

 , , , ,


0

1

Доброго времени суток. Слезно прошу помочь, прошла уже неделя как я пытаюсь настроить VPN, но совершенно не хвтает знаний.

Не получается настроить тоннель между клиентом и сервером. Сервер (10.8.0.1) - это одноплатник orange pi4 (192.168.1.204) на armbian, находящийся за роутером с openwrt(192.168.1.1). Для создания VPN тоннеля используется wireguard. Ip-динамический, пока что, для временного создания тоннеля, т.е. я всегда могу узнать внешний ip и вбить в конфигурацию клиента(10.8.0.2).

Вот что выдает ip show route на стороне сервера:

root@orangepi4:~# ip route show
default via 192.168.1.1 dev eth0 proto dhcp metric 100 
10.8.0.0/24 dev wg0 proto kernel scope link src 10.8.0.1 
169.254.0.0/16 dev wg0 scope link metric 1000 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.204 metric 100 

За неимением возможности соединиться с клиентом, сервер(wg0) создает соединение по 169.254.0.0/16 по который, наверное, предназначен для настройки. Возможно это связано с настройками брандмауэра сервера, то ли брандмауэра роутера или еще из-за чего я не понимаю. Вот конфигурация сервера:

[Interface]
Address = 10.8.0.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t>
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables >
ListenPort = 51820
PrivateKey = приватный ключ сервера

[Peer]
PublicKey = публичный ключ клиента (ноутбук)
AllowedIPs = 10.8.0.2/32

[Peer]
PublicKey = публичный ключ клиента (телефон)
AllowedIPs = 10.8.0.7/32

Вот настройка конфигурации клиента:

[Interface]
Address = 10.8.0.2/32
PrivateKey = приватный ключ клиента
DNS = 8.8.8.8

[Peer]
PublicKey = публичный ключ сервера
Endpoint = внешний ip сервера:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 21

Вот что выдает ping 10.8.0.2 со стороны сервера:

root@orangepi4:~# ping 10.8.0.2
PING 10.8.0.2 (10.8.0.2) 56(84) bytes of data.
From 10.8.0.1 icmp_seq=1 Destination Host Unreachable
ping: sendmsg: Destination address required
From 10.8.0.1 icmp_seq=2 Destination Host Unreachable
ping: sendmsg: Destination address required
From 10.8.0.1 icmp_seq=3 Destination Host Unreachable
ping: sendmsg: Destination address required
From 10.8.0.1 icmp_seq=4 Destination Host Unreachable
ping: sendmsg: Destination address required
^C
--- 10.8.0.2 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3056ms

Настройки iptables со стороны сервера:

root@orangepi4:~# iptables -L -n 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
root@orangepi4:~# iptables -L -n -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0 

Вот статус включенного wireguard со стороны сервера:

root@orangepi4:~# systemctl status wg-quick@wg0
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
     Active: active (exited) since Thu 2020-11-26 22:37:02 +05; 1min 54s ago
       Docs: man:wg-quick(8)
             man:wg(8)
             https://www.wireguard.com/
             https://www.wireguard.com/quickstart/
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
    Process: 11107 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
   Main PID: 11107 (code=exited, status=0/SUCCESS)

ноя 26 22:37:02 orangepi4 systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
ноя 26 22:37:02 orangepi4 wg-quick[11107]: [#] ip link add wg0 type wireguard
ноя 26 22:37:02 orangepi4 wg-quick[11107]: [#] wg setconf wg0 /dev/fd/63
ноя 26 22:37:02 orangepi4 wg-quick[11107]: [#] ip -4 address add 10.8.0.1/24 dev wg0
ноя 26 22:37:02 orangepi4 wg-quick[11107]: [#] ip link set mtu 1420 up dev wg0
ноя 26 22:37:02 orangepi4 wg-quick[11107]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ноя 26 22:37:02 orangepi4 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

Вот ip a со стороны сервера:

root@orangepi4:~# ip a
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether ce:6a:f5:32:ef:39 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.204/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
       valid_lft 34998sec preferred_lft 34998sec
    inet6 fdf3:ecea:788b:0:17fb:56ea:3052:e0af/64 scope global temporary dynamic 
       valid_lft 603245sec preferred_lft 84703sec
    inet6 fdf3:ecea:788b::723/128 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fdf3:ecea:788b:0:d519:b866:17a6:dcfe/64 scope global temporary deprecated dynamic 
       valid_lft 516988sec preferred_lft 0sec
    inet6 fdf3:ecea:788b:0:db93:657b:a807:7d01/64 scope global mngtmpaddr noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::85c0:7e26:b1bf:8d62/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether b0:02:47:bc:6e:51 brd ff:ff:ff:ff:ff:ff
19: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.8.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever


Последнее исправление: Korben_D (всего исправлений: 2)

Ну вообще это не такая уж тривиальная задача, - больно извилистый путь у траффика получается. Почему бы не упростить хотя бы тем, что сервер поднять на самом роутере? Возможно, используя другой vpn-протокол.

Концептуально если, то вот это может помочь кстати: https://serverfault.com/questions/842493/communicating-between-private-ip-add...

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

Сервер надо сделать с хранилищем для использования nextcloud, да и не хочу этим нагружать роутер, но как-то не могу построить маршрут между клиентом и сервером. Думаю, что нужно проверить состояие брандмауэра, а я не читать, не писать с помощью iptables не умею, немного понимаю и все.

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

Ясно. Рекомендую всё же пройтись ссылке, там идея на примере OpenVPN разбирается.

Вообще, я бы лично добился сперва того, чтобы были видны прилетающие на нужный порт пакеты (UDP видимо). Причём, сперва на роутере послушать, а потом уже и на станции с будущим сервером. И только после этого уже вешать туда впн-сервис, и допиливать туннелирование.

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