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

基于 PPPoE 动态 IPv6 环境下 ip6tables 如何发布内网服务到公网

  •  
  •   acbot · 2021-07-05 15:21:29 +08:00 · 1616 次点击
    这是一个创建于 1024 天前的主题,其中的信息可能已经有所发展或是发生改变。
    IPv4 的时候都是通过 NAT 把端口映射到内网的服务器和端口上,现在 IPv6 内网的机器通过
    路由器获取 IPv6-PD 然后配置一个随机 IPv6,内网的服务器都是获取的公网地址,路由器 v6 防火墙一般默认就是禁止其他公网主动发起对内网服务器的端口访问,由于 IPv6-PD 前缀会变那么服务器 v6 地址本身会变,那么 ip6tables 如何放行对内访问。1. 关闭路由器防火墙开启服务器本身防火墙 2. 放行该端口所有请求,内网的机器自己开防火墙。3. 和以前 v4 nat 类似用路由器网关 v6 ip NAT 服务器内网 v6 IP 另外,现在内网的机器与路由器接口获取的公网 v6 ip 也不一样了 那么 DDNS 是不是就得在具体的服务器上运行了呢不然地址获取就不正确
    12 条回复    2021-07-12 11:50:17 +08:00
    qbqbqbqb
        1
    qbqbqbqb  
       2021-07-05 18:50:45 +08:00
    ip6tables 支持任意形式的掩码,规则里写成 “IPv6 地址 /::ffff:ffff:ffff:ffff” 的形式就可以匹配后 64 位了
    acbot
        2
    acbot  
    OP
       2021-07-05 20:22:35 +08:00
    @qbqbqbqb IPv6-PD 这种模式下 内网的机器公网地址是 IPv6-PD + 随机字符串 IPv6-PD 每次拨号都变 后面随机字符也是要变的,也就是你要放行的内网服务器的公网 IPv6 随机性很大 不像 v4 内网地址可以自己指定
    rio
        3
    rio  
       2021-07-05 21:34:37 +08:00
    @acbot 机器数量不多的话,后缀可以静态指定(比如 ::1 );数量多的话可以 DHCPv6 。PD 的前缀也需要通过路由器 RA,所以路由器上直接跑 DDNS 也完全可行。
    qbqbqbqb
        4
    qbqbqbqb  
       2021-07-06 11:28:16 +08:00
    @acbot 可以用 SLAAC 模式,不用 DHCPv6 有状态。SLAAC 模式下内网机器会生成一个固定地址和一个临时地址,两个都可以接受连接,上网默认用临时地址(所以 DDNS 脚本需要有获取本机固定地址并上传的功能,不能让服务商自行判断你的地址),固定地址后 64 位不会变(以前是用 MAC 地址计算,即 EUI-64 ;现在操作系统都有隐私保护功能,是用另外的不暴露 MAC 地址的算法计算,如果不重装系统不更换硬件,一般也不会变)。
    acbot
        5
    acbot  
    OP
       2021-07-06 11:37:26 +08:00
    @rio PD 后缀固定一下感觉问题不大 但是 PD 前缀都是 PPPoE 以后运营商下发的 这个会变不受控
    acbot
        6
    acbot  
    OP
       2021-07-06 11:42:57 +08:00
    @qbqbqbqb DDNS 我跟多的是想放到防火墙或者是网关设备上运行,如果是服务器本地运行获取 Ip 问题就简单。但是防火墙端口开启问题还是存在 如果关闭网关防火墙或者是直接所有主机的端口都打开 显然不太安全 如果是只开某个特定 IP 的端口 这个特定的 IP 又在变 因为 PPPoE 获取的公网 PD 是变得 不像 v4 时候只有一个内网固定地址
    qbqbqbqb
        7
    qbqbqbqb  
       2021-07-06 11:57:35 +08:00
    @acbot 放到网关设备上运行也可以。SLAAC 获取的两个地址(一个永久和一个临时)里,永久地址后缀是不会变的(除非系统或硬件有改动)。完全可以在网关上拼接前缀+固定后缀得到完整地址(需要 DDNS 软件或脚本支持相应的功能)。防火墙如果是 ip6tables 的话也可以后缀匹配。
    heq
        8
    heq  
       2021-07-06 19:42:15 +08:00 via Android
    @qbqbqbqb 正解

    ubnt-erx 做主路由,就是用 /::ffff:ffff:ffff:ffff 放行内网的服务。
    ericww
        9
    ericww  
       2021-07-06 20:00:07 +08:00 via iPhone
    直接放行目标端口即可,如果有幸其他主机此端口也有服务,并且被扫描到,建议买张彩票,肯定中特等奖。在他能扫描完你的 /64 网段甚至 /56 之前,你的 ISP 已经给你换 PD 前缀了
    acbot
        10
    acbot  
    OP
       2021-07-07 09:20:55 +08:00
    @ericww 你说这个也算是一个方法,不过我感觉 qbqbqbqb heq 提到的 ip6tables 的后缀匹配应该是值得研究的方法
    weyou
        11
    weyou  
       2021-07-09 17:02:25 +08:00 via Android
    #9 才是正解,只要放行端口就好了,PD 和后缀都不可靠。至于安全性,有两点考虑
    1.因为 ipv6 前缀包含的地址范围太大了,别人通过这个端口扫描到你内网其他机器的可能性非常低
    2.内网中其他机器的服务也没必要使用同样的端口,防止 ipv6 地址被别人获取后直接进行端口扫描。
    acbot
        12
    acbot  
    OP
       2021-07-12 11:50:17 +08:00
    @weyou 为什么说后缀不可靠呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5135 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 09:33 · PVG 17:33 · LAX 02:33 · JFK 05:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.