V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lilogo
V2EX  ›  问与答

为何同一内网下无法通过公网 IP 访问内网中的服务

  •  
  •   lilogo · 343 天前 · 892 次点击
    这是一个创建于 343 天前的主题,其中的信息可能已经有所发展或是发生改变。

    家宽有公网 IP ,于是在内网 Linux 机器上部署了一个 vaultwarden 并且也在路由器上做了端口转发,但是有一个问题无法在家里通过公网 IP + 端口的形式访问 vaultwarden ,只能通过内网 IP 直接访问。

    不知道是哪里配置出了问题,在外部的话是可以正常通过公网 IP + 端口的形式访问的。

    6 条回复    2023-05-16 17:20:48 +08:00
    qishouvip2022
        1
    qishouvip2022  
       343 天前 via iPhone
    老问题了,需要做域内 NAT ,把源数据 IP 转换为公网其他 IP 即可,不然数据包来回兜圈子,无法路由到你的主机。有些防火墙或路由器是默认配置了域内 NAT ,不然就需要手动来做了。
    AS4694lAS4808
        2
    AS4694lAS4808  
       343 天前 via Android
    找找 NAT 回环 选项
    flynaj
        3
    flynaj  
       343 天前 via Android
    路由器要支持环回才行。
    lilogo
        4
    lilogo  
    OP
       339 天前
    是 NAT 回环的问题,问题清楚其实也好解决,我这边使用的是 MikroTik 的 RouterOS 7 ,在网上试了好几种方法都不生效,以下方法是可以正常工作的:

    ```
    /ip firewall nat add chain=dstnat dst-address-type=local protocol=tcp dst-port=8182 action=dst-nat to-addresses=192.168.2.88 to-ports=48182
    /ip firewall nat add chain=srcnat src-address=192.168.2.0/24 dst-address=192.168.2.88 protocol=tcp dst-port=8182 out-interface-list=LAN action=masquerade
    ```

    其中 192.168.2.0 是本地 LAN 网段, 192.168.2.88:48182 是内网服务, 现在外网可以正常访问并且内网也可以通过域名和公网 IP 的形式访问了。
    lilogo
        5
    lilogo  
    OP
       339 天前
    @lilogo 抱歉,上面所有 48182 都修改成 8182 即可。或者明确内网服务和公网访问端口亦可,上面笔误属于。
    lilogo
        6
    lilogo  
    OP
       339 天前
    更新,最后 NAT 回环规则应该只需要下面这一条就可以, 这样就不用每个端口都配置一条了:

    /ip firewall nat add chain=srcnat src-address=192.168.2.0/24 dst-address=192.168.2.0/24 protocol=tcp out-interface-list=LAN action=masquerade comment="Hairpin-NAT"
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2841 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:52 · PVG 19:52 · LAX 04:52 · JFK 07:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.