Прошу помочь мне установить туннели для следующих нужд:
Есть сервер LocalTest, на котором я root, поэтому я могу делать что угодно (Debian SSH). Этому серверу разрешен доступ (фильтрация IP присутствует на другой стороне) порт 443 сервера, который мы можем назвать WebserviceServer. Я хочу позволить человеку, который не может открыть SSH для localtest, получить доступ к WebserviceServer: 443. Поэтому мне нужно открыть порт сервера в Localtest (например, 10000) и перенаправить весь контент на WebserviceServer: 443. Это первая задача.
Вторая задача заключается в том, что LocalTest прослушивает определенный порт как сервер веб-службы (8099). Мне нужно время от времени пересылать его на порт разных рабочих станций для тестирования. Таким образом, весь трафик и соединения, поступающие на LocalTest: 8099, должны быть перенаправлены на somestation (назовите его John): someport (5000).
Не могли бы вы помочь мне с командами ssh, которые мне нужно отправить на Localtest для удовлетворения потребностей?
Обе ваши проблемы мне не кажутся лучшим решением - туннелирование ssh.
но все же вот некоторые из идей, которые я придумал для достижения этих целей:
localtest:~ $ ssh -L *:10000:webserviceserver:443 localhost
убедитесь, что вы разрешили "GatewayPorts" и "AllowTcpForwarding" в / etc / ssh / sshd_config на LocalTest и sshd перезапущен.
это открывает соединение от localtest к самому себе и в то же время создает туннель, прослушивающий порт 10000 на всех интерфейсах localtest, перенаправляя трафик на порт 443 webserviceserver
с ssh это фактически то же самое, что и проблема 1
localtest:~ $ ssh -L *:8099:somestation1:5000 localhost
если вы хотите подключиться к другой тестовой рабочей станции, просто выйдите из первого подключения и используйте что-то вроде
localtest:~ $ ssh -L *:8099:somestation2:5002 localhost
поскольку это в основном то же решение, что и для проблемы 1, оно также имеет такое же объяснение (только разные хосты и порты :-))
Имейте в виду, что оба предыдущих решения открывают целевые системы (webserviceserver, somestationX) для всех, у кого есть доступ к LocalTest.
И, как я уже упоминал в начале, я не думаю, что ssh - правильный инструмент для этого по нескольким причинам. Некоторые из них:
Я лично настроил бы простой сценарий для второй проблемы, который позволяет вам сбросить правила iptables для каждой тестовой системы, которую вы хотите использовать, что-то вроде
localtest:~ # reset_target somestation
такой сценарий должен будет удалить старую переадресацию (на другую тестовую рабочую станцию) в iptables, а затем настроить новую. Я не очень хорошо владею синтаксисом iptables на данный момент, поэтому я не могу сразу предоставить такой сценарий, но я уверен, что кто-нибудь здесь может помочь вам с чем-то подобным, если это необходимо.
То, о чем вы просите, должно быть достигнуто с помощью IPTables и простой переадресации портов - по крайней мере, в первой части.
Что касается второй части, вы заявляете, что на порту 8099 есть «сервер веб-службы», трафик которого вы хотите перенаправить на «Джон». Я предполагаю, что вы все равно захотите позволить «серверу веб-службы» обрабатывать информацию, и в этом случае мост между «сервером веб-службы» и «Джоном» может быть тем, что вы ищете. Для этого вы, вероятно, можете использовать netcat.
Узнайте о переадресации портов с помощью IPTables: http://www.socialhacker.com/howtos/port_forwarding.php
Узнайте об использовании Netcat: http://www.sans.org/security-resources/sec560/netcat_cheat_sheet_v1.pdf (Я считаю, что реле Netcat - это то, что вам нужно).
Надеюсь, эта информация поможет.
Вы захотите использовать флаг -L или -R с соответствующим указанием: IP:, а также включить порты шлюза в sshd_config