主路由:HomeLede v2022.05.10 based on OpenWrt R22.5.5

黑群晖:DS918+

日常使用中,内网之间的通信正常使用局域网IP访问就够了,必须使用域名的场景无非就是强迫症或者必须Https通信,我属于后者,我在群晖里docker了KODBOX和onlyoffice,在外网使用https+端口的方式访问,所以使用onlyoffice插件时就必须填写https的服务器接口地址。

这时候内网是无法通过域名访问这2个站点的,站点之间也是无法通过域名通信的,看一下onlyoffice的错误日志

[2023-01-05T06:25:17.777] 
[ERROR] [localhost] [b7420185510495d19f760f38c6eefcab65274071672191058] 
[1] nodeJS - error downloadFile:url=https://cloud.*****.com:4443/?explorer/share/file&hash=872cK7_uRvb5XIb-PDDsPrBq4tKX5t_zJJI293KMt_QxEVDxrx8X0Q_Ww&name=/TikTok%20%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97%E6%95%B4%E7%90%86%281%29.docx;attempt=3;code:ECONNREFUSED;connect:undefined Error: connect ECONNREFUSED 56.*.*.84:6543

之前我通过在openwrt里docker这2个服务是没有任何问题的,看起来是没有经过openwrt的NAT

所以一开始就定位是NAT环回的问题,于是把群晖里的UPnP的端口全部暂停,使用openwrt进行端口转发,同时勾选了NAT环回,发现还是卵用没有,报一样的错误,

分析原因是不是NAT失效,找了下网上的教程

NAT环回失效问题

ssh连接openwrt系统后,编辑/etc/sysctl.d/11-br-netfilter.conf文件,确认后面的值是0,如果不是,需要改为0。

net.bridge.bridge-nf-call-arptables=0
net.bridge.bridge-nf-call-ip6tables=0
net.bridge.bridge-nf-call-iptables=0
编辑/etc/sysctl.conf文件。文件内容可能是空的,把上面三行内容复制进sysctl.conf文件,保存退出。
ssh内输入sysctl -p命令,查看输出结果是不是第一条下面的那三条内容。
最后,输入/etc/init.d/sysctl restart 。

可能别人成功了,但是我这里还是不行。依然是无法访问

有些摸不着头绪了,使用国外的机子调用了onlyoffice接口是没有问题的,外网访问2个网站也是没有问题的,尝试过把clash,passwall这些影响dns和端口转发的都关闭,问题依旧

在openwrt里到处看,感觉有影响就试一下,终于在网络->DHCP/DNS->常规设置里给找到了这个

自定义挟持域名自定义域名对应的IP地址(需要客户端DNS指向本路由)

把外网的那2个DDNS域名都指向群晖的局域网IP,居然成功的访问了

至此问题解决

最后修改:2023 年 01 月 06 日
如果觉得我的文章对你有用,请随意赞赏