LINUX.ORG.RU

не получается подключиться через wireguard

 


0

1

Сервер (192.168.0.1/24):

ip addr show wg0
4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.0.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever

wg show wg0
interface: wg0
  public key: V0pBAEHoT2sgrcGvqoU5HeG/M8QoF5iIm5QvVwd0NnA=
  private key: (hidden)
  listening port: 45000

peer: 4PN7RmgIppO2YUmzQxUp4zIs9AU3XexClI1JJlSDbg8=
  endpoint: 0.0.0.0:0
  allowed ips: 0.0.0.0/0
  latest handshake: 26 minutes, 36 seconds ago
  transfer: 1.55 KiB received, 14.02 KiB sent

Клиент (192.168.0.2/24):

ip addr show wg0
4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.0.0.2/24 scope global wg0
       valid_lft forever preferred_lft forever

wg show wg0
interface: wg0
  public key: 4PN7RmgIppO2YUmzQxUp4zIs9AU3XexClI1JJlSDbg8=
  private key: (hidden)
  listening port: 39985

peer: V0pBAEHoT2sgrcGvqoU5HeG/M8QoF5iIm5QvVwd0NnA=
  endpoint: 192.168.0.1:45000
  allowed ips: 0.0.0.0/0
  latest handshake: 28 minutes, 57 seconds ago
  transfer: 1.36 KiB received, 55.41 KiB sent
  persistent keepalive: every 25 seconds

с клиента на сервер не пингуется

ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
^C
--- 10.0.0.1 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3039ms

ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.164 ms
^C
--- 192.168.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.164/0.164/0.164/0.000 ms
а должно по-моему. Между 192.168.0.1 и 192.168.0.2 пингуется в обе стороны. Там ещё написано, что полчаса назад линк был - это если я на сервере прописываю порт клиента (но мне так не хотелось бы делать).

endpoint: 0.0.0.0:0

так и должно быть?
Лучше конфиги покажи.
И вот умвр, сервер — сентось7, клиент — джента. Пинги ходят туда-сюда и у тебя должны.

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

endpoint: 0.0.0.0:0

так и должно быть?

да. Мне бы хотелось, чтобы сервер не знал, где находится клиент до первого коннекта.

Ты прав в том, что если его явно прописать, то пинги начинают ходить. Но у меня клиент потом будет находиться за NAT и я не могу прописать его IP и порт (порт вообще динамический). И не надо советовать делать пробрасывание на NAT, я как раз этого хочу избежать.

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

думаю, что не при чём. второй так вообще отсутствует.

iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  
Einstok_Fair ★★ ()
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от imul

Лучше конфиги покажи.

не лучше, там приватные ключи от дома лежат:

сервер

wg showconf wg0
[Interface]
ListenPort = 45000
PrivateKey = 2BCLY0woSLEASFASWAFSAFz373lQaONYV/qrdS5s5l0=

[Peer]
PublicKey = 4PN7RmgIppO2YUmzQxUp4zIs9AU3XexClI1JJlSDbg8=
AllowedIPs = 0.0.0.0/0

клиент

cat /etc/wireguard/wg0.conf
[Interface]
PrivateKey = gFd9cLp9IDDQDIDKFAysxI1xDzIxJV9dc0BeCNGFSXU=

[Peer]
PublicKey = V0pBAEHoT2sgrcGvqoU5HeG/M8QoF5iIm5QvVwd0NnA=
Endpoint = 192.168.0.1:45000
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

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

не лучше, там приватные ключи от дома лежат:

Их можно «запикать» типа pkey1, pkey2 и т.д

PrivateKey = 2BCLY0woSLEASFASWAFSAFz373lQaONYV/qrdS5s5l0=

Ээээ, Семён Семёныч!

Вот смотри, ты сгенерировал на сервере и клиенте пары ключей
на сервере privkey и publickey_server
На клиенте соответственно privkey1 и public_client1

Конфиги

это сервер:

/etc/wireguard/wg0.conf
[Interface]
PrivateKey = privkey <----- приватный ключ сервера
ListenPort = 6666 <--- udp порт должен быть разрешён в файрволле
Address = 10.0.0.1/24 <--- адрес и маска сервера

[Peer]
PublicKey = pubkey_client1 <--- публичный ключ первого клиента
AllowedIPs = 10.0.0.2/32 <-- адрес и маска первого клиента
PersistentKeepalive = 10

Это клиент:

/etc/wireguard/wg0.conf
[Interface]
PrivateKey = privkey1 <--- приватный ключ первого клиента
ListenPort = 6666 <--- порт, должен быть разрешён в файрволле
Address = 10.0.0.2/32 <--- адрес и маска первого клиента, должно совпадать с тем что в секции peer у сервера

[Peer]
PublicKey = publickey_server <--- публичный ключ сервера
Endpoint = ip_server:6666 <--- внешний адрес и порт сервера
AllowedIPs = 10.0.0.0/24 <--- адрес сети и маска на сервере
PersistentKeepalive = 10

В конфиге сервера адрес сервера с маской, на клиенте адрес сети сервера с маской.
У меня в таком виде работает. Сравни с тем, что у тебя.

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

да. Мне бы хотелось, чтобы сервер не знал, где находится клиент до первого коннекта.

У тебя какое-то сильно неверное представление. Сервер итак не знает где находится клиент. В файле конфигурации это не указывается. Тем не менее, после установившегося соединения wg show wg0 будет показывать в endpoint откуда клиент пришёл. У тебя там непонятно почему нули, поэтому логично что у тебя соединения нет. Но, у меня например, если клиент не подключен, то endpoint вообще на сервере в выхлопе peer не показывает. Поэтому нули меня удивили.

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

У тебя там непонятно почему нули, поэтому логично что у тебя соединения нет. Но, у меня например, если клиент не подключен, то endpoint вообще на сервере в выхлопе peer не показывает. Поэтому нули меня удивили.

Я удалял wg0, потом создавал по-новой, и нули пропали. Но пингуемость не появилась:

wg show wg0
interface: wg0
  public key: V0pBAEHoT2sgrcGvqoU5HeG/M8QoF5iIm5QvVwd0NnA=
  private key: (hidden)
  listening port: 45000

peer: 4PN7RmgIppO2YUmzQxUp4zIs9AU3XexClI1JJlSDbg8=
  allowed ips: 10.0.0.0/24

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

адрес и маска первого клиента, должно совпадать с тем что в секции peer у сервера

Не может оно этого, потому что при загрузке конфига адрес клиента превращается в адрес сети, т.е. 10.0.0.2/24 в 10.0.0.0/24

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

Address = 10.0.0.2/32 <--- адрес и маска первого клиента, должно совпадать с тем что в секции peer у сервера
должно совпадать с тем что в секции peer у сервера

Это не так, адрес должен попадать в разрешенные подсети.

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

У меня в таком виде работает.

У меня ещё нет строки «PersistentKeepalive = 10» на сервере, но она вроде и не нужна.

А так, не вижу разницы. Вот самые свежие мои конфиги (и не работает):

[Interface]
Address = 10.0.0.1/24
PrivateKey = server.private.key
ListenPort = 45000

[Peer]
PublicKey = 4PN7RmgIppO2YUmzQxUp4zIs9AU3XexClI1JJlSDbg8=
AllowedIPs = 10.0.0.2/32

[Interface]
Address = 10.0.0.2/32
PrivateKey = client.private.key

[Peer]
PublicKey = V0pBAEHoT2sgrcGvqoU5HeG/M8QoF5iIm5QvVwd0NnA=
Endpoint = 192.168.0.1:45000
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 25

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

да, ты прав. Блочит. На сервере:

iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
INPUT_direct  all  --  anywhere             anywhere            
INPUT_ZONES_SOURCE  all  --  anywhere             anywhere            
INPUT_ZONES  all  --  anywhere             anywhere            
DROP       all  --  anywhere             anywhere             ctstate INVALID
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
FORWARD_direct  all  --  anywhere             anywhere            
FORWARD_IN_ZONES_SOURCE  all  --  anywhere             anywhere            
FORWARD_IN_ZONES  all  --  anywhere             anywhere            
FORWARD_OUT_ZONES_SOURCE  all  --  anywhere             anywhere            
FORWARD_OUT_ZONES  all  --  anywhere             anywhere            
DROP       all  --  anywhere             anywhere             ctstate INVALID
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
OUTPUT_direct  all  --  anywhere             anywhere            

Chain FORWARD_IN_ZONES (1 references)
target     prot opt source               destination         
FWDI_public  all  --  anywhere             anywhere            [goto] 

Chain FORWARD_IN_ZONES_SOURCE (1 references)
target     prot opt source               destination         

Chain FORWARD_OUT_ZONES (1 references)
target     prot opt source               destination         
FWDO_public  all  --  anywhere             anywhere            [goto] 

Chain FORWARD_OUT_ZONES_SOURCE (1 references)
target     prot opt source               destination         

Chain FORWARD_direct (1 references)
target     prot opt source               destination         

Chain FWDI_public (1 references)
target     prot opt source               destination         
FWDI_public_log  all  --  anywhere             anywhere            
FWDI_public_deny  all  --  anywhere             anywhere            
FWDI_public_allow  all  --  anywhere             anywhere            
ACCEPT     icmp --  anywhere             anywhere            

Chain FWDI_public_allow (1 references)
target     prot opt source               destination         

Chain FWDI_public_deny (1 references)
target     prot opt source               destination         

Chain FWDI_public_log (1 references)
target     prot opt source               destination         

Chain FWDO_public (1 references)
target     prot opt source               destination         
FWDO_public_log  all  --  anywhere             anywhere            
FWDO_public_deny  all  --  anywhere             anywhere            
FWDO_public_allow  all  --  anywhere             anywhere            

Chain FWDO_public_allow (1 references)
target     prot opt source               destination         

Chain FWDO_public_deny (1 references)
target     prot opt source               destination         

Chain FWDO_public_log (1 references)
target     prot opt source               destination         

Chain INPUT_ZONES (1 references)
target     prot opt source               destination         
IN_public  all  --  anywhere             anywhere            [goto] 

Chain INPUT_ZONES_SOURCE (1 references)
target     prot opt source               destination         

Chain INPUT_direct (1 references)
target     prot opt source               destination         

Chain IN_public (1 references)
target     prot opt source               destination         
IN_public_log  all  --  anywhere             anywhere            
IN_public_deny  all  --  anywhere             anywhere            
IN_public_allow  all  --  anywhere             anywhere            
ACCEPT     icmp --  anywhere             anywhere            

Chain IN_public_allow (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW

Chain IN_public_deny (1 references)
target     prot opt source               destination         

Chain IN_public_log (1 references)
target     prot opt source               destination         

Chain OUTPUT_direct (1 references)
target     prot opt source               destination 
Einstok_Fair ★★ ()