Como posso ter certeza de que todo o tráfego TCP do meu Mac passa por um proxy SOCKS5?

9

Eu tenho um proxy SOCKS com uma porta.

Como posso fazer meu MAC usá-lo? Quais configurações eu altero nas configurações de rede?

    
por Alex 26.08.2014 / 03:27

5 respostas

3

Por que as preferências do sistema não são - > rede - > (Selecione uma rede no lado esquerdo da janela e escolha Avançado no canto inferior direito) - > Proxies (guia no topo) trabalhando para você?

    
por 09.09.2014 / 15:32
5

Embora a definição das configurações de proxy do sistema seja um bom começo, você também pode querer usar o iptables para garantir que todo o tráfego esteja passando pelo proxy. Alguns aplicativos não usam configurações do sistema (o Firefox entre eles) e, portanto, é imperativo que você adapte suas regras para não permitir conexões diretas e apenas para rotear o tráfego por meio do proxy.

EDIT: Embora eu pessoalmente use as regras iptables para gerenciar o potencial "vazamento" da minha VPN, na verdade eu estava enganado em pensar que o iptables poderia trabalhar diretamente com um proxy de meias. Você precisará de algo como tun2socks para criar uma interface de túnel virtual (como o uso da 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á fazer com 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, é muito bem baseado em um script que eu uso com uma VPN, portanto, todas as menções MYVPN ou VPN - enquanto você não estiver usando uma VPN, tun2socks efetivamente se comporta como se você estivesse, então tudo deve funcionar mesmo.

E um agradecimento especial a esta resposta no Unix.SE para me orientar a direção certa para responder a esta.

EDITAR novamente: Então, parece que o OS X realmente estaria fazendo isso com ipfw ao invés de iptables (desculpe, eu sou principalmente um linux, e achei que o OS X tinha iptables disponível). Existem equivalências de tal forma que o script pode ser adaptado, algumas das quais são apontadas aqui . man ipfw deve definir você diretamente na sintaxe. Deixarei o script iptables original como um modelo para que você possa ver o que está acontecendo conceitualmente. WaterRoof parece que pode ajudar a tornar o ipfw um pouco mais amigável; outros front ends também podem estar disponíveis.

    
por 26.08.2014 / 06:04
4

Se você puder definir um servidor SSH, o sshuttle gratuito pode encapsular todo o tráfego TCP através da conexão, fazendo todo o trabalho do firewall 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 do 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 .

    
por 04.09.2014 / 08:38
0

Existem várias soluções disponíveis. Nenhum deles é tão simples como alterar algumas configurações: a razão é que isso anula todo o objetivo do proxy, que é rotear algum aplicativo específico através de uma rota diferente (para fins de furtividade, segurança, identidade proteção ...) enquanto deixa o acesso à rota local (supostamente mais rápida).

Alguns devem ser descartados por causa de seus requisitos, mas deixe-me mencioná-los apenas por completo: uma VPN, um túnel SSH, uso de pfctl (o filtro de pacotes e a interface de controle NAT). Além disso, Tor, embora certamente não tenha sido projetado para o uso que você tem em mente, permite rotear todo o tráfego através dos proxies deles .

Todos esses aplicativos são gratuitos e exigem no máximo algum engenho para fazê-los funcionar. Por outro lado, há aplicações pagas, onde a maior parte do trabalho foi feita por outra pessoa, embora a um preço.

Proxycap

enables you to redirect your computer's network connections through proxy servers. You can tell ProxyCap which applications will connect to the Internet through a proxy and under what circumstances. This is done through a user friendly interface, without the need to reconfigure any of your Internet clients

Como alternativa, existe Proxifier para Mac (cuidado: suporta apenas 10.8). qual

allows network applications that do not support working through proxy servers to operate through a SOCKS or HTTPS proxy and chains.

    
por 05.09.2014 / 11:52
0

Vá para Preferências- > Rede Veja se há um bloqueio nele, clique nele e forneça a senha da sua conta de administrador do sistema. Em seguida, Advanced- > Proxies- > Verificação no proxy de meias. Dê suas configurações de proxy.

    
por 05.09.2014 / 12:02