也谈端口转发和科学上网

给大厂做技术支持,一个非常令人头痛的问题就是上不了网。

大厂的IT管理一般都很严格,内外网隔离,很多情况下装个软件都得用U盘拷来拷去。白白就降低了很多效率。

不过,有些场景下内外网也是通的,只不过,嗯,服务器直接连不了外网,`curl`、`wget`、`apt-get`或`yum`装软件统统不行。所以,大多数时候有一个中间的机器能连接内外网,至少可以省了U盘一步。

但是,既然有能连接内外网的机器,理论上就可以将两个网串起来,当然,为了安全,还是要最小限度的利用端口转发。

我们来看几个真实的场景。

0x0

服务器A位于内网,IP为`10.0.0.A`,无法联公网。我的电脑B获取IP `10.0.0.B`,即能连内网服务器A也能联公网服务器CDEFG……

为了让内网服务器能到公网上下载软件,一般有两种思路。

1)在A上添加到CDEFG的路由指向网关B,B上启动路由功能打通IP通道

2)在B上安装代理服务器软件,A通过B访问公网

第1)种方法能支持任意协议,但是做起来比较复杂,因为B要配路由功能,如果做不好很可能导致都上不了网。第2)种方法协议有些受限,但做起来要简单些。下面我们讨论后者。

在B上安装代理服务器Squid。笔者的电脑是Mac系统,因此,直接`brew install squid`就安装好了。

启动`squid`,然后在A上设置使用代理服务器。我们的A是Linux服务器,因此只需在Shell中简单配置一下环境变量就可以了:

# export http_proxy=http://10.0.0.B:3128

# export https_proxy=http://10.0.0.B:3128

其中,`3128`是Squid默认的端口号。配置好以后,就可以在A上使用`curl`或`wget`下载软件了。

不过,在Debian 8上使用`apt-get`时,好像无法利用上述环境变量。为了让`apt-get`也能使用代理服务器,创建一个配置文件如下:

echo 'Acquire::http::proxy "http://10.0.0.B:3128";' > /etc/apt/apt.conf.d/99ProxySquid

这样,`apt-get`就也可以使用代理服务器访问公网了。

当然,实际上前面我们还漏掉了一点细节,那就是Squid的配置文件中要开放权限,即,它需要允许A通过B。一般情况下,配置文件(笔者的配置文件路径是`/usr/local/etc/squid.conf`)中对本地网络都是允许通过的,如下面的配置就允许`localnet`指定的IP通过:

acl localnet src 10.0.0.0/8 # RFC1918 possible internal network

http_access allow localnet

http_access allow localhost

如果你的IP不在列表中,那么可以自己创建一个ACL,如:

acl seven src 1.2.3.4/32

http_access allow seven

当然你也可以配置Squid以启用密码等,留个家庭作业,我们就不多讨论了。

0x1

服务器A位于内网,IP为`10.0.0.A`,无法联公网。我的电脑B获取IP `192.0.0.B`,即能连内网服务器A也能联公网服务器CDEFG……,但是,A无法连接B。

由于A无法连接B,上面讨论的方案1)做路由的方式就不能用了。因此只能采用方案2)。但是方案2)由于A无法连接B,所以,不通。

好在我们还会用SSH。

SSH有一个功能叫端口转发,就是,可以把本地的端口转发到一个远程主机上。我们是这么做的,在B上:

ssh -N -f -R 3128:localhost:3128 10.0.0.x

上述命令在B上连接A,并将B的3128端口转发到A上,这样,在A上直接访问`localhost:3128`就等于访问B上的`3128`端口。下面就很简单了,在A上:

# export http_proxy=http://localhost:3128

# export https_proxy=http://localhsot:3128

Bingo!

当然,SSH还有好多好玩的用法。比如,你在国外有一台主机 1.2.3.4,然后你可以

ssh -D 8888 root@1.2.3.4

嗯,一旦连通了以后,你本地的8888端口就成了一个SOCKS 5的代理。科学上网就是这么简单。

好了,SSH还有很多玩法,比如跳板机,网上一搜一大片,我们就不多费油了。

本文主要是以Linux和Mac系统为例,Windows系统应该也类似,只是命令或稍有不同。

祝玩得开心。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180125G0ZGRK00?refer=cp_1026

相关快讯

扫码关注云+社区