Туннель из подручных средств, только 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)
Порядок подключения:
- ssh на сервер
- повесить адреса на tun0 у клиента и сервера
- задать маршруты на клиенте и на сервере (на сервере они могут остаться с предыдущего подключения)
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