Назад | Перейти на главную страницу

Как обойти / исключить порт на клиенте OpenVPN БЕЗ обхода всего входящего трафика?

Я читаю этот ответ заранее написано:

ip rule add from x.x.x.x table 100
ip route add table 100 to y.y.y.y/y dev ethX
ip route add table 100 default via z.z.z.z

Проблема в, это будет применяться ко всем портам, а затем я мог бы использовать iptables для ОТКЛЮЧЕНИЯ определенных соединений, но это не то, что я хочу.

Я хочу, чтобы OpenVPN ...

Клиент - Mac Mini. При необходимости могу изменить конфигурацию сервера.

Этого можно добиться с помощью iptables mangle. Ваши таблицы маршрутизации в порядке, вам просто нужно добавить несколько правил, чтобы включить / включить конкретный трафик.

В вашем случае для SSH это будет примерно так:

ip rule add fwmark 2 table 100
ip route flush cache
iptables -t mangle -A OUTPUT -p tcp --dport 22 -j MARK --set-mark 2
iptables -t nat -A POSTROUTING -o ethX -j SNAT --to-source z.z.z.z
                                  ^                        ^
                               your public interface      your public IP

Это будет:

  1. установите fwmark 2 в вашу таблицу маршрутизации 100
  2. очистить кеш маршрутизации, чтобы избежать помех
  3. установить отметку 2 для всех пакетов на порт назначения 22 (SSH)
  4. SNAT все пакеты, идущие из ethX, на ваш публичный IP

Я не знаю, нужно ли вам все это или нужно все переворачивать, зависит от того, как вы хотите на это смотреть (все трафик через OpenVPN кроме xxx, или нет трафик через OpenVPN кроме xxx).

Например. вам даже не нужно использовать таблицы маршрутизации, но это, безусловно, намного чище, иначе вам не понадобится SNAT / маскарад и т. д.