Dec 03

项目地址:
https://github.com/aarond10/https_dns_proxy

特色功能:
自从 Google 发布 DNS-Over-HTTPS 服务以来,其实有很多基于此服务写的程序,但是目前看起来这个项目实现的比较好:
C++ 实现,执行文件很小 (30kiB,静态编译的版本约为 900k),比大多数用 Go 写的小得多
基于 Curl HTTP/2 API , 解析延迟极小
单线程无阻塞式查询,适用于嵌入式系统如路由器等
最好作为 DNSMASQ 这样带缓存的 DNS 服务器上游.
由于 Google 这个服务支持 EDNS SUBNET 的查询,所以理论上通过这个服务器查询的结果不会有 CDN 的问题,当然实际还需时间来证明。

Usage: https_dns_proxy [-a ] [-p ]
[-e ] [-d] [-u ] [-g ] [-b ]
[-l ]
-a listen_addr 监听地址. (127.0.0.1)
-p listen_port 监听端口. (5053)
-e subnet_addr edns-client-subnet edns 子网 “203.31.0.0/16”. 建议通过路由器外网地址来计算()
-d 后台运行.
-u user 用户名. (nobody)
-g group 用户组. (nobody)
-b dns_servers 用来解析 dns.google.com 的域名服务器. (8.8.8.8,8.8.4.4)
-t proxy_server 代理服务器,例如: socks5://127.0.0.1:1080,http://127.0.0.1:8080 (注意上面 dns.google.com 的解析不通过此代理!)
-l logfile 日志文件. (-)
-v 开启调试信息. (INFO)

上面的 subnet_addr 可以通过一些命令行获取,例如:

$(nvram get wan_ipaddr | cut -d "." -f 1-2).0.0/16

如果是内网,则应该用:

curl -sS ifconfig.co | cut -d "." -f 1-2
或者
wget http://ipecho.net/plain -O - -q | cut -d "." -f 1-2

这个在 Tomatoware 上静态编译稍微有点麻烦:

1. 首先要编译 curl (及其库)支持 http2,这样用到 nghttp2:

git clone https://github.com/tatsuhiro-t/nghttp2.git
cd nghttp2
autoreconf -i
automake
autoconf
./configure --prefix=/mmc
make
make install

2. 编译 curl :

#!/bin/sh

[ ! -e ./curl.pem ] && wget -qO curl.pem https://curl.haxx.se/ca/cacert.pem

[ -n "$1" ] && ssVersion=$1 || ssVersion="git"

mkdir -p done/${ssVersion}/OpenSSL-opt

echo "Compiling OpenSSL Version..."
make clean
[ ! -e  /opt/sbin/curl.pem ] && cp ./curl.pem /opt/sbin/
./configure --prefix=/mmc --with-ca-bundle=/opt/sbin/curl.pem --with-nghttp2 
--disable-ldap
make -j2 LDFLAGS="-all-static -s" LIBS="-ldl"
[ $? -eq 0 ] || { echo "Compiling OpenSSL failed."; exit 1; }
make install
mv -f src/curl done/${ssVersion}/OpenSSL-opt/

echo -e "Compile Result:n"

file done/${ssVersion}/OpenSSL-opt/curl

echo ""

done/${ssVersion}/OpenSSL-opt/curl -V

3. 静态编译 https_dns_proxy,修改过的 CMakeList.txt:

project(HttpsDnsProxy)
cmake_minimum_required(VERSION 2.8)

#set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_BUILD_TYPE "Release")

# set(CMAKE_C_FLAGS "-Wall --pedantic -Wno-strict-aliasing")

set(NXJSON_DIR lib/nxjson/)
set(NXJSON_SRC ${NXJSON_DIR}/nxjson.c)

find_path(LIBCARES_INCLUDE_DIR ares.h)
find_path(LIBCURL_INCLUDE_DIR curl/curl.h)
find_path(LIBEV_INCLUDE_DIR ev.h)
include_directories(
${LIBCARES_INCLUDE_DIR} ${LIBCURL_INCLUDE_DIR}
${LIBEV_INCLUDE_DIR} ${NXJSON_DIR} src)

# The main binary
set(TARGET_NAME "https_dns_proxy")
aux_source_directory(src SRC_LIST)
set(SRC_LIST ${SRC_LIST} ${NXJSON_SRC})
add_executable(${TARGET_NAME} ${SRC_LIST})
#set(LIBS ${LIBS} cares curl ev resolv ssl crypto dl z m)
set(LIBS ${LIBS} cares curl ev resolv ssh2 ssl psl crypto dl z m nghttp2)
target_link_libraries(${TARGET_NAME} ${LIBS})

# Link to static libraries if needed
IF(STATIC_LIB)
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s -static")
ENDIF(STATIC_LIB)

install(CODE "MESSAGE(\"Please install manually for now.\")")

然后:

mkdir b
cd b
cmake -DSTATIC_LIB=ON ..
make

file ./https_dns_proxy
./https_dns_proxy: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, stripped


Jun 28

GAppProxy

Internet | 7 评论 » | Trackback | FavLinks | 4,255 次阅读

请先留意这里
GAppProxy设计的初衷是为教育网用户提供一个免费的国际代理,请各位朋友不要宣传其他用途,我想各位和我一样都不愿意看到Google App Engine这个平台被封禁. 如果您觉得GAppProxy还不错,请尽可能的自己做fetch服务. 谢谢支持!

什么是GAppProxy?
一个开源的HTTP Proxy软件. 使用Python编写,运行于Google App Engine上.

GAppProxy的优势:
是一个完整的Proxy解决方案: 与常见的HTTP Proxy不同,GAppProxy运行在Google App Engine上,不需要专门的服务器,这是最大优势. 个人的Proxy: 自己管理,自己使用,当然,也可共享:) 依托于Google App Engine: Google的网络比较可靠.

GAppProxy的劣势:
仅支持标准80端口的HTTP协议,443端口的HTTPS协议正在实现中,其他端口均不支持. 需要安装客户端. GAppProxy的设想用户:
教育网用户(不能直接访问国外网络者). 其他需代理的用户.

GAppProxy目前的状态:
HTTP Proxy功能已经可用,当然也需要进一步测试. HTTPS Proxy功能正在实现中. 管理/认证等功能尚无. 希望有对此软件感兴趣者加入,贡献力量.

项目网站,http://gappproxy.googlecode.com

GAppProxy将要做的:
完善Proxy的细节功能,提高用户体验. 用wx做一个客户端的图形界面,取代目前的命令行窗口运行模式,方便windows用户使用. 写一份详细的使用手册.

如何安装使用:

普通Windows用户:
下载proxy.zip,解压,双击运行dist目录下的proxy.exe. 配置浏览器,设置HTTP代理为127.0.0.1:8000. 注意: 该版本目前尚不支持HTTPS.

有Python 2.5以上版本解释器的Windows/Linux用户:
下载proxy.py,双击运行,默认监听地址为127.0.0.1:8000 配置浏览器,设置HTTP代理为127.0.0.1:8000.

拥有Google App帐号并且希望自己搭Proxy服务的用户:
从项目svn处下载fetch.py,修改app.yaml,然后将其上传到自己的Google App目录下. 修改proxy.py,使其指向自己的Google App站点. 其他与前两种用户相同.

其他
每个客户端(proxy.py/proxy.exe)我都会在Windows+IE/Firefox和Linux+Firefox下测试正常后再提交. GAppProxy使用Google Code提供的svn管理代码,这个很有用,而且基本的用法也很容易掌握,建议还不了解的用户试试.

Tor 快得多哦。

2008 年 8 月 18 日更新:

主页更新了 r19 的 Windows 版本,支持本地代理,支持多 Fetch 做负载均衡,通过 Proxy.conf 文件设置多个 Fetch Server 。

但是这个版本的 install.bat 有点问题,安装后服务不能正常启动,表现为 srvany.exe 不能 加载 proxy.exe。查了一下应该是 proxy.exe 找不到 proxy.conf 的原因,在 install.bat 中加了一句为服务添加工作目录就可以了。

@echo reg add HKLM\SYSTEM\CurrentControlSet\Services\GAppProxy\Parameters /v AppDirectory /d %cd% >> Register_As_Server.bat


Feb 27

这东西看境外站点非常快,比我自己日本的 VPN 还快,虽然它的出处和千丝万缕的东西有点让人讨厌,不过对我们来说,当它是一个普通的 SSL 代理客户端软件用用也不错。

不要试图用 Google 搜索它,你会立即断网数秒,除非你使用它开启的代理(默认是:127.0.0.0:9666)。如图,软件默认是退出后清空 Cookie 和浏览记录,你觉得不爽就别选中那些。

主要处理了一些界面上的东西,现在看起来没那么丑了。


Feb 25

CCProxy 就不多介绍了,以其轻巧的单执行文件以及简洁直观的的设置界面获得了非常大一部分代理用户的青睐。这是它的最新 6.6 破解版本。

2008/01/16 CCProxy 6.6 (19条更新)
改进:
01 改进了流量统计功能。
02 增加了监控按钮。
03 缺省启动DNS服务。
04 兼容98/NT。
05 对邮件代理不进行网站过滤。
06 对socks5代理不进行允许站点过滤。
07 修改了UDP日志。
08 远程帐号管理及时更新界面。
09 网站过滤显示更详细的内容。
10 修改了管道通讯。
11 监控对话框增加了拷贝功能。
12 监控对话框增加了发送消息功能。
13 增加了HTTP_X_FORWARDED_FOR功能。

Bugs:
14 修改了帐号读入的bug。
15 修改了注册的bug。
16 修改了内容过滤的bug。
17 修改了允许站点过滤的bug。
18 修改了流量统计的bug。
19 修改了帐号导入的bug。

如何突破屏蔽代理访问的网站?

有些网站屏蔽代理访问,可以通过编辑CCProxy目录下的CCProxy.ini来突破屏蔽,把EnableProxyConnection=0改为1,然后保存文件并重启CCProxy软件。

如何让目标网站无法得知你是从哪个网站进入该网站?

编辑CCProxy目录下CCProxy.ini文件,把 EnableReferer=0 EnableReferer=0 都改为1,然后保存文件并重启CCProxy软件。此功能便于保密,让目标网站无法得知你是从哪个网站进入该网站的。

以上是勘误,我曾经在 2004 年写过一篇文章叫做: 彻底从网络隐身 ,主要是利用 CCProxy 和 Stunnel 来制作高度匿名代理,文中提到的 EnableProxyConnection 和 EnableReferer 取值反了。这篇文章在网络中流传比较广,也是照抄无误,特此更正。


Dec 06

vIDC 2.1 是一个 Windows 下控制台方式的代理以及端口映射工具(类似 CCProxy 不过没有图形界面),主要包含如下功能:

  1. 代理服务功能,支持 HTTP/SOCKS4/SOCKS5 代理,支持代理验证,支持 UDP 代理,支持二级代理
  2. 本地端口映射,类似 PortTunnel 功能,即将本地网络的任何应用服务端口映射到本程序运行的机器上,应用服务客户端可通过映射端口访问应用服务,主要用在将内网服务端口,映射到网关上以便其他用户可以访问,当然前提是 vIDC20 必须运行在网关机器上。
  3. 端口映射 vIDC 功能,本程序包含 vIDC 服务和客户端两部分功能,既可以作为 vIDC 服务又可作为 vIDC 客户端工具。
  4. SSL 加密解密功能,用户映射端口时可以指定 +ssl 或- ssl ,将普通应用服务转化为 SSL 加密的应用服务,或将 SSL 加密的应用服务转化为无需 SSL 加密验证的服务。

在上面讲的映射内网应用服务到网关上,以便其他用户可以访问你的内网应用服务的前提是你的 IDC20 必须运行在网关的机器上,假如你无法在网关上运行 vIDC20 那么你如何让其他人访问你的内网服务呢?你可以通过 vIDC20 将本地的任何应用服务映射到任意一个 vIDCs 服务器上(即另外一个 vIDC20 所运行的机器),这样假如用户无法访问你网络里的某个应用服务但他可以访问另外一个你能控制的机器,那么你就可以在他可以访问的机器上运行 vIDC20 ,启动 vIDCs 服务。然后在你的应用服务所在的网络中再运行一个 vIDC20 ,通过此工具将你的应用服务映射到 vIDCs 上,这样用户就可以访问内网应用服务了。

较 vIDC2.0+ 以前的版本而言,新版的 vIDC20 增加支持 UDP 服务的映射,采用线程缓冲/复用以及通讯管道缓冲和复用,占用 CPU 资源少,转发速度更快稳定性更好。

程序运行:

vIDC20 是一个控制台应用程序,它可以作为系统服务运行。支持的命令行参数如下:

//-i [serverName] [服务描述] --- 安装 vIDC20 作为一个系统服务,用户可以指定服务名称和描述。
//-u ---卸载服务。
//-s --- 启动服务
//-e --- 停止服务
//-d --- 控制台方式方式,关闭控制台窗口将结束程序运行.
//-f filename 读取指定的配置文件,仅指定了-d运行参数时才有效
//-p svrport 指定服务的运行端口,如果端口等于 0 则不启动服务端口。仅指定了 -d 运行参数时才有效

vIDC20 默认的服务端口是 8080 。

vIDC20 支持参数配置文件,用户可以以 -f 参数指定配置文件名称,如果不指定程序默认读取和程序同名但扩展名为 ini 的参数配置文件.比如程序名为 vIDC20.exe , 则默认读取的配置文件为 vIDC20.ini .

vIDC 支持用户远程配置管理,用户可以通过 Telnet 连接 vIDC 的服务端口,连接上服务后用户必须先输入一个'v',如果无需认证则直接出现欢迎提示,否则将用求用户输入用户名和密码,验证成功后出现欢迎提示信息 vIDC20>,这时用户可以输入配置管理命令,配置文件也是由 vIDC20 支持的配置命令组成,每一行是一跳配置命令,vIDC20 支持的配置命令请参考软件包中的 Readme 文件。


[1/2]  1 2 >