如何确定我所有Mac的TCP通信都通过SOCKS5代理进行?


Answers:


3

为什么系统偏好设置->网络->(在窗口左侧选择一个网络,然后在右下角选择“高级”)->代理(顶部的选项卡)为您服务?

在此处输入图片说明


9
不适用于所有应用程序。Skype,Chrome和其他设备似乎绕过了这些设置-至少在10.10上...
Ingwie Phoenix

你说的是真的。其他评论中甚至提到了它。作者明确表示他们想要简单,所以我从简单开始,询问我发布的答案对他们不起作用。显然,它对他们有用,因为他们选择了它。安全并不总是100%的答案。大多数时候,这是关于降低风险的。
埃弗里特(Everett)2014年

1
终端无法采用系统网络socks5代理设置,但可以在应用范围内使用。
E_Jovi '17

6

如果您可以设置自己的SSH服务器,那么免费的Shuttle可以通过连接建立所有TCP通信的隧道,从而为您完成所有防火墙工作。

要将所有TCP通信和DNS请求转发到远程SSH服务器,该命令非常简单:

sshuttle --dns -vr ssh_server 0/0

除TCP和DNS外,Sshuttle不会转发其他请求,例如UDP,ICMP,Ping等。

有关更多信息和示例,请参阅文章在日常工作中使用Sshuttle


虽然发问者没有用于此目的的SSH服务器,但我至少要感谢您提醒我它带来的这一强大工具和功能。这种语法的简单性是极好的,并且能够在后端处理iptables或ipfw确实是值得屋顶赞扬的功能。
0xDAFACADE 2014年

这不会重定向所有TCP通信,例如,如果您正在运行VMWare,它将绕过此操作。
Soheil,2015年

5

虽然设置系统范围的代理设置是一个好的开始,但是您可能还希望研究使用iptables以确保所有流量都通过代理。某些应用程序不使用系统范围的配置设置(其中包括Firefox),因此必须调整规则以不允许直接连接,而只能通过代理路由通信。

编辑:虽然我个人使用iptables规则来管理VPN中潜在的“泄漏”,但实际上我最初被误认为iptables可以直接与袜子代理一起使用。您需要类似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而不是iptables 来完成此操作(对不起,我主要是Linux人士,并且认为OS X具有iptables可用)。有一些等效之处可以修改脚本,此处指出了其中一些。 man ipfw应该让您直接了解语法。我将原始iptables脚本保留为模板,以便您可以了解概念上的变化。 WaterRoof看起来像是它可以使使用起来ipfw更加用户友好。其他前端也可能可用。


我不想使用iptables,因为它太复杂了。Tun2socks看起来我需要SSH和服务器。我只有IP和端口...如何使用IP和端口?
2014年

tun2socks不需要SSH和服务器;他们网站上的示例首先是使用SSH创建SOCKS代理的。如果您已经拥有SOCKS代理,则完全没有必要。是的,iptables这对我来说是错误的方式。基于BSD的OS X使用ipfw而不是iptablesLinux内核的。至于它的复杂性,您也许可以找到一个可以以更易于使用的方式为您设置的前端,但是我对此没有经验。无论如何,它在低层次上都很复杂,这与它为什么能够胜任这项工作有很大关系。
0xDAFACADE 2014年

我已经为您添加了一个前端供您使用,如果它有助于简化导航ipfw
0xDAFACADE 2014年

0

有许多解决方案可用。它们都不是更改某些设置那么简单:原因是这样做违反了代理的全部目标,即通过离开而通过一条不同的路由(出于隐身,安全性,身份保护等目的)路由某些特定应用程序。您可以访问(据说速度更快)本地路由。

有些是出于您的要求而丢弃的,但是为了完整起见,我仅提及它们:VPN,SSH隧道,使用pfctl(数据包过滤器和NAT控制接口)。同样,Tor虽然绝对不是为您考虑的用途而设计的,但仍允许您通过代理路由所有流量。

所有这些应用程序都是免费的,并且最多需要一些独创性才能使其运行。另一方面,存在付费应用程序,其中大部分工作是由其他人完成的,尽管要付出一定的代价。

代理上限

使您可以通过代理服务器重定向计算机的网络连接。您可以告诉ProxyCap哪些应用程序将通过代理连接到Internet,以及在什么情况下。这是通过用户友好的界面完成的,而无需重新配置任何Internet客户端

另外,还有Proxifier for Mac(注意:仅支持到10.8)。哪一个

允许不支持通过代理服务器工作的网络应用程序通过SOCKS或HTTPS代理和链进行操作。


0

转到“首选项”->“网络”,查看是否有锁,单击它,然后为您的系统管理员帐户输入密码。然后高级->代理->检查袜子代理。提供您的代理设置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.