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

2023-05-11 21:06:02 +08:00
 lilogo

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

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

1029 次点击
所在节点    问与答
6 条回复
stcQ2G13k9yxep40
2023-05-11 21:10:40 +08:00
老问题了,需要做域内 NAT ,把源数据 IP 转换为公网其他 IP 即可,不然数据包来回兜圈子,无法路由到你的主机。有些防火墙或路由器是默认配置了域内 NAT ,不然就需要手动来做了。
AS4694lAS4808
2023-05-11 21:13:32 +08:00
找找 NAT 回环 选项
flynaj
2023-05-11 23:10:39 +08:00
路由器要支持环回才行。
lilogo
2023-05-16 12:49:37 +08:00
是 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
2023-05-16 12:51:48 +08:00
@lilogo 抱歉,上面所有 48182 都修改成 8182 即可。或者明确内网服务和公网访问端口亦可,上面笔误属于。
lilogo
2023-05-16 17:20:48 +08:00
更新,最后 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"

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/939309

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX