Туннель из подручных средств, только ssh и немного iptables

На сервере

# vim /etc/ssh/sshd_config
PermitTunnel yes

systemctl restart ssh

# проверь что модуль tun загружен
modprobe tun
lsmod | grep tun

На клиенте, всё делаем от root

# подключение
ssh -w 0:0 root@1.2.3.4
# создаст `tun0` на клиенте и `tun0` на сервере

На сервере

# nat, forwarding
iptables -t nat -A POSTROUTING -s 10.0.0.0/30 -o eth0 -j MASQUERADE
iptables -A FORWARD -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT

sysctl -w net.ipv4.ip_forward=1

ip addr add 10.0.0.2/30 peer 10.0.0.1 dev tun0
ip link set tun0 up

На клиенте

ip addr add 10.0.0.1/30 peer 10.0.0.2 dev tun0
ip link set tun0 up
ping 10.0.0.2

# настройка маршрутов
# 1. отдельный маршрут до сервера
ip r add 1.2.3.4/32 via 192.168.31.1 dev enx00
# 2. весь трафик в туннель
ip route add 0.0.0.0/1 via 10.0.0.2
ip route add 128.0.0.0/1 via 10.0.0.2

проверяем интернет в браузере, смотрим 2ip.ru - должен показать ip сервера (1.2.3.4)

Порядок подключения:

  1. ssh на сервер
  2. повесить адреса на tun0 у клиента и сервера
  3. задать маршруты на клиенте и на сервере (на сервере они могут остаться с предыдущего подключения)

PS: То же самое можно получить используя sshuttle

pip install sshuttle --break-system-packages

# Обязательно -x - исключить трафик к самому серверу
# Перенаправить весь IPv4-трафик через сервер
sudo /usr/local/bin/sshuttle --disable-ipv6 -r hv 0.0.0.0/0 -x 1.2.3.4