Reproducing a set of ip commands in netplan

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.1

This 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.1

However, 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: 129

I'm on netplan version 0.36.1


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