The high-level overview is this: I have an Impish Ubuntu server with two interfaces, addresses of 172.16.2.103/24
and 10.1.2.10/24
. I would like default traffic to go via the gateway 172.16.2.254
. However, when I specify a source address of 10.1.2.10
I want it to have a gateway of 10.1.2.254
. What follows works
99% of the time, but I wish for the kernel to select the source IP 172.16.2.103
even when contacting 10.1.2.0/24
. This was possible in /etc/networks/interfaces
but I haven't been able to figure it out using netplan.
This is what I have in my netplan config:
network:
ethernets:
ens160:
addresses:
- 172.16.2.103/24
routes:
- to: 0.0.0.0/0
via: 172.16.2.254
nameservers:
addresses:
- 10.1.2.1
search:
- localdomain
optional: yes
ens192:
addresses:
- 10.1.2.10/24
routing-policy:
- from: 10.1.2.10
table: 10
routes:
- to: 0.0.0.0/0
via: 10.1.2.254
table: 10
optional: yes
version: 2
As I say this works fine mostly. I have a routing-policy (aka ip rule) which means that if I change the source address of packets I look up the 10 routing table. However, there is an additional route I wish to remove from main.
This is what I have when I check out the routing tables:
IN1: me@host:~$ ip route
OUT1: default via 172.16.2.254 dev ens160 proto static
OUT2: 172.16.2.0/24 dev ens160 proto kernel scope link src 172.16.2.103
OUT3: 10.1.2.0/24 dev ens192 proto kernel scope link src 10.1.2.10
IN2: me@host:~$ ip route list table 10
OUT5: default via 10.1.2.254 dev ens192 proto static
I would like the OUT3 removed, or more accurately moved into the 10 routing table, so that there is no layer2 link to 10.1.2.0/24 in the main routing table. I can do it manually thus:
me@host:~$ sudo ip route del 10.1.2.0/24 dev ens192
But I cannot see how to embed that in netplan. Previously I would have added an
up statement to /etc/network/interfaces
but that's not an option any more.
Thanks in advance.