Вот сценарий: у меня есть корпоративная электронная почта, чей SMTP-сервер прослушивает порт 2525. Я могу настроить почтовый клиент как Thunderbird в моем доме без каких-либо проблем. У меня также есть другая работа, где большинство исходящих портов закрыты, включая 2525. Однако есть несколько портов, которые открыты для исходящего трафика.

Есть ли способ для меня использовать мою домашнюю неограниченную сеть и маршрутизатор (и систему Linux 24/7 там) для перенаправления трафика? Я когда-то делал что-то похожее с SSH-туннелированием, чтобы просматривать интернет без ограничений прокси, но это не так.

Что я имею в виду: в ограниченной сети: установите SMTP для моего домашнего статического IP-адреса на любом открытом порту, который я найду. в доме: перенаправить этот порт на (1) напрямую реальный SMTP на локальном сервере 2525 (2), а затем как-то перенаправить на SMTP на 2525

итак: как называется то, что я пытаюсь сделать? как вы думаете, я могу этого достичь?

Спасибо

1 ответ1

1

как называется то, что я пытаюсь сделать?

TCP-реле

как вы думаете, я могу этого достичь?

Сокат:

...

socat TCP4-LISTEN:www TCP4:www.domain.org:www

устанавливает простой перенаправитель TCP-порта. При использовании TCP4-LISTEN он прослушивает локальный порт "www" до тех пор, пока не будет установлено соединение, примет его, затем подключится к удаленному хосту (TCP4) и начнет передачу данных. Он не примет второе соединение.


socat -d -d -lmlocal2 \
TCP4-LISTEN:80,bind=myaddr1,su=nobody,fork,range=10.0.0.0/8,reuseaddr \
TCP4:www.domain.org:80,bind=myaddr2

Переадресация TCP-портов, каждая сторона связана с другим локальным IP-адресом (bind). В этом примере обрабатывается практически произвольное количество параллельных или последовательных соединений путем разветвления нового процесса после каждого accept (). Это обеспечивает небольшую безопасность, позволяя никому не поддаваться после разветвления; он разрешает соединения только из частной сети 10 (диапазон); из-за reuseaddr, он позволяет немедленный перезапуск после завершения главного процесса, даже если некоторые дочерние сокеты не полностью закрыты. С -lmlocal2 socat регистрирует в stderr, пока не достигнет цикла приема. Дальнейшее ведение журнала направляется в системный журнал с помощью средства local2.


socat TCP4-LISTEN:5555,fork,tcpwrap=script \
EXEC:/bin/myscript,chroot=/home/sandbox,su-d=sandbox,pty,stderr

простой сервер, который принимает соединения (TCP4-LISTEN) и разветвляет новый дочерний процесс для каждого соединения; каждый ребенок действует как единое реле. Клиент должен соответствовать правилам для имени процесса-демона "script" в /etc/hosts.allow и /etc/hosts.deny, в противном случае ему будет отказано в доступе (см. "Man 5 hosts_access"). Для выполнения программы EXEC дочерний процесс обрабатывает chroot в /home /sandbox, su в пользовательскую песочницу, а затем запускает программу /home /sandbox /bin /myscript. Сокат и myscript общаются через псевдо-tty (pty); Стандер myscript перенаправляется на стандартный вывод, поэтому сообщения об ошибках передаются через socat подключенному клиенту.


socat EXEC:"mail.sh target@domain.com",fdin=3,fdout=4 \
TCP4:mail.relay.org:25,crnl,bind=alias1.server.org,mss=512

mail.sh - это скрипт оболочки, распространяемый вместе с socat, который реализует простой SMTP-клиент. Он запрограммирован "говорить" по SMTP на своих FD 3 (вход) и 4 (выход). Опции fdin и fdout говорят socat использовать эти FD для связи с программой. Так как mail.sh наследует stdin и stdout, а socat не использует их, скрипт может читать тело письма из stdin. Socat делает alias1 вашим локальным адресом источника (связывание), заботится о правильном завершении сетевой линии (crnl) и отправляет не более 512 байтов данных на пакет (mss).

...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .