问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

路由器防火墙配置:允许从外网访问IPv6服务及IPv4端口映射

创作时间:
作者:
@小白创作中心

路由器防火墙配置:允许从外网访问IPv6服务及IPv4端口映射

引用
1
来源
1.
https://www.cnblogs.com/osnosn/p/11781359.html

随着家庭宽带运营商普遍提供IPv6服务,如何正确配置路由器防火墙以允许从外网访问内网设备的IPv6服务成为了一个重要话题。本文将详细介绍在OpenWRT路由器上配置防火墙,允许从外网访问内网的IPv6服务,并进行IPv4端口映射的具体步骤。

OpenWRT防火墙设置

基本概念

当你通过家庭宽带拨号上网后,运营商会分配给你一个IPv6地址和一个IPv6前缀。这意味着你路由器后面的设备都会获得一个公网IPv6地址。但是,默认情况下,内网设备虽然有公网IPv6地址,却无法从外网直接访问,仅能被外网ping通。这是因为路由器的缺省设置为了保护内网设备,没有将它们暴露到公网上。

如果你需要从公网访问内网设备提供的HTTPS或其他服务,就需要修改路由器防火墙的设置,允许从公网访问指定设备的指定端口。内网设备需要使用EUI-64格式的IPv6地址,才能安全地开放指定的内网机器。

配置步骤

OpenWRT的防火墙设置界面

添加Forward规则

IPv6已经是公网地址,无需NAT转换或端口映射,只需转发即可。这样不会增加路由器的负荷。

对于OpenWRT-18.06版本,返回后可以看到一个"未命名的规则",编辑它;对于OpenWRT-21.02版本,可以直接在Traffic rules页面的最下面添加。

设置目标地址

  • 使用无状态的EUI-64地址:它的后缀是不变的。
  • 内网设备的IPv6地址前半部分是IPv6前缀,是运营商分配的,重拨后会变化;后半部分如果是随机生成的也会变,但如果是EUI-64格式则与MAC地址相关,不会变化(除非更换网卡)。
  • 如果整个IPv6地址都会变,防火墙规则就无法固定。因此需要配置内网设备的IPv6地址为EUI-64格式,防火墙的内网目标地址掩码填写::xxxx:xxxx:xxxx:xxxx/::FFFF:FFFF:FFFF:FFFF

其他选项设置

  • 协议族必须选择"IPv6 only",因为整条规则只针对IPv6协议。
  • 协议按需选择TCP、UDP或TCP/UDP。
  • Source zone选择WAN(包含WAN6)。
  • Destination Zone选择"Any zone(forward)"或"lan"都可以。
  • 目标端口按需填写,多个端口用空格隔开。
  • 开放IPv6的端口访问,数据包是直达内网机器,不存在外网端口的概念。

实际规则示例

对于OpenWRT-18.06版本:

ip6tables -A FORWARD -i pppoe-wan -d ::5678:5678:5678/::ffff:ffff:ffff:ffff -p tcp -m tcp --dport 443 -j ACCEPT
ip6tables -A FORWARD -i pppoe-wan -d ::5678:5678:5678/::ffff:ffff:ffff:ffff -p udp -m udp --dport 443 -j ACCEPT

对于OpenWRT-22.03版本(使用nftables):

table inet fw4 {
  chain forward {
    type filter hook forward priority filter; policy drop;
    iifname "eth1" ip6 daddr & ::ffff:ffff:ffff:ffff == ::5678:5678:5678:5678 tcp dport 443 counter accept
  }
}

其他固件的IPv6防火墙设置

  • 华硕路由器/梅林固件:设置方法类似,通过SSH登录后发现本质也是添加iptables规则。
  • 老毛子Padavan:基于华硕的改版,需要手动添加ip6tables的forward规则。
  • 潘多拉PandoraBox:是OpenWRT的衍生版,可以通过uci命令行设置。
  • 高格:是OpenWRT的衍生版,据说不支持IPv6。
  • iKuai爱快:3.7.0及以上版本开始支持IPv6的ACL规则。

防火墙中的默认规则

在网络防火墙的通用设置中,可以将Forward的默认规则改为drop,影响从外网访问内网LAN,不开放的IPv6地址和端口。这会修改iptables/ip6tables的filter->FORWARD的最后一条规则。

公网IPv4端口映射

如果你有公网IPv4地址,还需要进行IPv4端口映射。这与IPv6无关,但可以同时配置以支持IPv4访问。

配置步骤

  • 在OpenWRT中,通过Network -> Firewall -> Port Forwards添加一个新的端口映射。
  • 填写名称、协议、外网端口、内网地址和内网端口,最后保存并提交。

实际规则示例

对于OpenWRT-18.06版本:

iptables -t nat -A PREROUTING -i pppoe-wan -p tcp -m tcp --dport 999 -j DNAT --to-destination 192.168.2.123:443
iptables -t nat -A POSTROUTING -o pppoe-wan -j MASQUERADE

对于OpenWRT-22.03版本(使用nftables):

table inet fw4 {
  chain dstnat {
    type nat hook prerouting priority dstnat;
    iifname "br-lan" ip saddr 192.168.2.0/24 ip daddr 123.123.123.123 tcp dport 999 dnat ip to 192.168.2.123:443 comment "(reflection)"
    iifname "eth1" meta nfproto ipv4 tcp dport 999 counter dnat ip to 192.168.2.123:443
  }
  chain srcnat {
    type nat hook postrouting priority srcnat;
    oifname "br-lan" ip saddr 192.168.2.0/24 ip daddr 192.168.2.123 tcp dport 443 snat ip to 192.168.2.1 comment "(reflection)"
    oifname "eth1" meta nfproto ipv4 masquerade comment "Masquerade IPv4 wan traffic"
  }
}

多拨和旁路由情况

  • 映射到路由器自己的端口,所有公网IPv4的端口映射都有效。
  • 映射到内网其他机器的端口,只有第一个公网IPv4的端口映射有效。
  • 如果有旁路由,参考相关设置方法。

总结

  • 有公网IPv6就设IPv6的转发规则,开放IPv6的访问。
  • 有公网IPv4就做IPv4的端口映射,开放IPv4的访问。
  • IPv4和IPv6的设置互不干扰。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号