内网服务器翻墙

2019-05-25  本文已影响0人  傑仔

标签: socat squid


介绍

内网服务器是指只有内网ip而没有公网ip的服务器。 一般情况下内网服务器无法跟公网通讯。

我们的生产或者测试环境中有不少是内网机器, 多少会造成不便。

那么如何实现内网机器也能像普通服务器一样使用呢?

我们一般通过代理的方式。而代理又需要部署在有公网ip的服务器上(也就是俗称的跳板机)。

一. http代理:squid

请求方向:从内到外

这种代理方式仅支持http的访问。

测试环境下,squid部署在sandbox3(10.168.13.96)上,而生产环境的squid部署在web-m上。

增加你需要转发的端口号。普通的80,443已经默认配置了
acl SSL_ports port 5000 # docker.oa.isuwang.com https
acl Safe_ports port 5000

Squid normally listens to port 3128

http_port 10.168.13.96:3128
启动方式: service squid start

而需要使用代理的内网机器, 需要做如下设置:

  1. http_proxy=http://10.168.13.96:3128, https_proxy=http://10.168.13.96:3128, 这样普通的命令、脚本都能正常访问外网

  2. java进程需要传入jvm参数:-Dhttp.proxyHost=10.168.13.96 -Dhttp.proxyPort=3128 -Dhttps.proxyHost=10.168.13.96 -Dhttps.proxyPort=3128

  3. docker:

3.1 mkdir /etc/systemd/system/docker.service.d

3.2 vi /etc/systemd/system/docker.service.d/http-proxy.conf, 内容为

    [Service] 

    Environment="HTTP_PROXY=http://10.168.13.96:3128/"

3.3 systemctl daemon-reload

3.4 校验: systemctl show --property=Environment docker

   Environment=HTTP_PROXY=http://10.168.13.96:3128/"

3.5 重启docker daemon: systemctl restart docker

二. 端口转发:socat

请求方向:从外到内,从内到外

支持协议:tcp

应用场景: 例如需要从本地远程调试测试服务器的项目、短信接口等

案例:

  1. 本地调试sandbox2的ksservices

登录sandbox2的跳板机121.40.216.40, 输入如下命令:

socat TCP4-LISTEN:9997,bind=121.40.216.40,su=nobody,fork,reuseaddr TCP4:sandbox2:9997

其中, 9997为调试端口。

  1. sandbox2发短信,接口地址(注意是tcp协议,非http):sdk410.eucp.b2m.cn:80

socat TCP4-LISTEN:808,bind=10.168.139.194,su=nobody,fork,reuseaddr TCP4:sdk410.eucp.b2m.cn:80

其中, 10.168.139.194为跳板机的内网ip, 另外,由于目标端口80给nginx给占用了, 故我们改写了短信接口的端口配置为808,并在跳板机中转发到目标ip的80端口

上一篇 下一篇

猜你喜欢

热点阅读