取消sspanel节点对接时的IP验证,webapi对接

2020-02-27 10:07:17 -0500
详细解析-取消sspanel节点对接时的IP验证,webapi对接 - 云艺博客-做一个有趣的灵魂,分享有趣的东西

详细解析-取消sspanel节点对接时的IP验证,webapi对接

前言

本文解决问题:sspanel原版在使用时,通过webapi对接节点会验证节点id、服务器IP、mukey等参数,来确保安全性。
但实际使用过程诸多不便,比如在使用中转节点、IPLC节点、使用隧道转发等情况下如果节点地址填写域名会出现节点离线
以上节点都有共同点,节点有入口IP和出口IP,也就是两个IP地址。现有解决方案是节点地址填入口IP,节点IP填出口。如果入口是动态IP就会导致频繁更新。
本文将介绍如何去掉/关闭节点的IP验证,如果您不清楚隧道和中转相关信息,我们提供部分资料供您查阅:

SSR国内中转至国外,使用Brook端口转发

可视化的转发面板-iptables详细教程

VNet-Tunnel隧道传输SSR流量安装教程

正文

首先我们找到复杂节点对接的文件:Mod_Mu.php
网站根目录/app/Middleware
我们打开文件找到下述代码

微信截图_20200226193639.png

注意,因为使用版本不一样,内容可能不完全相同,我们删除这个代码即可。操作之前请备份文件。

删除代码后节点对接时不再验证IP,目的达成!

补充

如果你像我一样,不愿意简单的删除,我们可以在代码上加入if。在config文件中选择是否打开验证。

我们在上述代码头加入

 if  (Config::get('checkNodeIp') == 'true') {

结尾加上括弧

}

效果如下(不建议直接复制,不同版本不同分支代码可能不同。本文是在master分支下演示)

if  (Config::get('checkNodeIp') == 'true') {
    $node = Node::where("node_ip", "LIKE", $_SERVER["REMOTE_ADDR"].'%')->first();
if ($node==null && $_SERVER["REMOTE_ADDR"] != '127.0.0.1') {
    $res['ret'] = 0;
    $res['data'] = "token or source is invalid, Your ip address is ". $_SERVER["REMOTE_ADDR"];
    $response->getBody()->write(json_encode($res));
    return $response;
    }
}

然后打开.config.php
在任意位置添加一行

$System_Config['checkNodeIp'] = 'false';                    //webapi是否验证IP,值true时验证

如果dev分支可能是

$_ENV['checkNodeIp'] = false;     //是否webapi验证节点ip

至此,设置完毕,true是验证,否则不验证。不验证节点IP会降低安全性,请自行斟酌选择

小尾巴

经提醒需要在 app/Services/Config.php添加定义使调用生效,本人测试时未添加也生效了,但为了避免误导,此处还是贴出来。

«Newer      Older»
Comment:
Name:

Back to home

Subscribe | Register | Login | N