I recently upgraded to ubuntu 18.04 from 16.04 and am trying to figure out how to get my ip route and ip rule commands that I used to put in /etc/network/interfaces working under netplan.
These are the commands that I'm trying to reproduce, that I previously ran in /etc/network/interfaces:
sudo ip rule add table 129 from 192.168.1.160
sudo ip route add table 129 to 204.8.230.0/24 dev enp0s3
sudo ip route add table 129 to 192.168.1.0/24 dev enp0s3
sudo ip route add table 129 default via 192.168.1.1This is my first pass at the netplan config in /etc/netplan/01-netcfg.yaml:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: yes routes: - from: 192.168.1.160 to: 204.8.230.0/24 via: 192.168.1.1 - from: 192.168.1.160 to: 192.168.1.0/24 via: 192.168.1.1However, after a restart those routes do not show up in the ip route output. How do I get these routes to stick?
Note that I've also tried putting these commands in a script in /usr/lib/networkd-dispatcher/routable.d based on some documentation I found, but that does not appear to have worked either.
EDIT: I'm getting closer. This is the new config, but now the problem is that although the table shows up in ip rule, ip route show table 129 is empty:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: yes routing-policy: - from: 192.168.1.160 table: 129 routes: - to: 204.8.230.0/24 via: 192.168.1.1 table: 129 - to: 192.168.1.0/24 via: 192.168.1.1 table: 129 - to: 0.0.0.0/0 via: 192.168.1.1 table: 129I'm on netplan version 0.36.1
1 Answer
I figured it out. The problem was that systemd-networkd was trying to set the routes before the network was up, which was failing. The fix is on-link: True on the routes:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: yes routing-policy: - from: 192.168.1.160 table: 129 routes: - to: 204.8.230.0/24 via: 192.168.1.1 table: 129 on-link: True - to: 192.168.1.0/24 via: 192.168.1.1 table: 129 on-link: True - to: 0.0.0.0/0 via: 192.168.1.1 table: 129 on-link: True 1