美文网首页
内网服务器翻墙

内网服务器翻墙

作者: 傑仔 | 来源:发表于2019-05-25 00:45 被阅读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端口

    相关文章

      网友评论

          本文标题:内网服务器翻墙

          本文链接:https://www.haomeiwen.com/subject/siiozqtx.html