OSX客户端上的OpenVPN + obfsproxy

时间:2015-01-30 07:16:48

标签: vpn openvpn tor tunneling

我试图绕过一个非常严格的防火墙来阻止除端口80和443之外的所有东西,显然甚至DPI都会阻止VPN。就此而言,我试图使用obfsproxy来混淆OpenVPN流量。这是我的设置:

服务器

obfsproxy obfs2 --dest=127.0.0.1:16080 --shared-secret=[secret] server 0.0.0.0:3389正在运行。

lsof -i :3389显示

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
obfsproxy 1341 root    3u  IPv4  14396      0t0  TCP *:3389 (LISTEN)

OpenVPN Server在TCP 16080上运行,Access Server控制台可以访问,一切看起来都不错。

客户端

编辑:obfsproxy是通过pip获得的python版本。

sudo obfsproxy obfs2 --shared-secret=[secret] socks 127.0.0.1:443在OSX 10.9.5的终端窗口中运行。

尝试使用' Tunnelblick'进行连接使用以下client.ovpn:

setenv FORWARD_COMPATIBLE 1
client
server-poll-timeout 4
nobind
pull
remote [Server-IP] 3389 tcp
route [Server-IP] 255.255.255.255 net_gateway
socks-proxy-retry
socks-proxy 127.0.0.1 443
dev tun
dev-type tun
ns-cert-type server
reneg-sec 604800
sndbuf 100000
rcvbuf 100000
auth-user-pass
comp-lzo no
verb 3
setenv PUSH_PEER_INFO

# Certs...

问题

Tunnelblick一直尝试连接,客户端的obfsproxy shell在此期间继续打印以下行:2015-01-30 15:52:42,508 [ERROR] Invalid SOCKS command: '3'。因此,至少在客户端,似乎可以通过Tunnelblick找到obfsproxy,但就我而言,这就是我的意思。我该如何解决这个问题或至少获得更多调试信息?

更新

obfsproxy客户端还会在启动后的第一行打印2015-01-30 15:39:36,431 [ERROR] Invalid SOCKS version: '71'。这似乎是在以下python脚本中创建的:http://pydoc.net/Python/obfsproxy/0.2.7/obfsproxy.network.socks5/。 Obfsproxy似乎需要Socks5。我试图弄清楚如何让我的VPN客户端与Socks5交谈,到目前为止,我无法找到有关如何强制版本的更多信息。

更新2

粘性客户端有更多的日志输出,它打印recv_socks_reply: Socks proxy returned bad reply。它也不会导致obfsproxy中的invalid version错误,但它仍然无法连接,obfsproxy打印invalid socks command 3。此外,我尝试使用旧的obfsproxy二进制文件,它与torbrowser OSX发行版(2.4.6 alpha 2)捆绑在一起,我认为这不是python版本。粘度中的行为相同,proxy returned bad reply

2 个答案:

答案 0 :(得分:0)

您使用的是哪个版本的OpenVPN?我必须抓住最新版本(2.3.6)才能获得this补丁,然后才能让ab9il.net示例正常工作。有关如何获取最新版本的说明,请访问here

答案 1 :(得分:0)

我有那个"对于无效的SOCKS命令:' 3'"问题。使用wireshark,我看到"命令3"是一个UdpConnect,事实上,我的OpenVPN配置是udp,建议使用,但不支持obfsproxy。 我可以看到你在你的Tunnelbrick conf上有tcp。也许tunnelbrick不支持TCP?或者对于我的OpenVPN版本(2.3.6),我需要有" proto tcp-client"线,也许它改变了?

我也有过#34;无效的SOCKS版本xx"问题。套接字版本是在socks服务器上发送的第一个字节。有人可能会尝试使用错误的protocole连接您的客户端。

在Mac上使用wireshark,你可能会看到你的情况发生了什么。