У меня есть сервер Ubuntu, которым я удаленно управляю через ssh, мне нужно запустить клиент OpenVpn на этом сервере, поэтому весь трафик будет проходить через VPN-туннель, за исключением двух вещей: 1. ssh-соединение с моего компьютера здесь, 2. Другая программа использует самоопределяемый порт 43210.
Это то, что я пробовал. Я создал новую таблицу правил IP для всего трафика, который не хочу использовать через VPN:
# reserved values
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
206 passvpn
Я определил поведение таблицы passvpn для использования локального устройства без VPN:
ip route add default via xxx.xxx.xxx.xxx dev eth0 table passvpn
где xxx.xxx.xxx.xxx - мой шлюз
Я добавляю новое правило IP, чтобы направить отмеченный трафик в таблицу:
ip rule add fwmark 66 table passvpn
Я помечаю SSH и трафик другой программы этой маской 66, используя номер порта:
iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 66
Когда я запускаю OpenVpn, мое ssh-соединение прерывается, и я не могу установить никаких новых соединений, ошибка как «тайм-аут». Я подумал, что, возможно, запрос на подключение с моего компьютера не может достичь сервера с запущенным VPN, поэтому я добавляю еще одно правило iptables как:
iptables -t mangle -A INPUT -p tcp --sport 22 -j MARK --set-mark 66
Но все равно не работает.
Подскажите, пожалуйста, если я здесь что-то не так сделал? Любое предложение будет оценено, спасибо!