
Я работаю в большой компании, которая имеет десятки брандмауэров и большой прокси-сервер. Время от времени мне нужно получить доступ к некоторым сервисам, которые находятся в изолированных сетях, и у меня есть доступ к сервисам в этих сетях. В настоящее время у меня следующий подход:
У меня есть приложение, в котором я настраиваю локальные туннели, например
ssh -L 30001:super01.secret.host:3419 secretServer1 ssh -L 30002:super01.secret.host:8080 secretServer1 ssh -L 30011:super02.secret.host:8080 secretServer1 ssh -L 30021:super03.secret.host:4000 secretServer2
У меня есть закладки для каждого веб-сервиса, которые указывают на (например) localhost:30001
Я настраиваю локальные программы, которые разрабатываю, на использование URL-адресов localhost:30001.
Я знаю, что есть другой способ с динамической переадресацией портов и Socks-прокси, но его настройка — настоящая головная боль (учитывая, что мне в любом случае нужен общесистемный прокси-сервер моей компании).
Есть ли способ перенаправить запросы, которые идут на super01.secret.host:3419 и направить их через localhost:30001? Потому что тогда я могу реализовать приложение (скрипт), где вы определяете, что хотите получить доступ к super01.secret.host через сервер secretServer1, и он откроет локальную переадресацию портов и создаст перенаправление. Или есть еще более удобный способ настроить это.
Моя главная цель: - иметь все сетевые настройки для всей системы - иметь прозрачный доступ к службам из изолированных сетей (т.е. если из этой сети мне нужно будет получить доступ к super01.secret.host:8080, я хочу получить доступ к тому же хосту и порту с моей локальной машины) - я хочу, чтобы все остальные сетевые функции работали как и прежде (т.е. запросы направлялись через прокси-сервер компании, если они не находятся в списке noproxy)
решение1
Вы можете использовать как ssh-прокси, так и переадресацию портов с помощью iptables.
вы настраиваете ssh-прокси, как обычно.
переадресация портов, например, для первого перенаправления
iptables -A PREROUTING -t nat -i eth0 -p tcp -d secretServer1 --dport 3419 -j DNAT --to localhost:3001
Примечание: это не было проверено