- Как заставить все приложения Linux использовать прокси SOCKS
- 2 ответа 2
- Как настроить туннель SSH SOCKS для приватного просмотра
- Подготовка
- Настроить SSH-туннель
- Linux и macOS
- Windows
- Настройка вашего браузера для использования прокси
- Fire Fox
- Гугл Хром
- Выводы
- Прозрачное Socks5 проксирование приложений в linux
- Сборка
- Настройка
- Запуск
Как заставить все приложения Linux использовать прокси SOCKS
В Linux мне нужен способ для маршрутизации всего сетевого трафика интерфейса enp2s0 через SOCKS4 192.168.1.2:1080 (или любого прокси-сервера SOCKS)- что-то вроде Proxifier в Windows. Прокси работает нормально, если вручную установить в Chrome или Firefox. ОС: Linux Mint 19.1 Вещи, которые я пытался:
- Я установил прокси вручную в настройках сети, но я не установил его; Chrome все еще подключается напрямую. Вот скриншот:
- Proxychains работает отлично, но я должен вручную запускать каждое приложение с терминала.
Я не знаю, как использовать Redsocks или Iptables (пока).
Я надеюсь, что есть графический интерфейс, такой как Proxifier для Linux, но решение на основе терминала (CLI) вполне подойдет.
2 ответа 2
для нетерпеливых просто сделай следующее; при условии, что прокси-сервер example.com:7777 и это socks5 (измените его на свой позже)
создайте пустой файл в любом месте и назовите его redsocks.conf (или как угодно), я предполагаю, что он находится здесь /etc/redsocks.conf (измените его на свой).
измените example.com 7777 с вашим прокси (обратите внимание, что вы можете использовать любой local_port кроме 12345 , это локальный порт, для которого мы установим правило iptable для перенаправления трафика, поэтому, если вы используете другой, обязательно используйте его в последующие шаги ниже)
— теперь запустите redsocks с назначением файла конфигурации следующим образом
sudo redsocks -c /etc/redsocks.conf
измените место назначения вашего redsocks.conf (если вы получили «bind: Address уже используется», попробуйте killall redsocks ), вы также можете проверить, привязан ли redsocks к локальному порту 12345 с помощью netstat -tulpn
— теперь, когда redsocks запущен и готов, давайте изменим правила iptables для использования redsocks. это должно быть настроено в соответствии с вашими потребностями, но если вы хотите перенаправить все пакеты HTTP и HTTPS через прокси. Определите следующие правила.
sudo iptables -t nat -N REDSOCKS sudo iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN sudo iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN sudo iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN sudo iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN sudo iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN sudo iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345 sudo iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDSOCKS sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDSOCKS sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDSOCKS sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDSOCKS
теперь ваш http и https трафик должен быть перенаправлен через example.com:7777
если вы хотите использовать сброс Iptables:
iptables -F iptables -t nat -F iptables -t mangle -F iptables -X
Дополнительный совет: если у вас есть vpn на вашем iphone или android, вы можете бесплатно использовать его на своем компьютере, независимо от того, какая ОС есть. просто подключите приложение vpn для телефона и установите прокси-сервер socks (в android вы можете использовать приложение «серверы»), затем используйте прокси на вашем компьютере, как указано выше, теперь весь трафик с вашего компьютера маршрутизируется через ваш телефон vpn. аккуратный.
Как настроить туннель SSH SOCKS для приватного просмотра
Бывают случаи, когда вы хотите работать в Интернете в частном порядке, получить доступ к контенту с географическими ограничениями или обойти любые промежуточные брандмауэры, которые может применяться в вашей сети.
Один из вариантов — использовать VPN, но это требует установки клиентского программного обеспечения на вашем компьютере и настройки собственного VPN-сервера или подписки на VPN-сервис.
Более простой альтернативой является маршрутизация трафика локальной сети с помощью зашифрованного прокси-туннеля SOCKS. Таким образом, все ваши приложения, использующие прокси-сервер, будут подключаться к серверу SSH, и сервер будет перенаправлять весь трафик в его фактическое место назначения. Ваш интернет-провайдер (интернет-провайдер) и другие третьи стороны не смогут проверять ваш трафик и блокировать ваш доступ к веб-сайтам.
Это руководство проведет вас через процесс создания зашифрованного туннеля SSH и настройки веб-браузеров Firefox и Google Chrome для использования прокси-сервера SOCKS.
Подготовка
- Сервер, работающий под управлением любой разновидности Linux, с доступом SSH для маршрутизации вашего трафика через него.
- Веб-браузер.
- Клиент SSH.
Настроить SSH-туннель
Мы создадим SSH-туннель, который будет безопасно перенаправлять трафик с вашего локального компьютера через порт 9090 на SSH-сервер через порт 22 . Вы можете использовать любой порт с номером больше 1024 , только root может открывать порты на привилегированных портах.
Linux и macOS
Если вы используете Linux, macOS или любую другую операционную систему на основе Unix на своем локальном компьютере, вы можете легко запустить туннель SSH с помощью следующей команды ssh :
ssh -N -D 9090 [USER]@[SERVER_IP]
Используются следующие параметры:
- -N — Указывает SSH не выполнять удаленную команду.
- -D 9090 — открывает туннель SOCKS на указанном номере порта.
- [USER]@[SERVER_IP] — ваш удаленный пользователь SSH и IP-адрес сервера.
- Чтобы запустить команду в фоновом режиме, используйте параметр -f .
- Если ваш SSH-сервер прослушивает порт, отличный от 22 (по умолчанию), используйте параметр -p [PORT_NUMBER] .
После запуска команды вам будет предложено ввести пароль пользователя. После его ввода вы войдете на свой сервер и туннель SSH будет установлен.
Вы можете настроить аутентификацию на основе ключа SSH и подключаться к серверу без ввода пароля.
Windows
Пользователи Windows могут создать SSH-туннель с помощью SSH-клиента PuTTY. Вы можете скачать PuTTY здесь .
- Запустите Putty и введите IP-адрес вашего сервера в поле Host name (or IP address) .
- В меню « Connection разверните SSH и выберите « Tunnels . Введите порт 9090 в поле Source Port и установите переключатель Dynamic .
- Нажмите кнопку « Add , как показано на изображении ниже.
- Вернитесь на страницу Session чтобы сохранить настройки, чтобы не вводить их каждый раз. Введите имя сеанса в поле « Saved Session и нажмите кнопку « Save .
- Выберите сохраненный сеанс и войдите на удаленный сервер, нажав кнопку « Open . Появится новое окно с запросом вашего имени пользователя и пароля. После того, как вы введете свое имя пользователя и пароль, вы войдете в систему на своем сервере, и будет запущен туннель SSH. Настройка аутентификации с открытым ключом позволит вам подключаться к вашему серверу без ввода пароля.
Настройка вашего браузера для использования прокси
Теперь, когда вы открыли туннель SSH SOCKS, последний шаг — настроить предпочтительный браузер для его использования.
Fire Fox
Приведенные ниже шаги одинаковы для Windows, macOS и Linux.
- В верхнем правом углу щелкните значок гамбургера ☰ чтобы открыть меню Firefox:
- Щелкните ссылку ⚙ Preferences .
- Прокрутите вниз до раздела « Network Settings » и нажмите кнопку « Settings. .
- Откроется новое окно.
- Установите переключатель « Manual proxy configuration ».
- Введите 127.0.0.1 в поле SOCKS Host и 9090 в поле Port .
- Установите флажок Proxy DNS when using SOCKS v5 .
- Нажмите кнопку OK , чтобы сохранить настройки.
На этом этапе ваш Firefox настроен, и вы можете просматривать Интернет через туннель SSH. Чтобы проверить, вы можете открыть google.com , ввести «какой у меня IP», и вы должны увидеть IP-адрес своего сервера.
Чтобы вернуться к настройкам по умолчанию, перейдите в « Network Settings , выберите переключатель « Use system proxy settings » и сохраните настройки.
Есть также несколько плагинов, которые могут помочь вам настроить параметры прокси-сервера Firefox, например, FoxyProxy .
Гугл Хром
Google Chrome использует системные настройки прокси по умолчанию. Вместо изменения настроек прокси-сервера операционной системы вы можете использовать надстройку, например SwitchyOmega, или запустить браузер Chrome из командной строки.
Чтобы запустить Chrome с использованием нового профиля и вашего SSH-туннеля, используйте следующую команду:
/usr/bin/google-chrome --user-data-dir="$HOME/proxy-profile" --proxy-server="socks5://localhost:9090"
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --user-data-dir="$HOME/proxy-profile" --proxy-server="socks5://localhost:9090"
"C:Program Files (x86)GoogleChromeApplicationchrome.exe" ^ --user-data-dir="%USERPROFILE%proxy-profile" ^ --proxy-server="socks5://localhost:9090"
Если профиль не существует, он будет создан автоматически. Таким образом, вы можете запускать несколько экземпляров Chrome одновременно.
Чтобы убедиться, что туннель SSH работает правильно, откройте google.com и введите «what is my ip». IP-адрес, отображаемый в вашем браузере, должен быть IP-адресом вашего сервера.
Выводы
Вы узнали, как настроить туннель SSH SOCKS 5 и настроить свой браузер для частного и анонимного доступа в Интернет. Для простоты использования вы можете определить туннель SSH в файле конфигурации SSH или создать псевдоним Bash , который настроит туннель SSH и запустит браузер.
Если вы столкнулись с проблемой или хотите оставить отзыв, оставьте комментарий ниже.
Прозрачное Socks5 проксирование приложений в linux
Потребовалось мне как-то запустить игру, которая запускается под wine, через прокси. Поднял ssh-туннель, запустил игру через proxychains, и… игра не смогла соединиться с сервером, хотя chromium без проблем работал и показывал ip прокси. Попробовал tsocks — игра вообще не запустилась. Можно, конечно, было настроить VPN-туннель с помощью того же ssh, но сервер — VPS, под OpenVZ, у которого по умолчанию выключен TUN, что привело бы к письму в техподдержку и ожиданию.
Итак, пятиминутное гугление привело меня к заброшенному проекту Transocks, который, в отличие от proxychains и tsocks, которые подгружают свои библиотеки и перехватывают сетевые вызовы, слушает определенный порт и перенаправляет все, что в него пришло, через socks4 прокси. К сожалению, transocks у меня не собрался, и я начал гуглить дальше. Оказывается, у проекта есть два форка: transocks_ev на c и transocks_em на ruby. Первый поддерживает Socks5, не поддерживает авторизацию и UDP. Второй же поддерживает Socks5, UDP, *BSD, но тоже, вроде бы, не поддерживает авторизацию(не нашел в коде, а документации нет). Так как UDP мне не нужно, я остановился на transocks_ev.
Сборка
Собрать transocks_ev очень просто: достаточно скачать Makefile и transocks_ev.c со страницы проекта, установить libevent и выполнить
make
У нас появился бинарник transocks_ev
tranSOCKS-ev — libevent-based transparent SOCKS5-Proxy
Usage: ./transocks_ev [-f] [-p Port] [-H IP-Address] [-s port] [-S IP-Address]
-f Do not fork into background upon execution
-p Bind our server-socket to this port
-H Listen on this IP-Address for incomming connections
-s Expect SOCKS5-Server on this Port
-S Expect SOCKS5-Server on this IP-Address
Так как я поднимал ssh-туннель на порту 4441, запускаю transocks_ev с такими параметрами:
./transocks_ev -p 4445 -H 127.0.0.1 -s 4441 -S 127.0.0.1
Теперь у нас на порту 4445 висит сервер, который будет пускать все запросы через наш socks5. Немного похоже на NAT, только на определенном порту.
Настройка
Перенаправлять пакеты будем с помощью iptables. Я решил сделать подобие proxychains, чтобы можно было запустить любое приложения через прокси, а не просто проксирование по адресу или порту(хотя для игры сгодится и оно).
Создаем новую группу proxified:
sudo groupadd proxified
Редактируем /etc/sudoers так, чтобы мы могли запускать приложения под этой группой. Должно быть что-то вроде этого:
valdikss ALL=(ALL:ALL) ALL
Теперь перейдем к настройкам iptables.
sudo iptables -t nat -I OUTPUT -m owner —gid-owner proxified -p tcp -j REDIRECT —to-ports 4445
Эта команда будет перенаправлять все пакеты от приложений с группой proxified на transocks сервер.
Запуск
Запускаем приложение с группой proxified
sudo -g proxified chromium-browser
Вот и всё. Этот метод может быть использован для гарантированной проксификации всей системы, либо даже для прозрачной проксификации на роутере. Если вам нужно использовать прокси с аутентификацией, то установите 3proxy локально и укажите в нем ваш прокси как прокси сервер верхнего уровня.