pymumu / smartdns

A local DNS server to obtain the fastest website IP for the best Internet experience, support DoT, DoH. 一个本地DNS服务器,获取最快的网站IP,获得最佳上网体验,支持DoH,DoT。
https://pymumu.github.io/smartdns/
GNU General Public License v3.0
8.34k stars 1.07k forks source link

内网环境访问公网IP来访问内网设备 速度慢 #1073

Closed kxhubs closed 9 months ago

kxhubs commented 2 years ago

需求应用场景 内网环境去访问公网IP来访问内网设备 速度特别慢 纯内网环境用内网地址访问或纯外网访问公网IP没有任何问题 我不知道是没有这个功能设置吗还是就这样

建议的方案 实现上述场景建议的方案。

设备信息

  1. FriendlyElec NanoPi R2S

  2. 固件信息:[klever1988/nanopi-openwrt] 2022-05-20

PikuZheng commented 2 years ago

路由器端口回流问题,这和smartdns有什么关系吗

crackerfly commented 2 years ago

我不理解….. 这跟这个项目有关系吗?

kxhubs commented 2 years ago

路由器端口回流问题,这和smartdns有什么关系吗

因为如果我只是使用dnsmasq的话 不会出现标题所出现的问题 但当我使用dnsmasq的话就会出现这样的问题

PikuZheng commented 2 years ago

因为如果我只是使用dnsmasq的话 不会出现标题所出现的问题 但当我使用dnsmasq的话就会出现这样的问题

建议在dnsmasq板块提问

pymumu commented 2 years ago

内网环境去访问公网IP来访问内网设备? 没看懂?DDNS?

kxhubs commented 2 years ago

内网环境去访问公网IP来访问内网设备? 没看懂?DDNS?

对 ddns 然后去访问域名 或者本机的公网ip 端口映射出来的服务 是正常可以访问的 但是访问服务下的东西文件会特别的慢 把IP换成内网IP就没有问题了 或者用别的网络环境来去访问本地的公网IP 都正常

kxhubs commented 2 years ago

因为如果我只是使用dnsmasq的话 不会出现标题所出现的问题 但当我使用dnsmasq的话就会出现这样的问题

建议在dnsmasq板块提问

说错了 不是dnsmasq 是smartdns 你不是问和这个smartdns有什么关系吗 我不开这个smartdns 只用自带的dnsmqsq是没有问题的

PikuZheng commented 2 years ago

内网环境去访问公网IP来访问内网设备? 没看懂?DDNS?

对 ddns 然后去访问域名 或者本机的公网ip 端口映射出来的服务 是正常可以访问的 但是访问服务下的东西文件会特别的慢 把IP换成内网IP就没有问题了 或者用别的网络环境来去访问本地的公网IP 都正常

就看懂一句,公网通过ddns域名访问端口映射的服务一切正常。在内网通过内网ip访问肯定正常,这个情况不用考虑。 那么在内网是用域名访问还是用公网ip访问的?原则上ddns域名应该对应公网ip,但有没有可能是dnsmasq直接把域名解析成内网ip了?

kxhubs commented 2 years ago

内网环境去访问公网IP来访问内网设备? 没看懂?DDNS?

对 ddns 然后去访问域名 或者本机的公网ip 端口映射出来的服务 是正常可以访问的 但是访问服务下的东西文件会特别的慢 把IP换成内网IP就没有问题了 或者用别的网络环境来去访问本地的公网IP 都正常

就看懂一句,公网通过ddns域名访问端口映射的服务一切正常。在内网通过内网ip访问肯定正常,这个情况不用考虑。 那么在内网是用域名访问还是用公网ip访问的?原则上ddns域名应该对应公网ip,但有没有可能是dnsmasq直接把域名解析成内网ip了? 没有我设置了ad作为dnsmasq的上游服务器 dns转发到ag passwall对接的smartdns 就是在内网环境下我用域名或者是公网IP去访问内网的NAS 下载速度都特别的慢 除非我去smartdns里指定address为NAS的内网IP 这样的话我在内网的环境下就无法用域名加其他端口号 来访问其他内网设备的目的了

PikuZheng commented 2 years ago

在内网环境下我用域名或者是公网IP去访问内网的NAS 下载速度都特别的慢 除非我去smartdns里指定address为NAS的内网IP

确定是路由器端口回流问题。建议更换固件。参考 https://github.com/coolsnowwolf/lede/issues/3742

kxhubs commented 2 years ago

在内网环境下我用域名或者是公网IP去访问内网的NAS 下载速度都特别的慢 除非我去smartdns里指定address为NAS的内网IP

确定是路由器端口回流问题。建议更换固件。参考 coolsnowwolf/lede#3742

可问题在于 我不使用smartdns 只是使用默认的dnsmasq就没有这个问题啊 而且我这也不是访问不了 而是可以访问 但速度特别慢 速度就只有几M 几十KB

PikuZheng commented 2 years ago

可问题在于 我不使用smartdns 只是使用默认的dnsmasq就没有这个问题啊 而且我这也不是访问不了 而是可以访问 但速度特别慢 速度就只有几M 几十KB

你确定用dnsmasq时,在内网域名解析出的是公网ip?

PikuZheng commented 2 years ago

如果你安装的是dnsmasq-full,应该是dnsmasq对这个公网域名做了connect-track标记,然后由iptables特殊处理了

crackerfly commented 2 years ago

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

PikuZheng commented 2 years ago

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

原则上对内网到wan口的做dstnat就可以了吧?虽然来回的路线和ttl不同,但只要路由器不是严格RP过滤 做masquerade的坏处在于目标服务器没法区分是哪个pc上来的连接

kxhubs commented 2 years ago

可问题在于 我不使用smartdns 只是使用默认的dnsmasq就没有这个问题啊 而且我这也不是访问不了 而是可以访问 但速度特别慢 速度就只有几M 几十KB

你确定用dnsmasq时,在内网域名解析出的是公网ip?

对 解析出来的是公网IP 而且在内网通过不同的端口访问内网下不同的设备是没有问题的 通过ddns的域名在内网环境下下载nas里的文件速度也不慢 使用smartdns之后 虽然都可以访问 但通过公网IP或者绑定的域名来下载nas文件就会慢很多 甚至没速度 只能是用address指定域名解析到NAS的内网IP 下载速度就和内网一样了 但是就没有办法用域名通过别的端口来访问其他内网设备了

kxhubs commented 2 years ago

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

想咨询下这个eth0是那个 我这边eth0是wan6

PikuZheng commented 2 years ago

感觉是dnsmasq切换到smartdns时,有其他配置发生了改变。想要调查清楚估计只能在接口上抓包分析了。问下如果smartdns独立在53端口工作(不自动配置dnsmasq)也会有相同的故障吗?

但我目前最大的猜想是dnsmasq和smartdns不是同一台(或者说不是同一个linux内核

kxhubs commented 2 years ago

感觉是dnsmasq切换到smartdns时,有其他配置发生了改变。想要调查清楚估计只能在接口上抓包分析了。问下如果smartdns独立在53端口工作(不自动配置dnsmasq)也会有相同的故障吗?

但我目前最大的猜想是dnsmasq和smartdns不是同一台(或者说不是同一个linux内核

意思是把原来的dnsmasq的端口改为别的么?然后smartdns改为53端口吗?可是我这边dns转发都转发到了adg上面adg再设置smartdns的端口 之前我只用adg+dnsmasq 关于端口回流这个问题也没出现过

PikuZheng commented 2 years ago

我这边dns转发都转发到了adg上面adg再设置smartdns的端口 之前我只用adg+dnsmasq 关于端口回流这个问题也没出现过

建议比较一下正常时和不正常时iptables有什么差异

pymumu commented 9 months ago

用最新代码,有问题再open issue