Re: lost connection on dynamic IP

2021-05-23 Thread Vicente Bergas
On Thu, May 20, 2021 at 9:23 PM Max Schulze  wrote:
> On 20.05.21 18:20, Roman Mamedov wrote:
> > On Thu, 20 May 2021 11:15:30 +0500
> > Roman Mamedov  wrote:
> >
> >>> So, what do you mean is that wireguard does a single DNS resolution at
> >>> the beginning and further DNS resolutions need to be done elsewere. Is
> >>> that correct?
> >> Yes.
> Just to point out what 'others are doing' - openwrt has a watchdog
> script [1] that might be run with cron every 15 mins
>
> */15 * * * * /usr/bin/wireguard_watchdog
>
> which will update the new endpoint if the last handshake is too old:
>
> wg set ${iface} peer ${public_key} endpoint
> "${endpoint_host}:${endpoint_port}"
>
> It needs PersistenKeepalive also, if i understand correctly.
>
> [1]
> https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob;f=package/network/utils/wireguard-tools/files/wireguard_watchdog;hb=HEAD
>
> --
>
> Max

Hello, i've been running this script on a setup with a wg interface
with a single peer:
while true ; do
  sleep 300
  curr=$(date +%s)
  prev=$(wg show wg0 latest-handshakes | cut -f2)
  elapsed=$(( ${curr} - ${prev} ))
  [ ${elapsed} -ge 300 ] && wg syncconf wg0 /etc/wireguard/wg0.conf
done
on the client side for 3 days and the issue occurred once again.
This time the connection was restablished automatically and no manual
intervention was required.
Thank you Max and Roman.

Regards,
  Vicenç.


Re: lost connection on dynamic IP

2021-05-20 Thread Max Schulze



On 20.05.21 18:20, Roman Mamedov wrote:

On Thu, 20 May 2021 11:15:30 +0500
Roman Mamedov  wrote:


So, what do you mean is that wireguard does a single DNS resolution at
the beginning and further DNS resolutions need to be done elsewere. Is
that correct?

Yes.

I also remembered a case where just PersistentKeepalive won't save you, and
periodic DNS resolution on clients becomes mandatory. It is when the server's
physical location gets a power cut. On new boot-up (and router power-on) it
gets a new IP from the ISP, and has no idea where all the clients are. The
communication is broken until clients recheck the DNS record and update the
server's endpoint from that. WG does not do this on its own.



Just to point out what 'others are doing' - openwrt has a watchdog 
script [1] that might be run with cron every 15 mins



*/15 * * * * /usr/bin/wireguard_watchdog


which will update the new endpoint if the last handshake is too old:

wg set ${iface} peer ${public_key} endpoint 
"${endpoint_host}:${endpoint_port}"



It needs PersistenKeepalive also, if i understand correctly.

[1] 
https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob;f=package/network/utils/wireguard-tools/files/wireguard_watchdog;hb=HEAD



--

Max



Re: lost connection on dynamic IP

2021-05-20 Thread Roman Mamedov
On Thu, 20 May 2021 11:15:30 +0500
Roman Mamedov  wrote:

> > So, what do you mean is that wireguard does a single DNS resolution at
> > the beginning and further DNS resolutions need to be done elsewere. Is
> > that correct?
> 
> Yes.

I also remembered a case where just PersistentKeepalive won't save you, and
periodic DNS resolution on clients becomes mandatory. It is when the server's
physical location gets a power cut. On new boot-up (and router power-on) it
gets a new IP from the ISP, and has no idea where all the clients are. The
communication is broken until clients recheck the DNS record and update the
server's endpoint from that. WG does not do this on its own.

-- 
With respect,
Roman


Re: lost connection on dynamic IP

2021-05-20 Thread Vicente Bergas
Hello Roman,

On Wed, May 19, 2021 at 8:43 PM Roman Mamedov  wrote:
>
> On Tue, 18 May 2021 13:22:31 +0200
> Vicente Bergas  wrote:
>
> > A server connected to the Internet through an ISP that provides a
> > dynamic IP with NAT.
>
> If it's NAT, then your server has no dedicated public IP? What do you update
> to DNS, IP of the ISP's NAT pool (shared IP with many other customers)?

There is a public IP assigned to the router. The IP is dynamic, so, it
can change from time to time, but, once assigned, it is exclusive to
the router.
There is no carrier-grade NAT.
I've configured the router to forward the wireguard port to the
server, so, it is like the server is directly connected to the
Internet.
I think the PersistentKeepalive on the server side is not required. Is it?

On the client side, instead, the router has no port forwarded and
also, i think, there is CGNAT. That is the reason PersistentKeepalive
is present.

> > I think the issue happens when the ISP on the server side shuts down
> > the Internet connection for more than 1 hour! Then, it is restored
> > with a new IP.
> > inadyn detects the new IP and updates the DNS.
> > At this point the Internet connection is operational again, but the
> > client remains disconnected until rebooted.
> >
> > Is this scenario expected to work due to the "Built-in Roaming" ?
>
> It might work, helped by PersistentKeepalive, and as long as the server and 
> the
> client don't change their IPs/ports *at the same time*. To protect against
> that, or to improve resiliency in general (and assuming there's actually no 
> NAT
> at the server side after all), your client should resolve the DNS record for
> the server periodically, and in case the IP changed, call "wg set [interface]
> peer [key] endpoint [IP:port]".

So, what do you mean is that wireguard does a single DNS resolution at
the beginning and further DNS resolutions need to be done elsewere. Is
that correct?

> With respect,
> Roman

Regards,
  Vicenç.


Re: lost connection on dynamic IP

2021-05-20 Thread Roman Mamedov
On Thu, 20 May 2021 00:28:08 +0200
Vicente Bergas  wrote:

> There is a public IP assigned to the router. The IP is dynamic, so, it
> can change from time to time, but, once assigned, it is exclusive to
> the router.
> There is no carrier-grade NAT.
> I've configured the router to forward the wireguard port to the
> server, so, it is like the server is directly connected to the
> Internet.
> I think the PersistentKeepalive on the server side is not required. Is it?

I believe it is. Consider the server public IP has changed. The server sends
no Keepalives. The client sends them to the server's old IP. The whole thing
broke.

> So, what do you mean is that wireguard does a single DNS resolution at
> the beginning and further DNS resolutions need to be done elsewere. Is
> that correct?

Yes.

-- 
With respect,
Roman


Re: lost connection on dynamic IP

2021-05-19 Thread Roman Mamedov
On Tue, 18 May 2021 13:22:31 +0200
Vicente Bergas  wrote:

> A server connected to the Internet through an ISP that provides a
> dynamic IP with NAT.

If it's NAT, then your server has no dedicated public IP? What do you update
to DNS, IP of the ISP's NAT pool (shared IP with many other customers)?

> I think the issue happens when the ISP on the server side shuts down
> the Internet connection for more than 1 hour! Then, it is restored
> with a new IP.
> inadyn detects the new IP and updates the DNS.
> At this point the Internet connection is operational again, but the
> client remains disconnected until rebooted.
>
> Is this scenario expected to work due to the "Built-in Roaming" ?

It might work, helped by PersistentKeepalive, and as long as the server and the
client don't change their IPs/ports *at the same time*. To protect against
that, or to improve resiliency in general (and assuming there's actually no NAT
at the server side after all), your client should resolve the DNS record for
the server periodically, and in case the IP changed, call "wg set [interface]
peer [key] endpoint [IP:port]".

-- 
With respect,
Roman