Skip to content

Instantly share code, notes, and snippets.

@duruyao
Last active September 19, 2023 01:42
Show Gist options
  • Save duruyao/623246d27c0035e6c89f576614693634 to your computer and use it in GitHub Desktop.
Save duruyao/623246d27c0035e6c89f576614693634 to your computer and use it in GitHub Desktop.
Custom routing table.

I have an Ubuntu system that uses two wired networks simultaneously (PCI Ethernet, USB Ethernet). I would like it to use the USB wired network for internet access and the PCI wired network for accessing the internal network (e.g., 10.0.13.120, 10.0.13.134, 10.0.12.1, 10.0.10.16, 10.0.10.17, etc).

1.

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.100.1   0.0.0.0         UG    101    0        0 usb0
0.0.0.0         192.168.31.1    0.0.0.0         UG    102    0        0 enp4s0
192.168.31.0    0.0.0.0         255.255.255.0   U     102    0        0 enp4s0
192.168.100.0   0.0.0.0         255.255.255.0   U     101    0        0 usb0

2.

sudo ip route add default via 192.168.100.1 dev usb0 metric 100

3.

sudo ip route add 10.0.13.120/32 via 192.168.31.1 dev enp4s0
sudo ip route add 10.0.13.134/32 via 192.168.31.1 dev enp4s0
sudo ip route add 10.0.12.1/32 via 192.168.31.1 dev enp4s0
sudo ip route add 10.0.10.16/32 via 192.168.31.1 dev enp4s0
sudo ip route add 10.0.10.17/32 via 192.168.31.1 dev enp4s0

4.

sudo ip route flush cache

5.

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.100.1   0.0.0.0         UG    100    0        0 usb0
0.0.0.0         192.168.100.1   0.0.0.0         UG    101    0        0 usb0
0.0.0.0         192.168.31.1    0.0.0.0         UG    102    0        0 enp4s0
10.0.10.16      192.168.31.1    255.255.255.255 UGH   0      0        0 enp4s0
10.0.10.17      192.168.31.1    255.255.255.255 UGH   0      0        0 enp4s0
10.0.12.1       192.168.31.1    255.255.255.255 UGH   0      0        0 enp4s0
10.0.13.120     192.168.31.1    255.255.255.255 UGH   0      0        0 enp4s0
10.0.13.134     192.168.31.1    255.255.255.255 UGH   0      0        0 enp4s0
192.168.31.0    0.0.0.0         255.255.255.0   U     102    0        0 enp4s0
192.168.100.0   0.0.0.0         255.255.255.0   U     101    0        0 usb0
#!/usr/bin/env bash
set -xeuo pipefail
route -n | grep -v -E "virbr0|docker0"
ip route add default via 192.168.100.1 dev usb0 metric 1 || true
ip route add 10.0.13.120/32 via 10.0.12.1 dev enp4s0 || true
ip route add 10.0.13.134/32 via 10.0.12.1 dev enp4s0 || true
ip route add 10.0.12.1/32 via 10.0.12.1 dev enp4s0 || true
ip route add 10.0.10.16/32 via 10.0.12.1 dev enp4s0 || true
ip route add 10.0.10.17/32 via 10.0.12.1 dev enp4s0 || true
ip route add 10.0.10.10/32 via 10.0.12.1 dev enp4s0 || true
ip route add 10.180.10.103/32 via 10.0.12.1 dev enp4s0 || true
ip route add 211.155.250.210/32 via 10.0.12.1 dev enp4s0 || true
ip route flush cache
route -n | grep -v -E "virbr0|docker0"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment