V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Wenpo
V2EX  ›  宽带症候群

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

  •  
  •   Wenpo · 2022-09-08 18:30:49 +08:00 · 4109 次点击
    这是一个创建于 831 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题:

    现在运营商 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 的意义在于什么?

    Snipaste_2022-09-08_18-13-58.jpg Snipaste_2022-09-08_18-14-21.jpg Snipaste_2022-09-08_18-30-38.jpg

    28 条回复    2022-09-13 21:17:02 +08:00
    lululau
        1
    lululau  
       2022-09-08 18:36:28 +08:00
    这个需要黑进电信机房才行
    ochatokori
        2
    ochatokori  
       2022-09-08 18:38:44 +08:00 via Android
    是要两层映射,nat1 意义在于你可以内部向外面打洞,之后就可以让外面任意主机访问了。
    nat4 的话就不行了
    Wenpo
        3
    Wenpo  
    OP
       2022-09-08 18:49:45 +08:00
    @lululau 我看刑
    Wenpo
        4
    Wenpo  
    OP
       2022-09-08 18:56:24 +08:00
    @ochatokori

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

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

    公网 IP ( 117.X.X.X )还是没有映射得嘛
    SenLief
        5
    SenLief  
       2022-09-08 19:01:40 +08:00
    内网 IP 没啥希望吧?
    ochatokori
        6
    ochatokori  
       2022-09-08 19:10:32 +08:00 via Android
    @Wenpo #4 如果你的路由器( 100.x )和运营商( 117.x )都是 NAT1 ,那就是有映射的,但是需要内部先往外访问一次(打洞),只用 upnp 或者直接监听是不行的
    dddxm
        7
    dddxm  
       2022-09-08 19:12:31 +08:00 via iPhone
    这个 nat 测试 GitHub 有新版的。用那个新版的测试看看
    Wenpo
        8
    Wenpo  
    OP
       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
        9
    Wenpo  
    OP
       2022-09-08 19:49:22 +08:00
    @ochatokori 那意思还是有机会的嘛,应该写个 IPK 或者脚本之类的可以实现?
    lsylsy2
        10
    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
        11
    Wenpo  
    OP
       2022-09-08 22:26:14 +08:00
    @lsylsy2 确实有 stun server 这个选项,不过是不是需要双方认定的 stun 服务器,共同到这个服务器查询端口才行?
    mikewang
        12
    mikewang  
       2022-09-08 22:39:14 +08:00   ❤️ 2
    首先,STUN 测试一般使用的是 UDP ,而 Port Forwarding Tester 网站上端口检查是 TCP ,不是同一种协议。
    其次,NAT1 (Full cone NAT) 是可以通过类似打洞的方式,在公网上开放自己 TCP 端口的,并且运行 http/https 服务。
    我正在做这个实验,在中国移动的家宽上已经成功实现。
    有空会把方案开源出来。
    Wenpo
        13
    Wenpo  
    OP
       2022-09-08 23:17:18 +08:00
    @mikewang 非常期待。我想这个功能应该很多人都能用得上。
    jackzhou0
        14
    jackzhou0  
       2022-09-08 23:17:46 +08:00
    @mikewang 期待老哥能分享一下方案
    mikewang
        15
    mikewang  
       2022-09-08 23:36:34 +08:00   ❤️ 1
    @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
        16
    Argon  
       2022-09-08 23:59:41 +08:00 via Android
    @mikewang 期待开源,星星已经准备好了。
    hanguofu
        17
    hanguofu  
       2022-09-09 04:33:54 +08:00
    @mikewang : 高手! 请问这个方案必须把 运营商 的光猫改成 桥接吗 ?
    zhengrt
        18
    zhengrt  
       2022-09-09 07:22:47 +08:00
    @mikewang 期待你的方案!非常感兴趣
    natsji
        19
    natsji  
       2022-09-09 08:02:48 +08:00 via Android
    直接用 ipv6
    knightdf
        20
    knightdf  
       2022-09-09 09:36:03 +08:00
    只能用 frp 之类的可以吧
    MikuM97
        21
    MikuM97  
       2022-09-09 10:46:56 +08:00
    taliscale 之类的软件 SDN 解决方案也可以尝试,NAT1 的情况下软件会自动帮你完成 P2P 的打洞,如果有兴趣折腾,还可以自建 headscale 来提升国内的访问速度
    mikewang
        22
    mikewang  
       2022-09-09 18:29:49 +08:00 via iPhone
    @hanguofu 因为一般情况下光猫防火墙会阻止外部的传入 TCP (即使是 NAT1 )。桥接一劳永逸。
    手动关闭光猫防火墙,并设置 DMZ 也可以达到同样的效果。
    wolfmei
        23
    wolfmei  
       2022-09-10 15:06:00 +08:00
    可以试下部署 headscale
    Tink
        24
    Tink  
       2022-09-11 02:22:24 +08:00 via Android
    @mikewang 类似于 frp ?
    mikewang
        25
    mikewang  
       2022-09-11 09:22:41 +08:00
    @Tink 不是 frp 。
    frp 的流量是要全部经过服务器的。
    这个方案,保持连接只是为了维持 NAT 的端口映射关系,流量不会过服务器。

    服务器并非必要选择,只要知道外部端口并维持连接即可。
    目前在考虑支持 tcp 的 public stun 服务器借助打洞,不过自己服务器的行为更可控一些。
    Tink
        26
    Tink  
       2022-09-11 09:50:02 +08:00
    @mikewang #25 soga 只是为了打洞
    mikewang
        27
    mikewang  
       2022-09-13 00:03:09 +08:00
    Wenpo
        28
    Wenpo  
    OP
       2022-09-13 21:17:02 +08:00
    @mikewang 感谢!已使用上
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5763 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 01:52 · PVG 09:52 · LAX 17:52 · JFK 20:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.