一般机房只有少数对外直接提供服务的机器才能连接上公网,用于内部服务的机器是不能访问公网的。这也是一种比较常见的部署架构,例如阿里云环境。
不过有时用于提供内部服务的机器也有连接上公网的需求,例如更新某个安全补丁。本文将介绍如何通过SSH
+Proxychains-NG
快速建立一个透明代理来给内网中的服务器提供上网服务。
实现思路:通过Proxychains-NG
把内网服务器的请求转发给SSH建立的一个SOCKE服务,然后公网服务器在把这个请求转发出去达到访问公网的目的。
Proxychains-ng只需要在内网服务器上安装好,而公网服务器是不需要任何配置的,只要能SSH登陆就可以。
服务器环境说明:
公网服务器:192.168.1.8
内网服务器:192.168.1.100
通过SSH建立SOCKS服务
使用 ProxyChains-NG
当然要先有代理,这里是用ssh -D
连到能访问公网的机器来建立一个SOCKS动态转发代理。具体命令如下:
1 | $ ssh -Nf -D 20000 mike@192.168.1.8 |
解释:
-N 不执行命令
-f 跑到后台执行
-D 20000 监听 localhost:20000 端口,把本地请求转发给被连接的公网服务器。
安装 ProxyChains-NG
通过源代码安装
- 下载源码
1 | $ git clone https://github.com/rofl0r/proxychains-ng |
- 编译安装
1 | $ ./configure --prefix=/usr --sysconfdir=/etc |
配置 ProxyChains-NG
修改配置文件,在[ProxyList]配置段中加入代理的地址和端口。
1 | $ vim /etc/proxychains.conf |
这里的代理地址就是上面通过SSH建立SOCKS服务的地址。
测试 ProxyChains-NG
通过 proxychains4
执行命令,即可通过公网服务器的网络访问外网了。
1 | $ proxychains4 curl http://ip.cn |
除了curl,使用其它命令行的时候都只要在前面加上proxychains4
,就都可以通过公网服务器的网络连接上公网了。
这种方式可以在仅仅需要的时候使用,而不需要改变任何服务器的网络配置,非常不错。 更多ProxyChains-NG使用技巧可参考:通过ProxyChains-NG实现终端下任意应用代理
参考文档
http://www.google.com
http://heylinux.com/archives/2933.html
http://blog.csdn.net/chen3feng/article/details/5774983