Туннелирование при помощи ssh
Помимо socksv5 у ssh есть возможность создавать и сетевые туннели - и эта замечательная опция совершенно незаслуженно игнорируется, в тени от ssh -D/L/R.
Все просто - разрешаем туннели в sshdconfig на сервере sshd:
l
далее подключаемся к этому серверу с опцией ssh -w
root@client> ssh -w 0 адрес_сервера
получаем туннель, при проблеме с правами проще подключиться рутом для начала.
туннель не отображается в ifconfig, ибо по умолчанию в состоянии down.
iconfig -a его все равно отобразит
Поднимаем
ifconfig tun0 up
причем и на клиентской и на серверной части.
Далее все привычно для тех, кто раздавал интернет с машины или же владеет роутингом.
Назначаем адреса
root@client> ip a a dev tun0 192.16.1.1
root@server> ip a a dev tun0 192.16.1.2
настраиваем роутинг для начала только для концов туннеля -
root@client> ip r a 192.16.1.2 dev tun0
root@server> ip r a 192.16.1.1 dev tun0
на сервере разрешаем перенаправление
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
и запускаем маскарад:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
на клиенте добавляем роутинг до сервера:
ip r a адрес_сервера via текущий_шлюз dev текущее_устройство
у меня это так - via 192.168.1.1 dev wlo1
удаляем умолчательный шлюз
ip r d default via 192.168.1.1 dev wlo1
добавляем умолчательным маршрут через туннель:
ip r a default via 192.16.1.2 dev tun0
ну и как бы на этом все.