V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
li24361
V2EX  ›  程序员

请问下内网机器如何调用 dingdingbot

  •  
  •   li24361 · 2020-10-20 08:49:09 +08:00 · 2471 次点击
    这是一个创建于 1502 天前的主题,其中的信息可能已经有所发展或是发生改变。

    内网服务器 a, 有 jenkins 等. 无外网,安装了 dd 插件,应该是发送的时候写死了地址,只让填 token

    内网服务器 b, 可访问外网

    现在 a 的通知 想通过 b 转发请求

    a 上 ssh -L 7070:oapi.dingtalk.com:80 xxx@b 的 ip

    设置 nginx 反代

    server { listen oapi.dingtalk.com:80; server_name oapi.dingtalk.com; location / { proxy_pass http://127.0.0.1:7070; } } 校验不通过

    我配置的是否有问题, 有无更好的方法

    15 条回复    2020-10-20 16:24:09 +08:00
    newbeelity
        1
    newbeelity  
       2020-10-20 09:10:00 +08:00
    b 上 haproxy
    zwboy
        2
    zwboy  
       2020-10-20 09:15:36 +08:00
    listen 配置有问题?? 还需要配置 a 将 oapi.dingtalk.com 解析到 b 吧。
    euler13
        3
    euler13  
       2020-10-20 10:17:24 +08:00
    1.b 配置一个普通的代理, 不使用 dingtalk.com 的域名。
    2.a 机器上面配置使用 b 的代理
    3.a 机器上直接访问 dingtalk 的服务
    x66
        4
    x66  
       2020-10-20 10:25:59 +08:00
    ssh -f -N -D 127.0.0.1:1080 username@b_host
    curl -x socks5h://127.0.0.1:1080 http://oapi.dingtalk.com:80/
    li24361
        5
    li24361  
    OP
       2020-10-20 10:56:59 +08:00
    @x66 请问第二个是什么意思
    li24361
        6
    li24361  
    OP
       2020-10-20 10:57:43 +08:00
    @euler13 第二个有工具吗, 服务器权限比较严
    li24361
        7
    li24361  
    OP
       2020-10-20 10:58:34 +08:00
    知道了,使用 socks 代理,厉害
    @x66
    sujin190
        8
    sujin190  
       2020-10-20 11:31:55 +08:00
    可以在 a 上用 hosts 为 dingding 的域名设置一个 ip,然后用 iptables 为这个 ip 设置一个重定向到 b,接着在 b 上配置一个端口转发到真正的 dingding 服务器就好了

    用重定向的用意是为了把 dingding 请求的 80 或 443 端口流量转发到一个非 80 或 443 端口的 b 上,这样 b 上就能直接通过端口设置端口转发了,a 通过 hosts 设置的这个 ip 存不存在都不重要,反正都要被 iptables 重定向修改
    sujin190
        9
    sujin190  
       2020-10-20 11:33:00 +08:00
    这个的好处是只有服务器能配置 iptables,无视程序自身是否支持代理都能正常使用,非常方便
    li24361
        10
    li24361  
    OP
       2020-10-20 13:25:53 +08:00
    @x66 调用的是 jenkins 的控件,好像没法直接用 curl
    li24361
        11
    li24361  
    OP
       2020-10-20 13:29:53 +08:00
    @sujin190 iptables 为这个 ip 设置一个重定向到 b 不太理解这个,和 ssh 是不是一样?
    li24361
        12
    li24361  
    OP
       2020-10-20 13:32:54 +08:00
    @zwboy 有点绕,这个是将本机 7070,怎么修改端口呢
    sujin190
        13
    sujin190  
       2020-10-20 14:09:21 +08:00
    @li24361 #11 嗯,不一样

    假设你把 dingding 的域名在 hosts 里绑定到了 192.168.10.2 而 b 机器的 ip 是 10.10.10.3

    iptables -t nat -A OUTPUT -d 192.168.10.2/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.10.10.3:8008

    在 a 上设置这条 ip,那么就可以把访问 dingding 80 端口的流量都转发到 b 机器的 8008 端口上,然后再在 b 机器上设置把 8088 端口的流量都转发到真正的钉钉服务器去就行了
    program9527
        14
    program9527  
       2020-10-20 16:21:05 +08:00
    今天刚尝试了一下用 Nginx 代理一个网站,然后看到这里。整理了一下资料:

    zwc365.com/2020/10/20/nginx-setting-proxy-host

    也算是用通过代理访问外网的一个方案吧。当然比不上 socks5 代理或者安装一些第三方的代理软件
    (没有验证手机号老是不给我发链接!!!)
    program9527
        15
    program9527  
       2020-10-20 16:24:09 +08:00
    用 Nginx 做代理服务器,有好有坏吧。不需要安装代理程序了,只要有 Nginx 就行。不过缺点也明显。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   932 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 126ms · UTC 21:10 · PVG 05:10 · LAX 13:10 · JFK 16:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.