Ответы:
Почему системные настройки -> сеть -> (выберите сеть в левой части окна и выберите «Дополнительно» в правом нижнем углу) -> «Прокси» (вкладка вверху) для вас?
Хотя настройка общесистемных настроек прокси-сервера является хорошим началом, вы также можете использовать 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 на самом деле будет делать это с ipfw
iptables, а не из-за этого (извините, я, в основном, человек с Linux, и думал, что в OS X были доступны iptables). Существуют такие эквиваленты, что сценарий можно адаптировать, некоторые из которых указаны здесь . man ipfw
должен установить вас прямо на синтаксис. Я оставлю оригинальный iptables
сценарий в качестве шаблона, чтобы вы могли увидеть, что происходит концептуально. Похоже, что WaterRoof может сделать использование ipfw
более удобным; другие передние части могут быть доступны также.
tun2socks
не требует SSH и сервера; пример на их сайте для использования SSH для создания прокси SOCKS в первую очередь. Если у вас уже есть SOCKS прокси, это совершенно не нужно. И да, это iptables
был неправильный путь с моей стороны. OS X, основанная на BSD, использует, ipfw
а не iptables
, что для ядра Linux. Что касается его сложности, вы можете найти интерфейс, который настроит его для вас в более простой форме, но у меня нет опыта в этом вопросе. В любом случае, сложность на низком уровне во многом связана с тем, почему он так способен на работу.
ipfw
.
Если вы можете настроить себе SSH-сервер, то бесплатный sshuttle может туннелировать весь TCP-трафик через соединение, выполняя всю работу брандмауэра за вас.
Чтобы перенаправить весь TCP-трафик и DNS-запросы на удаленный SSH-сервер, команда достаточно проста:
sshuttle --dns -vr ssh_server 0/0
Помимо TCP и DNS, sshuttle не пересылает другие запросы, такие как UDP, ICMP, ping и т. Д.
Для получения дополнительной информации и примеров см. Статью Использование Sshuttle в повседневной работе .
Есть целый ряд доступных решений. Ни один из них не так прост, как изменение некоторых настроек: причина в том, что это сводит на нет всю цель прокси, то есть направлять какое-то конкретное приложение по другому маршруту (в целях скрытности, безопасности, защиты идентификационных данных ...) при выходе Вы получаете доступ к (предположительно быстрее) локальному маршруту.
Некоторые из них следует отбросить из-за ваших требований, но позвольте мне просто упомянуть их ради полноты: VPN, туннель SSH, использование pfctl (фильтр пакетов и интерфейс управления NAT). Кроме того, Tor, хотя определенно не предназначен для использования, которое вы имеете в виду, позволяет вам направлять весь трафик через их прокси.
Все эти приложения бесплатны, и для их запуска требуется не менее изобретательность. С другой стороны, существуют платные приложения, в которых большая часть работы выполнена кем-то другим, хотя и по цене.
позволяет перенаправить сетевые подключения вашего компьютера через прокси-серверы. Вы можете указать ProxyCap, какие приложения будут подключаться к Интернету через прокси-сервер и при каких обстоятельствах. Это делается с помощью удобного интерфейса, без необходимости перенастраивать любой из ваших интернет-клиентов
Кроме того, есть Proxifier для Mac (осторожно: поддерживает только до 10,8). который
позволяет сетевым приложениям, которые не поддерживают работу через прокси-серверы, работать через прокси-серверы SOCKS или HTTPS и цепочки.