Маршруты
Большая часть программного обеспечения VPN достаточно умна, чтобы настраивать маршруты, которые игнорируют трафик локальной сети (LAN), поэтому SSH работает с других компьютеров вашей домашней сети.
Однако весь интернет-трафик по-прежнему направляется через интерфейс VPN по умолчанию. Это включает в себя соединения через переадресацию портов. Таким образом, трафик SSH поступает через ваш маршрутизатор, но затем получает ответ через VPN (что портит его, поскольку сервер VPN имеет другой IP-адрес).
Один из способов решить эту проблему - настроить некоторые правила брандмауэра iptables на вашем компьютере с Debian для отправки трафика SSH через обычный сетевой интерфейс, а не через интерфейс VPN.
пример
Я попытался адаптировать этот ответ к этой ситуации (предполагая, что ваш домашний маршрутизатор - 192.168.0.1, а ваш компьютер Debian - 192.168.0.20):
Отредактируйте /etc/iproute2/rt_tables
и добавьте новую таблицу, добавив следующую строку:
200 eth-route
Затем вам нужно настроить новую таблицу маршрутизации с именем eth-route
на шлюз по умолчанию и создать правила для условной отправки трафика в эту таблицу.
# Populate secondary routing table
ip route add default via 192.168.0.1 dev eth0 table eth-route
# Anything with this fwmark will use the secondary routing table
ip rule add fwmark 0x1 table eth-route
# Mark these packets so that iproute can route it through eth-route
iptables -A OUTPUT -t mangle -o tun0 -p tcp --dport 22 -j MARK --set-mark 1
# now rewrite the src-addr
iptables -A POSTROUTING -t nat -o eth0 -p tcp --dport 22 -j SNAT --to 192.168.0.20
Чтобы сделать это автоматическим, нужно либо добавить эти команды в конец /etc/rc.local
либо заставить openvpn
делать это при запуске.
Скрестить пальцы...