Как я могу убедиться, что весь трафик TCP моего Mac проходит через прокси SOCKS5?

12

У меня есть SOCKS прокси с портом.

Как я могу заставить мой MAC использовать это? Какие настройки я могу изменить в настройках сети?

Alex
источник

Ответы:

3

Почему системные настройки -> сеть -> (выберите сеть в левой части окна и выберите «Дополнительно» в правом нижнем углу) -> «Прокси» (вкладка вверху) для вас?

введите описание изображения здесь

Эверетт
источник
9
Это не работает для всех приложений. Skype, Chrome и другие, кажется, обойти эти настройки - по крайней мере, 10.10 ...
Ingwie Phoenix
То, что вы сказали, правда. Это даже упоминается в других комментариях. Автор ясно дал понять, что они хотят простого, поэтому я начал с простого, спросив, что из того, что я написал, не подойдет им. Очевидно, это работало на них, потому что они выбрали это. Безопасность не всегда о 100% ответе. В большинстве случаев речь идет о снижении риска.
Эверетт
1
Терминал не может принять системные настройки прокси-сервера socks5, но приложение будет работать нормально.
E_Jovi
5

Хотя настройка общесистемных настроек прокси-сервера является хорошим началом, вы также можете использовать iptables, чтобы убедиться, что весь трафик проходит через прокси-сервер. Некоторые приложения не используют общесистемные параметры конфигурации (в том числе Firefox), и поэтому крайне важно, чтобы вы адаптировали свои правила, чтобы не разрешать прямые соединения и только маршрутизировать трафик через прокси.

РЕДАКТИРОВАТЬ: Хотя я лично использую iptablesправила для управления потенциальной «утечкой» из моего VPN, на самом деле я изначально ошибался, полагая, что iptables может работать с прокси-сервером socks напрямую. Вам понадобится что-то вроде tun2socks , чтобы создать интерфейс виртуального туннеля (например, использование vpn).

После этого вы можете настроить скрипт iptables, подобный следующему:

#!/bin/bash
if [[ $EUID -ne 0 ]]; then
    echo "This script must be run as root" 1>&2
    exit 1
fi

# name of primary network interface (before tunnel)
PRIMARY=eth0

# gateway ip address (before tunnel - adsl router ip address)
# automatically determine the ip from the default route
GATEWAY=`route -n | grep $PRIMARY | egrep "^0\.0\.0\.0" | tr -s " " | cut -d" " -f2`

# provided by tun2socks: interface name
TUNNEL=tun0

# If you'd like, putting the tun2socks command here is a good idea.  It may or may not be necessary to do so, but either way is more convenient than running the two commands separately.

# iptables rules - important!

LOCAL_NET=192.168.0.0/16
#LOCAL_NET=$GATEWAY

# Flush all previous filter rules, you might not want to include this line if you already have other rules setup
iptables -t filter --flush

iptables -t filter -X MYVPN
iptables -t filter -N MYVPN

# Add local routes to routing table
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
route add -host 23.21.163.237 dev eth0 gw 192.168.1.1

# Add ssh routes to routing table
ip route add table 128 to 192.168.1.0/24 dev eth0
ip route add table 128 default via 192.168.1.1

# Exceptions for local traffic & vpn server
iptables -t filter -A MYVPN -o lo -j RETURN
iptables -t filter -A MYVPN -o ${TUNNEL} -j RETURN
iptables -t filter -A MYVPN --dst 127.0.0.1 -j RETURN
iptables -t filter -A MYVPN --dst $LOCAL_NET -j RETURN
iptables -t filter -A MYVPN --dst ${SERVER} -j RETURN
iptables -t filter -A MYVPN --dst ${VPN_SERVER} -j RETURN

# Add extra local nets here as necessary

iptables -t filter -A MYVPN -j DROP

# MYVPN traffic leaving this host:
iptables -t filter -A OUTPUT -p tcp --syn -j MYVPN
iptables -t filter -A OUTPUT -p icmp -j MYVPN
iptables -t filter -A OUTPUT -p udp -j MYVPN

Естественно, вы захотите, чтобы этот скрипт отражал вашу конкретную сеть (т. Е. Если вы используете что-то вроде подсети 192.168.0.0/24, настройте ее соответствующим образом). Кроме того, он очень тесно основан на сценарии, который я использую с VPN, поэтому все упоминания MYVPN или VPN - хотя вы не используете VPN, tun2socksэффективно ведут себя так, как если бы вы были, поэтому все должно работать одинаково.

И особая благодарность за этот ответ в Unix.SE за то, что он направил меня в правильном направлении, чтобы ответить на этот вопрос.

РЕДАКТИРОВАТЬ еще раз: Итак, похоже, что OS X на самом деле будет делать это с ipfwiptables, а не из-за этого (извините, я, в основном, человек с Linux, и думал, что в OS X были доступны iptables). Существуют такие эквиваленты, что сценарий можно адаптировать, некоторые из которых указаны здесь . man ipfwдолжен установить вас прямо на синтаксис. Я оставлю оригинальный iptablesсценарий в качестве шаблона, чтобы вы могли увидеть, что происходит концептуально. Похоже, что WaterRoof может сделать использование ipfwболее удобным; другие передние части могут быть доступны также.

0xDAFACADE
источник
Я не хочу использовать iptables, потому что это слишком сложно. Tun2socks выглядит так, как будто мне нужен SSH и сервер. У меня просто есть IP и порт ... Как я могу просто использовать IP и порт?
Алекс
tun2socksне требует SSH и сервера; пример на их сайте для использования SSH для создания прокси SOCKS в первую очередь. Если у вас уже есть SOCKS прокси, это совершенно не нужно. И да, это iptablesбыл неправильный путь с моей стороны. OS X, основанная на BSD, использует, ipfwа не iptables, что для ядра Linux. Что касается его сложности, вы можете найти интерфейс, который настроит его для вас в более простой форме, но у меня нет опыта в этом вопросе. В любом случае, сложность на низком уровне во многом связана с тем, почему он так способен на работу.
0xDAFACADE
Я добавил интерфейс, чтобы вы могли использовать его в ответе, если это поможет упростить навигацию ipfw.
0xDAFACADE
5

Если вы можете настроить себе SSH-сервер, то бесплатный sshuttle может туннелировать весь TCP-трафик через соединение, выполняя всю работу брандмауэра за вас.

Чтобы перенаправить весь TCP-трафик и DNS-запросы на удаленный SSH-сервер, команда достаточно проста:

sshuttle --dns -vr ssh_server 0/0

Помимо TCP и DNS, sshuttle не пересылает другие запросы, такие как UDP, ICMP, ping и т. Д.

Для получения дополнительной информации и примеров см. Статью Использование Sshuttle в повседневной работе .

harrymc
источник
Несмотря на то, что у спрашивающего нет для этой цели SSH-сервера, я хотел бы, по крайней мере, поблагодарить вас за напоминание об этом замечательном инструменте и функциональности, которые он предоставляет. Простота в этом синтаксисе просто фантастическая, и возможность обрабатывать iptables или ipfw на бэкэнде - действительно особенность, достойная похвалы с крыш.
0xDAFACADE
Это не перенаправляет весь трафик TCP, например, если у вас работает VMWare, он обходит это.
Сохейл
0

Есть целый ряд доступных решений. Ни один из них не так прост, как изменение некоторых настроек: причина в том, что это сводит на нет всю цель прокси, то есть направлять какое-то конкретное приложение по другому маршруту (в целях скрытности, безопасности, защиты идентификационных данных ...) при выходе Вы получаете доступ к (предположительно быстрее) локальному маршруту.

Некоторые из них следует отбросить из-за ваших требований, но позвольте мне просто упомянуть их ради полноты: VPN, туннель SSH, использование pfctl (фильтр пакетов и интерфейс управления NAT). Кроме того, Tor, хотя определенно не предназначен для использования, которое вы имеете в виду, позволяет вам направлять весь трафик через их прокси.

Все эти приложения бесплатны, и для их запуска требуется не менее изобретательность. С другой стороны, существуют платные приложения, в которых большая часть работы выполнена кем-то другим, хотя и по цене.

ProxyCap

позволяет перенаправить сетевые подключения вашего компьютера через прокси-серверы. Вы можете указать ProxyCap, какие приложения будут подключаться к Интернету через прокси-сервер и при каких обстоятельствах. Это делается с помощью удобного интерфейса, без необходимости перенастраивать любой из ваших интернет-клиентов

Кроме того, есть Proxifier для Mac (осторожно: поддерживает только до 10,8). который

позволяет сетевым приложениям, которые не поддерживают работу через прокси-серверы, работать через прокси-серверы SOCKS или HTTPS и цепочки.

MariusMatutiae
источник
0

Перейдите в «Настройки» -> «Сеть». Проверьте, есть ли блокировка, нажмите на нее и введите пароль учетной записи системного администратора. Затем Advanced-> Proxies-> Проверить прокси Socks. Дайте свои настройки прокси.

Дж Борн
источник