内网 IP 下,如何正确进行端口映射?

2022-09-08 18:30:49 +08:00
 Wenpo

如题:

现在运营商 PPPOE 桥接下发的是内网 IP ( 100.X.X.X),NAT1 ,路由类原生 openwrt ;

尝试开了 UPNP ,并且成功映射,外网测试公网 IP ( 117.X.X.X)端口不通;

手动在防火墙建立映射,外网测试公网 IP ( 117.X.X.X)端口不通;

基于以上

我是否可以理解,在获得内网 IP 的情况下,如果想要成功的做端口映射

需要做两层端口映射?

即 Ppoe 桥接后,Openwrt ( 100.X.X.X)上的端口映射只对 100.X.X.X 以下生效

还需要对 Openwrt 以上( 117.X.X.X)做一层端口映射?

那内网 NAT1 的意义在于什么?

3660 次点击
所在节点    宽带症候群
28 条回复
lululau
2022-09-08 18:36:28 +08:00
这个需要黑进电信机房才行
ochatokori
2022-09-08 18:38:44 +08:00
是要两层映射,nat1 意义在于你可以内部向外面打洞,之后就可以让外面任意主机访问了。
nat4 的话就不行了
Wenpo
2022-09-08 18:49:45 +08:00
@lululau 我看刑
Wenpo
2022-09-08 18:56:24 +08:00
@ochatokori

那我们现在内网 IP 的情况下

NAT1 只是说对于下发的这个内网 IP ( 100.X.X.X)可以映射

公网 IP ( 117.X.X.X )还是没有映射得嘛
SenLief
2022-09-08 19:01:40 +08:00
内网 IP 没啥希望吧?
ochatokori
2022-09-08 19:10:32 +08:00
@Wenpo #4 如果你的路由器( 100.x )和运营商( 117.x )都是 NAT1 ,那就是有映射的,但是需要内部先往外访问一次(打洞),只用 upnp 或者直接监听是不行的
dddxm
2022-09-08 19:12:31 +08:00
这个 nat 测试 GitHub 有新版的。用那个新版的测试看看
Wenpo
2022-09-08 19:47:55 +08:00
@dddxm

![Snipaste_2022-09-08_19-44-18.jpg]( https://img1.imgtp.com/2022/09/08/mVX1TRNL.jpg)
![Snipaste_2022-09-08_19-45-45.jpg]( https://img1.imgtp.com/2022/09/08/0546lZZB.jpg)

试了,也是 NAT1
Wenpo
2022-09-08 19:49:22 +08:00
@ochatokori 那意思还是有机会的嘛,应该写个 IPK 或者脚本之类的可以实现?
lsylsy2
2022-09-08 20:56:19 +08:00
以原版 openwrt21.03 为例,在 upnp 设置里可以启用 stun server ,这样流程就是:
假设公网 IP ( 117.x.x.x )为 A ,openwrt ( 100.x.x.x )为 B ,终端( 192.168.x.x )为 C:
1 、C 向 B 发送 UPNP 请求,“给我映射个公网端口到 192.168.x.x:54321”
2 、B 在自己的防火墙上设置 100.x.x.x:54321 转发到 192.168.x.x:54321 ,然后通过 A 连接公网的 stun 服务查到这是个 NAT1 ,他的公网对应端口是 117.x.x.x:12345
3 、B 告诉 C:我帮你映射好了,外网访问 117.x.x.x:12345 就可以转发到你的 54321
Wenpo
2022-09-08 22:26:14 +08:00
@lsylsy2 确实有 stun server 这个选项,不过是不是需要双方认定的 stun 服务器,共同到这个服务器查询端口才行?
mikewang
2022-09-08 22:39:14 +08:00
首先,STUN 测试一般使用的是 UDP ,而 Port Forwarding Tester 网站上端口检查是 TCP ,不是同一种协议。
其次,NAT1 (Full cone NAT) 是可以通过类似打洞的方式,在公网上开放自己 TCP 端口的,并且运行 http/https 服务。
我正在做这个实验,在中国移动的家宽上已经成功实现。
有空会把方案开源出来。
Wenpo
2022-09-08 23:17:18 +08:00
@mikewang 非常期待。我想这个功能应该很多人都能用得上。
jackzhou0
2022-09-08 23:17:46 +08:00
@mikewang 期待老哥能分享一下方案
mikewang
2022-09-08 23:36:34 +08:00
@Wenpo
@jackzhou0

简单介绍一下原理吧。

假设运营商给了我 NAT IP:100.64.12.34
利用 Socket 端口重用的特性,监听 TCP 端口 100.64.12.34:1234 的同时,由这个端口,向我的腾讯云服务器建立一条 TCP 连接。
服务器告诉本地,你的公网地址是 203.0.113.10:14500 ,并且服务器保持这个连接不关闭。(这很重要)
只要这条连接维持下去,任意地址访问 203.0.113.10:14500 ,最终都会转发到 100.64.12.34:1234 去。
一旦这条连接断开,那么转发规则就会失效。

方案可行前提是:NAT1 ,并且没有 TCP 防火墙(一般改桥接即可)。
Argon
2022-09-08 23:59:41 +08:00
@mikewang 期待开源,星星已经准备好了。
hanguofu
2022-09-09 04:33:54 +08:00
@mikewang : 高手! 请问这个方案必须把 运营商 的光猫改成 桥接吗 ?
zhengrt
2022-09-09 07:22:47 +08:00
@mikewang 期待你的方案!非常感兴趣
natsji
2022-09-09 08:02:48 +08:00
直接用 ipv6
knightdf
2022-09-09 09:36:03 +08:00
只能用 frp 之类的可以吧

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

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

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

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

© 2021 V2EX