Respostas:
Por que as preferências do sistema -> rede -> (selecione uma rede no lado esquerdo da janela e escolha Avançado no canto inferior direito) -> Proxies (guia na parte superior) estão funcionando para você?
Embora definir as configurações de proxy em todo o sistema seja um bom começo, convém também usar o iptables para garantir que todo o tráfego esteja passando pelo proxy. Alguns aplicativos não usam definições de configuração em todo o sistema (entre elas o Firefox) e, portanto, é imperativo que você adapte suas regras para não permitir conexões diretas e apenas direcionar o tráfego através do proxy.
EDIT: Enquanto eu pessoalmente uso iptables
regras para gerenciar possíveis "vazamentos" da minha VPN, na verdade eu estava enganado ao pensar que o iptables poderia funcionar diretamente com um proxy de meias. Você precisará de algo como tun2socks para criar uma interface de túnel virtual (como o uso de vpn).
Depois disso, você pode configurar um script iptables semelhante ao seguinte:
#!/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
Naturalmente, você desejará que esse script reflita sua rede específica (ou seja, se você estiver usando algo como uma sub-rede 192.168.0.0/24, ajuste de acordo). Além disso, ele é muito bem baseado em um script que eu uso com uma VPN; portanto, todas as menções MYVPN ou VPN - enquanto você não está usando uma VPN, tun2socks
se comporta efetivamente como se estivesse, portanto tudo deve funcionar da mesma maneira.
E um agradecimento especial a esta resposta no Unix.SE por me orientar na direção certa para responder a esta.
EDIT novamente: Então, parece que o OS X realmente faria isso com o ipfw
iptables (desculpe, eu sou principalmente uma pessoa linux e pensei que o OS X tinha o iptables disponível). Existem equivalências para que o script possa ser adaptado, alguns dos quais são apontados aqui . man ipfw
deve definir você diretamente na sintaxe. Deixarei o iptables
script original como um modelo para que você possa ver o que está acontecendo conceitualmente. Parece que o WaterRoof pode ajudar a tornar o uso ipfw
um pouco mais amigável; outros front-ends também podem estar disponíveis.
tun2socks
não requer SSH e um servidor; o exemplo em seu site é para usar o SSH para criar o proxy SOCKS em primeiro lugar. Se você já possui um proxy SOCKS, é totalmente desnecessário. E sim, iptables
foi um caminho errado da minha parte. O OS X, baseado no BSD, usa, em ipfw
vez de iptables
, o que é para o kernel do Linux. Quanto a ser complicado, talvez seja possível encontrar um front-end que o configure de maneira mais fácil de usar, mas não tenho experiência nesse assunto. De qualquer maneira, ser complicado em um nível baixo tem muito a ver com o porquê de ser tão capaz para o trabalho.
ipfw
.
Se você pode configurar um servidor SSH, o sshuttle gratuito poderá encapsular todo o tráfego TCP através da conexão, fazendo todo o firewall funcionar para você.
Para encaminhar todo o tráfego TCP e solicitações de DNS para um servidor SSH remoto, o comando é bastante simples:
sshuttle --dns -vr ssh_server 0/0
Além do TCP e DNS, o sshuttle não encaminha outros pedidos, como UDP, ICMP, ping etc.
Para mais informações e exemplos, consulte o artigo Usando o Sshuttle no trabalho diário .
Há várias soluções disponíveis. Nenhum deles é tão simples quanto alterar algumas configurações: o motivo é que isso derrota todo o objetivo do proxy, que é rotear um aplicativo específico por uma rota diferente (para fins de furtividade, segurança, proteção de identidade ...) enquanto sai você acessa a rota local (supostamente mais rápida).
Alguns devem ser descartados por causa de seus requisitos, mas deixe-os mencioná-los por uma questão de integridade: uma VPN, um túnel SSH, uso de pfctl (o filtro de pacotes e a interface de controle NAT). Além disso, o Tor, embora certamente não tenha sido projetado para o uso que você tem em mente, permite rotear todo o tráfego por meio de seus proxies.
Todos esses aplicativos são gratuitos e exigem, no máximo, alguma engenhosidade para que eles funcionem. Por outro lado, existem aplicativos pagos, onde a maior parte do trabalho foi realizada por outra pessoa, embora a um preço.
permite redirecionar as conexões de rede do seu computador através de servidores proxy. Você pode informar ao ProxyCap quais aplicativos serão conectados à Internet por meio de um proxy e sob quais circunstâncias. Isso é feito através de uma interface amigável, sem a necessidade de reconfigurar nenhum de seus clientes da Internet
Como alternativa, existe o Proxifier for Mac (cuidado: suporta apenas até 10.8). qual
permite que aplicativos de rede que não suportam o trabalho através de servidores proxy operem através de um proxy e cadeias SOCKS ou HTTPS.