Имеется купленный vps c ubuntu 20.04 от ovh в Германии. Также имеется купленный nordvpn который с недавних пор РКН начал блокировать в России с переменным успехом.
Сам vpn в общем-то так и работает без особых проблем (точнее не все протоколы, не везде и не всегда, но это уже частности), но фактически не работает их proxy-extension для браузера причем аккурат после того как началась активная блокировка tor, а не самого nordvpn, а т.к. мне vpn нужен пока в основном только для интернет-серфинга, я купил vps-ку за пределами РФ, у себя на клиенте я буду поднимать socks5-ssh-proxy прописывая его в браузере, подключаясь к vps по ssh (т.е socks трафик до vps будет завернут в ssh туннель) а уже с vps буду подключаться к nordvpn.
В общем то все хорошо, за исключением того, что при поднятом на vps подключении к nordvpn к самой vps уже нельзя подключится по ssh т.к. по умолчанию блокируются входящие соединения.
Сейчас на vps работает ufw со следующими правилам
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
sshport/tcp (SSH-custom) LIMIT IN Anywhere
Anywhere ALLOW IN myremoteclinetstaticip
где sshport это ssh поднятый на нестандартном порту myremoteclinetstaticip - адрес моего основного ПК с которого я обычно подключаюсь к vps по ssh
Таким образом без включенного на vps vpn любой клиент может подключаться по порту ssh, а я со своей основной машины могу подключаться к vps вообще по любому порту без ограничений. Однако при включенном nordvpn на vps ssh связь обрывается.
Официальный клиент nordvpn предоставляет https://support.nordvpn.com/Connectivity/Linux/1325531132/Installing-and-usin... возможность добавлять адреса и/или порты, чтобы при включенном vpn по ним можно было все-равно подключаться к устройству.
При добавлении адреса моеuj основного ПК myremoteclinetstaticip ssh на vps с него становится доступен даже с подключенным на vps nordvpn
Technology: NORDLYNX
Firewall: enabled
Kill Switch: enabled
CyberSec: disabled
Notify: disabled
Auto-connect: disabled
IPv6: disabled
DNS: disabled
Whitelisted ports:
sshport (TCP)
Whitelisted subnets:
myremoteclinetstaticip/32
однако доступ по порту ssh с любого другого произвольного клиента или с моего ПК если убрать его адрес из вайтлиста не работает причем именно на vps т.к. я попробовал сделать все тоже-самое на локальной вм virtualbox и там достаточно указать порт ssh в whitelist nordvpn чтобы разрешить доступ только gj ssh любому клиенту (т.е. адрес клиента добавлять в вайтлист уже не обязательно).
фактически команда
nordvpn whitelist add subnet myremoteclinetstaticip/32
создаёт на vps 1) роут вида
myremoteclinetstaticip via шлюз_по_умочанию_vps dev имя_сетевого_интерфейса
ACCEPT all -- myremoteclinetstaticip anywhere
ACCEPT all -- anywhere myremoteclinetstaticip
в свою очередь команда
nordvpn whitelist add port sshport protocol TCP
ACCEPT tcp -- anywhere anywhere tcp dpt:sshport
ACCEPT tcp -- anywhere anywhere tcp spt:sshport
ACCEPT tcp -- anywhere anywhere tcp dpt:sshport
ACCEPT tcp -- anywhere anywhere tcp spt:sshport
при этом на локальной виртуалке, где все работает как надо конечное содержимое iptables точно такое же как и на vps за исключением ip адресов, поэтому я предположил, что возможно дело в маршрутах Из того, что я нашел https://superuser.com/questions/1608801/using-wireguard-to-essentially-give-a... для wireguard (а на vps к norvpn я подключаюсь через nordlynx==wireguard) действительно для сохранения ssh необходимо прописать дополнительные настройки примерно такого вида
ip rule add preference 102 to 44.44.44.44 iif eth0 ipproto tcp dport 22 lookup local
ip rule add preference 103 from 44.44.44.44 iif lo ipproto tcp sport 22 lookup main
сделал tcpdump на vps от хоста откуда пытаюсь подключиться к vps на vps видно, что обращения от клиента прилетают, но ответа на них от самого vps нет
tcpdump: listening on имя_интерфейса, link-type EN10MB (Ethernet), capture size 262144 bytes
17:10:24.796571 IP (tos 0x0, ttl 48, id 53460, offset 0, flags [DF], proto TCP (6), length 60)
адрес_откуда_подключаюсь.10407 > имя_vps.sshport: Flags [S], cksum 0xaaff (correct), seq 2749862871, win 64240, options [mss 1460,sackOK,TS val 491584064 ecr 0,nop,wscale 7], length 0
E..<..@.0..,..o".}.\(..a.......................
.L.@........
также включал full-логи ufw там такие записи
Feb 5 10:53:21 имя_vps kernel: [52278.088516] [UFW AUDIT] IN= OUT=имя_сетевого_интерфейса_VPN SRC=адрес_vps DST=адрес_клиента LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=порт_ssh DPT=10417 WINDOW=64296 RES=0x00 ACK SYN URGP=0
Что куда нужно прописать, чтобы разрешить доступ по ssh к vps с любого адреса при включенном vpn?