Re: lost connection on dynamic IP
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
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
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
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
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
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