web 学习

如何在外部利用内网的代理中继

在成功建立好自己的代理中继后,如何在外使用家中或办公室的这项服务呢? 下面简单说一下Pac文件的设置、以及从外网访问的基本方法。

使用场景:

假设在家中设置好了Privoxy代理服务器,在公司想要通过这台服务器访问公司不允许访问的网站,最简单的方法就是从公司连接家里,透过家里的代理上网。

内网正常访问结构

内网通过中继访问

假设已经能保证内网设备通过中继的加密连接访问代理服务器,下面我们要实现以下场景:

方案是让位于外网的设备通过内网网关,访问内网的中继,再通过中继访问目标网站。但是由于这样会很慢,所以我们还要求不需要代理的网站直接访问,避免不必要的开销。

网络环境设置:

首先,目前内网的中继已经能接受所有来自内网的访问。因此我们必须让外网设备的访问转化为内网的访问。这需要用到Nat,即允许网关将外网的访问转发给内网的中继。

记录内网中继的Ip地址(先按照前面文章的要求固定Ip)和提供代理的端口号

打开路由器的配置界面。这里以常见的TPLINK路由器为例:

在内网任意电脑中进入路由器管理页面,如192.168.1.1,选择“Nat”控制项,确保Nat已经开启,接下来进入“转发规则”,选择“虚拟服务器”

NAT和虚拟服务器

新建一条规则

新建规则:外部端口号为你想开放给外网的端口号(可以和内部端口号不同),内部端口号是代理中继服务器提供HTTP代理的那个端口号。

外部端口号可以在1-65535间任意指定,但为了安全起见和避免冲突,不要选择2000号以下的端口,也不要选择21、22、80、115、443、3389、8000、8080号端口,以防发生危险。

警告:

开放外部端口是一个危险行为!务必选择一个秘密的不常用的端口,并严格保密。不可以使用“常用外部端口号”,强烈不建议使用10000以下的端口。开放的端口将导致被扫描,进而可能被非授权使用或攻击。

设置完成后,我们就可以从外网访问网关(路由器)的外部端口,进而转发到内网中服务器的内部端口了。

假设路由器的外网地址是202.106.1.1,开放的外部端口是12345,内网服务器地址为192.168.1.100,HTTP代理端口为8964,

我们从外部访问 202.106.1.1:12345 就等同于从内网访问 192.168.1.100:8964。

接下来可以在外部设备的HTTP代理中填入 202.106.1.1:12345,即可使用内网的代理中继服务了。

动态域名设置:

如果使用普通的家庭上网,每次Ip地址都是不一样的,在办公室不可能知道家里的Ip地址,从而不方便直接使用“202.106.x.x:12345”这个代理。此时我们需要一个动态域名服务,将一个域名绑定在家中的地址,无论家中地址如何变化,访问这个域名即可。

通常中国使用“花生壳”动态域名系统。注意目前直接在路由器上设置可能有些问题,估计是系统升级了,路由器的固件还没升级,所以需要下载一个软件,安装到中继服务器上。

这个软件的原理就是每分钟把Ip地址回报到花生壳一次,花生壳即时调整DNS设置。按照网站要求完成注册后,下载客户端运行即可。注意先开启“花生壳动态域名”(具体请去官方查询)

*软件必须持续开启

假设你得到了一个 sample.vicp.net的动态域名,则可以使用 sample.vicp.net:12345 连接家中的代理服务器了。

客户端预分流:

如果出门在外,所有流量还像内网一样全部绕一圈去代理进行转发、分流,显然是太慢了,效率也太低了,因此在外网使用时需要先进行预分流。

通常当客户端可以使用Pac文件时,使用Pac文件进行预分流。

即规定只有在Pac列表上的网站,才通过sample.vicp.net:12345,其他网站直接连接。

关于Pac文件的规范和使用,请网上自行搜索。

*分流冲突

如果你在Privoxy服务器上设置了user.action分流,那么与Pac列表上的网站必须完全一致。

如果某个网站不在Pac上,而在Action文件上,那么它不会被传递到服务器,即无法实现代理。

如果某个网站在Pac上,而不在Action文件上,那么它会被传递到服务器,但服务器不会继续传递到远端的代理,而是从服务器那里直接连接后返回,一样达不到目的。

为测试方便起见,可以将一个ip查询网站(如whatismyip.con) 加入代理列表,另一个不加入,来检测是否通过了代理。

疑难解答:

1,这样访问安全吗?

答:在从外网终端传递到中继服务器这一段,是明文的HTTP代理,可以被检查到所有流量。如果你在企业防火墙后,可能被你的企业记录上网行为。但如果你的访问是通过安全连接的,那么也不能获得连接内容。但可以记录你访问的网站名称。

*如果想加密从外网到中继这一段内容,需要额外设置安全措施。

2,开放端口有多危险?

答:开放端口如果是常用端口,可能受到黑客袭击。为了保证绝对安全,你可以使用没有任何价值的计算机作为中继。为了防止该计算机被渗透后作为跳板攻击路由器,路由器管理密码必须更改。

3,是否能使用3G网络访问该中继代理?

答:苹果手机不能通过3G网络使用任何代理(除了VPN)。要使用代理,必须设置Apn访问。安卓手机不能全局在3G下使用HTTP代理,但各个程序可以,twi**官方客户端可以直接设置一个http代理服务器(202.102.1.1:12345这样的)

4,如何在手机上使用Pac文件?

电脑允许使用本地硬盘上的Pac文件(使用本地路径,如file:\C:\pac\pac.pac) 苹果手机等必须使用基于URL的Pac文件(http://sample.com/sample.pac)。你必须有一个地方可以托管你的Pac文件。

如果没有,可以设法找一个免费博客或空间存放,存放后获得URL。

如果你的Pac的内容不符合*,传输过程中可能出现危险!

安卓手机不能使用Pac文件,但可以在火狐浏览器中使用,使用方法请参见

5,在电脑上不能直接打开t.co一类的短连接,或出现加载问题(已经设置了Pac)

这个问题是由于T.CO不是安全连接造成的,请使用Eff(电子前哨基金会)的强制SSL插件 HTTPS EVERYWHERE