Докажите, что программное обеспечение работает через SOCKS

Введение

У меня есть программное обеспечение Ruby, которое использует сеть во время своей работы.

Недавно я получил отзыв от пользователя, который работает за брандмауэром и использует SOCKS, это программное обеспечение для него не работает

Поэтому мне нужно смоделировать эту ситуацию, чтобы проверить, какая часть моего программного обеспечения не поддерживает HTTP_PROXY переменные среды

Что я пробовал

Я попытался смоделировать этот межсетевой экран с помощью iptables (внутри докера):


apt-get update -y
apt-get install iptables

export SOCKS5_PROXY_HOST=xxx.xxx.xxx.xxx[1]
export SOCKS5_PROXY_PORT=ppp

iptables -A INPUT -s $SOCKS5_PROXY_HOST -j ACCEPT
iptables -A OUTPUT -d $SOCKS5_PROXY_HOST -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

env HTTP_PROXY=$SOCKS5_PROXY_HOST:$SOCKS5_PROXY_PORT ruby my_script.rb

Проблема

По какой-то причине этот подход не подходит не работает, и я получаю:

  • СОЕДИНЕНИЕ прокси прервано или
  • Не удалось подключиться к порту xxx.xxx.xxx.xxx pppp: Время ожидания соединения истекло

Примечания:

  • [1] Я использовал IP адрес (не доменное имя) для SOCKS прокси
  • [2] Я использовал разные случайные общедоступные SOCKS-прокси перед применением iptable правил, все они были доступны
  • [3] Ruby Open-URI API уважает HTTP_PROXY переменные среды https://ruby-doc.org/stdlib-2.6.3/libdoc/open-uri/rdoc/OpenURI.html , но, возможно, какой-то сторонний код нет.

Вопросы

  1. Является ли это приемлемым подходом: попытка «смоделировать» брандмауэр с помощью iptables ?
  2. В чем может заключаться эта проблема, это что-то из-за SOCKS или неправильная конфигурация в моем iptables ?
  3. Может быть, есть лучший подход для достижения той же цели: протестировать программное обеспечение, работающее только через прокси-сервер SOCKS, без «прямых» подключений?
2
задан 21 July 2021 в 21:58
1 ответ

Большое спасибо @ michael-hampton за комментарии.

Краткие ответы на мои собственные вопросы:

  1. Этот подход отлично работает
  2. Проблема на стороне ruby ​​ HTTP_PROXY принимает только прокси HTTP [S] (не обрабатывает Прокси-сервер SOCKS, как curl )
  3. Вероятно, iptable самый простой

Подробнее о программировании:

1
ответ дан 28 July 2021 в 12:25

Теги

Похожие вопросы