Мои мысли такие:
У меня есть эта внешняя служба vpn, к которой я подключаюсь. Но могу ли я настроить локальный прокси-сервер, который использует это соединение vpn, чтобы приложения, которые подключаются через этот прокси, использовали vpn? Это относится к системе Linux.
Подсказки и ссылки приветствуются!
РЕДАКТИРОВАТЬ: вариант использования: возможно, есть другой способ сделать это.
Router #1 - Connects by the default net provided by ISP
Router #2 - Connects by PPTP VPN to another 'ISP'
Клиенты в сети по умолчанию подключены к обычному маршрутизатору №1, и весь трафик обрабатывается им. У клиента другой браузер (опера), который подключается через прокси к маршрутизатору №2 и заканчивается в конце туннеля VPN.
Это проясняет?
Шесть лет спустя я подошел к этому вопросу и почти подвел его, основываясь на принятом ответе. На сегодняшний день это несложно с использованием политик маршрутизации. Все подробности доступны на этом же сайте, по адресу https://serverfault.com/a/389004/70774.
В моем случае мне нужно было сначала убедиться, что vpn не был маршрутом по умолчанию. Как вы этого добьетесь, зависит от того, какой диспетчер соединений вы используете.
Прокси-сервер (tinyproxy) работает с собственным пользователем, поэтому я помечаю все пакеты, приходящие от этого пользователя, с помощью команды
iptables -t mangle -A OUTPUT -m owner --uid-owner 125 -j MARK --set-mark 2
где 125
это uid пользователя tinyproxy и 2
- произвольное число, которое будет сопоставлено позже.
Затем я даю указание системе маршрутизации использовать определенную таблицу для маршрутизации всех запросов, отмеченных 2
.
ip rule add fwmark 2 table 3
Опять же, 3
это просто произвольное число. Просто помолите внимание, чтобы выбрать неиспользуемый стол (просто посмотрите, есть ли что-то на столе с вами, выберите с помощью ip route list table 3
).
Затем я заполняю таблицу 3
с моим маршрутом по умолчанию:
ip route add default dev ppp0 via proto static scope link metric 1024
Последним шагом было создание правила маскировки, необходимость которого я не совсем понимаю:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
И вуаля!
Возможно, я не понял вашего вопроса, но попробуйте следующее:
Хотя описанная вами ситуация невозможно (запущенное приложение не может переопределить системную таблицу маршрутизации) у вас может быть два варианта:
человек ssh_config
DynamicForward Specifies that a TCP port on the local machine be forwarded over the secure channel, and the application protocol is then used to determine where to connect to from the remote machine. The argument must be [bind_address:]port. IPv6 addresses can be specified by enclosing addresses in square brackets or by using an alternative syn‐ tax: [bind_address/]port. By default, the local port is bound in accor‐ dance with the GatewayPorts setting. However, an explicit bind_address may be used to bind the connection to a specific address. The bind_address of “localhost” indicates that the listening port be bound for local use only, while an empty address or ‘*’ indicates that the port should be available from all interfaces. Currently the SOCKS4 and SOCKS5 protocols are supported, and ssh(1) will act as a SOCKS server. Multiple forwardings may be specified, and addi‐ tional forwardings can be given on the command line. Only the superuser can forward privileged ports.