You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何设置仅允许本地网络设备通过域名访问家中的Web服务器

如何设置仅允许本地网络设备通过域名访问家中的Web服务器

我明白你现在的需求:家里的Web服务器原本配置好能被公网访问,但你只想让本地局域网里的设备通过域名访问,不想对外暴露对吧?先理一理你目前的情况和试过的方案问题,再给你几个靠谱的解决办法。

你的现状

  • 家里已经有一台配置完成、可被公网访问的Web服务器
  • 本地局域网内的设备,用服务器的本地IP 192.168.1.7 就能正常连接
  • 当设置端口转发允许所有IP(0.0.0.0)访问时,通过公网IP和域名都能访问服务器,但你现在想要限制访问权限,只让本地设备能通过域名访问

你尝试过的方案及遇到的问题

  • 给单台设备连接VPN,再设置端口转发仅允许该VPN IP访问:确实能限制访问,但没法让所有本地设备都连同一个VPN,实用性不强
  • 设置端口转发仅允许某台本地设备的IP(192.168.1.3)访问:只能单台设备使用,而且请求不带公网IP,多设备配置时只能生效一个
  • 还尝试过其他端口转发配置,但没找到合适的解决方案

推荐的解决办法

方法一:利用路由器的本地域名解析(最省心)

这是我最推荐的方案,不用改动服务器配置,全在路由器上就能搞定:

  • 先确认你的路由器支持本地DNS解析(大部分家用路由器都有这个功能,有的叫“域名重定向”“本地域名映射”)
  • 在路由器的本地DNS设置里,把你的域名映射到服务器的本地IP 192.168.1.7
  • 然后修改路由器的端口转发规则:直接关闭公网端口转发(或者设置仅允许192.168.1.0/24这个局域网段访问),不要允许0.0.0.0访问
  • 这样本地设备访问你的域名时,路由器会直接把请求转到服务器的本地IP;而公网设备访问域名时,因为没有对应的端口转发规则,根本连不上你的服务器,完美符合你的需求

方法二:在Web服务器上配置IP访问限制

如果你的路由器没有本地DNS解析功能,直接在服务器上做限制也可以:

  • 如果你用的是Nginx,在配置文件里添加如下规则,只允许局域网段访问:
    location / {
        allow 192.168.1.0/24;
        deny all;
        # 保留你原有配置的其他内容
    }
    
  • 如果你用的是Apache,修改.htaccess文件或者主配置文件:
    <Directory /var/www/html>
        Require ip 192.168.1.0/24
        Require all denied
    </Directory>
    
  • 配置完成后,只有局域网内的设备能通过域名或IP访问服务器,公网IP的访问请求会直接被服务器拒绝

方法三:路由器防火墙规则限制

还可以在路由器的防火墙里设置访问规则:

  • 保留原来的端口转发配置,但在防火墙中添加规则:仅允许来自192.168.1.0/24网段的流量访问服务器的对应端口
  • 同时添加规则拒绝所有其他IP的访问请求,这样公网流量根本无法到达你的服务器,只有本地设备能通过域名访问

备注:内容来源于stack exchange,提问作者Steve Silva

火山引擎 最新活动