Some networks, e.g. Azure VNets, are quite restrictive about the supported procotols. Azure for example only supports TCP and UDP. Fortunately there is the Foo-Over-UDP ("FOU"), tunneling over UDP and thus bypassing the Azure limitation.
- You need a Linux distribution that supports FOU, for example Ubuntu.
RHEL for example does not support FOU (so Fedora and CentOS probably neither). - the
fou
module must be configured to be loaded automatically. (modprobe fou
,/etc/modules.conf
) - choose your "foo": e.g. IPIP.
Check your OS docs what other protocols are supported, for example viaman systemd.netdev
. - sending and receving FOU is separated, you will need to create on device for each:
- create one device for sending/encapsulation (
fou-tx
,fou-tx.netdev
) - create one device for receiving/decapsulation (
fou-rx
,fou-rx.netdev
)
- create one device for sending/encapsulation (
- attach network to device for sending (
fou-static.network
) reboot
- ... wait for machine(s) to come back ...
- profit!
Some links:
- https://developers.redhat.com/blog/2019/05/17/an-introduction-to-linux-virtual-interfaces-tunnels
- https://lwn.net/Articles/614348/
- https://serverfault.com/a/825156
- https://freedesktop.org/software/systemd/man/systemd.netdev.html
infra@left:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
infra@left:~$ ping 10.0.1.2 -c 4
PING 10.0.1.2 (10.0.1.2) 56(84) bytes of data.
64 bytes from 10.0.1.2: icmp_seq=1 ttl=64 time=0.463 ms
64 bytes from 10.0.1.2: icmp_seq=2 ttl=64 time=0.469 ms
64 bytes from 10.0.1.2: icmp_seq=3 ttl=64 time=0.771 ms
64 bytes from 10.0.1.2: icmp_seq=4 ttl=64 time=1.37 ms
--- 10.0.1.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3020ms
rtt min/avg/max/mdev = 0.463/0.769/1.373/0.370 ms
infra@right:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
infra@right:~$ ping -c 4 10.0.1.1
PING 10.0.1.1 (10.0.1.1) 56(84) bytes of data.
64 bytes from 10.0.1.1: icmp_seq=1 ttl=64 time=0.768 ms
64 bytes from 10.0.1.1: icmp_seq=2 ttl=64 time=0.515 ms
64 bytes from 10.0.1.1: icmp_seq=3 ttl=64 time=0.745 ms
64 bytes from 10.0.1.1: icmp_seq=4 ttl=64 time=0.654 ms
--- 10.0.1.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3070ms
rtt min/avg/max/mdev = 0.515/0.670/0.768/0.099 ms