<div dir="ltr"><div dir="auto"><div dir="auto"><br></div><br><br><div class="gmail_quote" dir="auto"><div dir="ltr">On Wed, Apr 18, 2018, 1:54 PM Guus Sliepen <<a href="mailto:guus@tinc-vpn.org" target="_blank">guus@tinc-vpn.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Mon, Apr 16, 2018 at 09:10:02AM +1000, Hamish Moffatt wrote:<br>
<br>
> I have a bunch of Debian stretch machines with systemd where I find that<br>
> tinc starts too early during boot, and fails to work.<br>
> <br>
> Typically it is running, but printing out<br>
> <br>
> Apr 14 00:53:41 db7 tinc[3077]: Can't write to Linux tun/tap device (tun<br>
> mode) /dev/net/tun: Input/output error<br>
[...]<br>
> Apr 16 06:54:43 dbtest3 tinc[3206]: tincd 1.1pre14 (Jun  5 2017 01:24:43)<br>
> starting, debug level 0<br>
> Apr 16 06:54:43 dbtest3 tinc[3206]: /dev/net/tun is a Linux tun/tap device<br>
> (tun mode)<br>
> Apr 16 06:54:43 dbtest3 tinc[3206]: Error starting /usr/sbin/tincd<br>
> Apr 16 06:54:43 dbtest3 tinc[3206]: SIOCSIFADDR: No such device<br>
> Apr 16 06:54:43 dbtest3 tinc[3206]: rsvpn: ERROR while getting interface<br>
> flags: No such device<br>
> Apr 16 06:54:43 dbtest3 tinc[3206]: SIOCSIFNETMASK: No such device<br>
> Apr 16 06:54:43 dbtest3 tinc[3206]: SIOCADDRT: No such device<br>
> Apr 16 06:54:43 dbtest3 tinc[3206]: SIOCADDRT: No such device<br>
<br>
That sounds like tinc's tun interface is not being configured correctly.<br>
Can you show us your tinc-up script?<br>
<br>
> The tinc.service file says that tinc should start after networking<br>
> (After=network.target). I wonder if After=network-online.target might be<br>
> better? As defined by<br>
> <a href="https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/" rel="noreferrer noreferrer" target="_blank">https://www.freedesktop.org/<wbr>wiki/Software/systemd/<wbr>NetworkTarget/</a><br>
> <br>
> I changed my local copy and tinc came up on boot successfully.<br>
<br>
Hm, tinc itself should handle the network not being online just fine. It<br>
will automatically retry after a while if it cannot make any outgoing<br>
connections.<br>
<br>
-- <br>
Met vriendelijke groet / with kind regards,<br>
     Guus Sliepen <<a href="mailto:guus@tinc-vpn.org" rel="noreferrer" target="_blank">guus@tinc-vpn.org</a>><br>
______________________________<wbr>_________________<br>
tinc mailing list<br>
<a href="mailto:tinc@tinc-vpn.org" rel="noreferrer" target="_blank">tinc@tinc-vpn.org</a><br>
<a href="https://www.tinc-vpn.org/cgi-bin/mailman/listinfo/tinc" rel="noreferrer noreferrer" target="_blank">https://www.tinc-vpn.org/cgi-<wbr>bin/mailman/listinfo/tinc</a></blockquote></div><div dir="auto"><br></div><div dir="auto"><br></div><div class="gmail_quote" dir="auto"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
</blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-family:sans-serif;font-size:14px">>That sounds like tinc's tun interface is not being configured correctly.</span><br style="font-family:sans-serif;font-size:14px"><span style="font-family:sans-serif;font-size:14px">>Can you show us your tinc-up script?</span></blockquote></div><div dir="auto"><br></div><div dir="auto"><br>>
regularly. Unfortunately because it is running systemd does not restart 
it, even though it's not actually working. Restarting it manually fixes 
this.

<br></div><div>seems to me tinc-up is working for Hamish, <br></div><div dir="auto"><br>No. It sounds like tinc is trying to outrun the loading of the tap module. and I had the same issue. note "
SIOCSIFADDR: No such device"<br></div><div>tinc is outrunning key network modules and scripts that allow, among other things, tun/tap device mac assignment. even in router mode where "mac does not exist" the virtual interface<br></div><div>must still be able to be asigned one by the network stack, and this early in loading it is not able to, <br><br><br><br>
> The tinc.service file says that tinc should start after networking<br>
> (After=network.target). I wonder if After=network-online.target might be<br>
> better? As defined by<br>
> <a href="https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/" rel="noreferrer noreferrer" target="_blank">https://www.freedesktop.org/<wbr>wiki/Software/systemd/<wbr>NetworkTarget/</a><br>
> <br>
> I changed my local copy and tinc came up on boot successfully.

<br><br></div><div>this is a workaround, as it causes tinc to load later, the network stack is fully available at this point.<br><br></div><div>Let us remember, that systemd can load multiple systems and services in tandem, tinc being set to load "After=network.target" simply means after the first script for networking has returned a running status to systemd, <br></div><div>this does not however mean that networking is fully ready to handle virtual devices. this was not an issue on initd systems, as initd waits till each service is fully up, before loading the next.<br></div><div>another issue that comes into play is that the system user permissions system needs to be loaded, so that access to the tun/tap device may be checked.<br><br><br>[Unit]<br>Description=Tinc VPN<br>After=network.target<br></div><div>Requires=
network.target<br><br><br></div><div>may also help, as it makes network.target a hard dependency before tinc even tries to start.<br></div><div><br></div><div><br><br></div></div></div>