You are not logged in.

#1 2014-11-10 12:37:38

bcd87
Member
Registered: 2008-11-27
Posts: 12

netctl: default route disappears

I use netctl to connect to a wireless network that doesn't provide me with a default route.
The default route is added using Routes=() in the netctl profile.
However, after a certain amount of time the route just disappears. I can manually add it again using ip route, upon which everything works again.
The netctl service is running.

Does anyone know what might cause this? I don't see anything weird in the logging.

Offline

#2 2014-11-10 17:56:08

Leonid.I
Member
From: Aethyr
Registered: 2009-03-22
Posts: 999

Re: netctl: default route disappears

bcd87 wrote:

I use netctl to connect to a wireless network that doesn't provide me with a default route.
The default route is added using Routes=() in the netctl profile.
However, after a certain amount of time the route just disappears. I can manually add it again using ip route, upon which everything works again.
The netctl service is running.

Does anyone know what might cause this? I don't see anything weird in the logging.

Assuming that you obtain an IP address via DHCP, I guess that at the lease renewal, your dhcp client rewrites your default route with a blank one. If you are using dhcpcd(8), I'd try running it with "-G" in DhcpcdOptions='' (it's undocumented due to whatever reason). If you are using dhclient, read its manpage for an equivalent option. Or better yet, get rid of it smile


Arch Linux is more than just GNU/Linux -- it's an adventure
pkill -9 systemd

Offline

#3 2014-11-10 18:17:20

bcd87
Member
Registered: 2008-11-27
Posts: 12

Re: netctl: default route disappears

Just added -G to my DhcpcdOptions. I'll be able to test again tomorrow. Thanks smile

Edit: Didn't work. The route is still disappearing.

Last edited by bcd87 (2014-11-11 08:25:59)

Offline

#4 2014-11-13 10:29:45

bcd87
Member
Registered: 2008-11-27
Posts: 12

Re: netctl: default route disappears

Right, so I finally figured out what's happening.

The first issue is that I don't get a default route. This is due to a misconfigured DHCP server.
RFC3442 states that when option 121 (Classless Static Route) is used, the DHCP client must ignore the Router option:

If the DHCP server returns both a Classless Static Routes option and
   a Router option, the DHCP client MUST ignore the Router option.

I used DhcpcdOptions='-O 121' to ignore option 121, and verified that a default route was now automatically added without having to use netctl's Routes=('') option.

That still leaves the issue of the disappearing route. Apparently there are some issues with my network driver that causes a lost carrier a few times a day. When that happens all routes get removed, when the carrier is acquired again (in some cases only 4 seconds later), the routes get setup according to the DHCP options, but the routes in netctl are ignored.
This seems like a bug to me.

Edit: Created a bug-report https://bugs.archlinux.org/task/42772

Last edited by bcd87 (2014-11-13 11:18:09)

Offline

#5 2014-11-15 02:26:43

Leonid.I
Member
From: Aethyr
Registered: 2009-03-22
Posts: 999

Re: netctl: default route disappears

I'm glad that you found a workaround... but why do think this is a bug in netctl? AFAIU from reading /usr/lib/network/ip, it sets a static route after a call to dhcpcd. So, when the lease is renewed, the route is overwritten by dhcpcd. I don't think that your wifi issues are related to the TCP/IP problems. Are you using netctl-auto with wpa_actiond? If not, netctl/dhcpcd won't even notice that your carrier disappeared.


Arch Linux is more than just GNU/Linux -- it's an adventure
pkill -9 systemd

Offline

Board footer

Powered by FluxBB