多台电脑如何共享上网通道

一、基础知识


1、什么是代理


代理好比是一个中转站,可以中转你的上网数据流量。
上网代理通常包括两部分:代理软件,代理服务器。代理软件安装在你的电脑上,代理服务器通常都位于海外。当你通过代理上网时,你的浏览器并不是直接连到目标网站。而是通过如下几个步骤:

  • 浏览器发送数据到代理软件

  •  代理软件把你的数据发送到墙外的代理服务器

  •  代理服务器发送数据到目标网站

二、什么是监听端口


代理软件要正常工作,通常都需要开启一个“监听端口”。浏览器通过这个“监听端口”来跟代理软件建立连接。只有建立了连接,浏览器才能把数据发送到代理软件上。端口号是一个数字,范围在 1 至 65535 之间。

三、如何看本机开启的监听端口


对于 Windows 系统,在命令行窗口(先运行 cmd 就会出现命令行窗口)运行如下命令,可以看到本机开启的所有监听端口。
netstat -an | find "LISTEN"

用 netstat 的 o 选项可以看到每个监听端口分别是哪个进程开启的。
netstat -ano | find "LISTEN"

四、什么是监听端口的绑定地址


以一虚拟机为例,执行刚才那个命令后,会显示:
TCP  127.0.0.1:8118  0.0.0.0:0  LISTENING

其中的 127.0.0.1 表示这个监听端口绑定的网卡地址,而 8118 表示监听的端口号。绑定地址就是这个监听端口只接受来自该网卡的连接。
因为 127.0.0.1 表示本机网卡地址;所以,绑定在 127.0.0.1 表示该监听端口只接受来自本机的连接。
如果要让某个监听端口接受任意连接(包括外部电脑的连接),可以把绑定地址设置为 0.0.0.0

五、防火墙的配置


防火墙没设好,导致代理无法连通。

二、如何共享翻墙的代理


1、问题


大部分翻墙代理都会提供一个 HTTP 的代理端口(就是刚才说的“监听端口”)。问题在于:很多翻墙代理的代理端口都绑定在 127.0.0.1 上。也就是说,这个代理只能被本机的软件使用,外部电脑的软件无法连接到该端口。

2、通过修改配置解决问题


最简单的解决方案,就是修改上网软件的配置,让代理端口绑定到 0.0.0.0 上。

3、通过端口转发解决问题


端口转发,通俗地说就是让 A 监听端口的数据转发到 B 监听端口。
B 监听端口就是你的翻墙软件原先开启的端口
A 监听端口是新开的,而且绑定地址是 0.0.0.0
如此一来,外部电脑就可以用 A 端口作为代理的端口,数据都发给 A 端口,然后利用“端口转发”功能,把数据转向 B 端口(也就是上网工具自身的端口)

三、如何实现端口转发


用来搞端口转发的工具有很多, Google 一下 "TCP proxy" 或 "TCP redirection",应该能找到一大堆软件和解决方案。介绍两种最简单的办法。

1、利用 Windows 自带的 netsh


准备工作
对于 Vista 以及更新版本的 Windows (比如 Win7 Win8 ...)可以直接使用该方案。
对于 Vista 之前的 Windows(比如 WinXP、Win2003),需要先安装 IPv6 协议栈。具体步骤如下:

  • 以管理员身份登录,进入“控制面板”下面的“网络连接”

  • 选中本地连接,点右键,在右键菜单选“属性”

  • 弹出“属性”对话框,点“安装”按钮

  • 弹出“选择网络组件类型”对话框,选“协议”,再点“添加”按钮

  • 在弹出的对话框中选“IPv6”,点“确定”就 OK 啦

命令详解(以下命令需要管理员身份才能执行)
添加端口转发的命令
netsh interface portproxy add v4tov4 listenport=新开的监听端口 listenaddress=新开端口的绑定地址 connectaddress=要转发的地址 connectport=要转发的端口 protocol=tcp

删除端口转发的命令
netsh interface portproxy delete v4tov4 listenport=新开的监听端口 listenaddress=新开端口的绑定地址

2、利用 rinetd


1、获取软件
rinetd 是一个很小巧的、跨平台的、开源的工具,它能提供 TCP 端口转发的功能。它的官网在“这里”,上面提供了 Linux 平台和 Windows 平台的软件包。这里以Windows 平台为例。
把那个 rinetd.zip 下载到本地,解压出来,里面有好几个文件(包括源代码)。你只需取出其中的 rinetd.exe 其它文件不需要。

2、编写配置文件
rinetd 的配置文件就是一个普通的文本文件,每一行对应一条转发规则。每一条转发规则包含4个字段,分别如下,字段之间用空格分开。
绑定地址 监听端口 转发的地址 转发的端口

配置文件举例
比方说,本地已经运行了 TOR,端口是 8118,绑定在 127.0.0.1
如果俺希望通过 rinetd 建立一个新的端口,端口号是 12345(这个端口号是俺随手编的,你也可以用其它端口号),绑定在 0.0.0.0 上,那么,转发规则就这么写:
0.0.0.0 12345 127.0.0.1 8118

3、运行

  • 把刚才写好的配置文件保存成 config.txt,把该文件跟 rinetd.exe 放到同一个目录。

  • 运行 cmd 进入 Windows 的命令行窗口

  •  使用 cd 命令切换当前目录,使得“当前目录”是 rinetd.exe 所在的目录(不会用 cd 命令,请自行 Google 之)

  • 然后执行如下命令

rinetd.exe -c config.txt

上述命令执行之后,命令行窗口的光标会停止不动。不要关闭这个 cmd 窗口, rinetd 已经开始工作。为了保险起见,另外开一个 cmd 窗口,再用前面介绍的 netstat 命令,看一下本机开启的端口。如果正常的话,你就可以看到如下一行

四、如何共享上网的VPN


1、问题


用 VPN上网,虽然可以让本机的所有网络软件自动通过 VPN 服务器中转。但是其它电脑的软件无法使用本机的 VPN 网络。

2、Privoxy


VPN上网跟代理上网的技术原理不同——VPN 软件本身是不开启监听端口的。所以刚才介绍的端口转发,对于 VPN 软件是无效。
不过没关系,咱们可以在本机运行 Web 代理或 SOCKS 代理,把监听端口绑定到 0.0.0.0,就可以让其它电脑的软件通过本机的 VPN 上网。考虑到大部分人上网都是为了浏览网页,就介绍一下 Privoxy 这个工具。

获取软件

Privoxy 是一个老牌的、跨平台的,开源的 Web 代理软件,官网在“这里”。
在官网上有 exe 安装包,也有 zip 的压缩包(免安装)。下哪个看你自己的喜好(俺喜欢免安装的,比较绿色)。

修改配置文件
Privoxy 默认的监听端口是8118,绑定在 127.0.0.1 上。为了让其它电脑能连上来,需要修改绑定的地址。
Privoxy 的配置文件是 config.txt 。打开它,搜索 listen-address 会看到如下一行
listen-address 127.0.0.1:8118
修改为
listen-address 0.0.0.0:8118

运行
直接双击 Privoxy.exe
为了保险起见,再用前面介绍的 netstat 命令,看一下本机开启的端口。如果正常的话,你就可以看到如下一行
TCP  0.0.0.0:8118  0.0.0.0:0  LISTENING

说明:
Privoxy 是一款功能很强大的工具,有兴趣的可以研究一下。

五、如何共享虚拟机中的上网软件


单独开一个虚拟机(Guest OS),专门用来安装上网工具。在这个虚拟机上,除了上网工具,不放其它任何东西。这样做的好处之一是:即使某些上网工具有后门,也不会威胁到真实系统(Host OS)的安全。

那么,如何把虚拟机中的翻墙工具共享给其它电脑(Host OS 之外的系统)

步骤1

如果用代理翻墙,就搞端口转发;
如果用 VPN 翻墙,就新开一个 Web 代理。

步骤2

配置虚拟机的网卡模式,可以有两种搞法。

对于 NAT 模式的网卡
你需要添加端口映射。主流的虚拟机软件(包括 VMware 和 VirtualBox)都有此功能。
该功能类似于刚才提到的端口转发,其原理是:把 Host OS 上的某个端口映射到某个虚拟机的 NAT 网卡上的另一个端口。
该方法配置稍嫌麻烦。如果你对网络和虚拟机不太熟悉,俺不推荐用这种搞法,还是改用 Bridge 模式比较省事儿。

对于 Bridge 模式的网卡
如果网卡是 Bridge 模式,那就简单了,无需任何额外设置。
因为这种模式的虚拟网卡,对于 Host OS 之外的网络是可见的。也就是说,(Host OS 之外的)其它电脑可以直接访问到此网卡——因此其它电脑的软件就能直接连上虚拟机中的代理端口。

留言

這個網誌中的熱門文章

Goflyway 进阶教程:代理服务器自定义搭建HTTP伪装网站,降低被墙几率