我在 VPN 站点到站点设置中将 OpenWrt 路由器作为 OpenVPN 客户端运行。升级到最新的 OpenWrt 22.03 后,我必须将防火墙自定义规则迁移到 nftables。你能帮我找到这个的 nft 文件吗:
你帮忙吗?这不起作用:
table ip nat {
chain prerouting {
type filter hook prerouting priority 0; policy accept;
ip saddr 10.2.1.0/24 dnat 192.168.1.0/24
}
chain postrouting {
type filter hook postrouting priority 100; policy accept;
ip saddr 192.168.1.0/24 snat 10.2.1.0/24
}
}
您提供的示例我相信是 NAT 池(我认为这是正确的术语),而不是 1:1 nat。这使得输入
.1
地址最终会出现 /24 块的随机 .0-.255
目标 IP。
这对我有用:
config forwarding
option src 'vpn'
option dest 'lan'
config forwarding
option src 'lan'
option dest 'vpn'
/etc/config/firewall
config include
option type 'nftables'
option path '/etc/firewall_1to1_nat.nft'
option position 'ruleset-post'
/etc/firewall_1to1_nat.nft
- 这会将入站 10.11.0.0/24
转换为 192.168.0.0/24
并返回。table ip NAT1to1
delete table ip NAT1to1
table ip NAT1to1 {
chain dstnat {
type nat hook prerouting priority dstnat; policy accept;
ip daddr 10.11.0.0/24 iif WIREGUARD counter meta nftrace set 1 dnat ip prefix to ip daddr map { 10.11.0.0/24 : 192.168.0.0/24 }
}
chain srcnat {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 192.168.0.0/24 oif WIREGUARD counter meta nftrace set 1 snat ip prefix to ip saddr map { 192.168.0.0/24 : 10.11.0.0/24 }
}
}
注意:根据需要删除
counter
和 meta nftrace set 1
位。
注意:这适用于
ip
类型 nftables,但不适用于 inet
类型。 inet
表以 Error: Could not process rule: Not supported
消息结束。
注意:对于wireguard,在本示例中,远程端需要在允许的 IP 中包含
10.11.0.0/24
。
来源:https://git.netfilter.org/nftables/commit/?id=35a6b10c1bc488ca195e9c641563c29251f725f3
/etc/sysupgrade.conf
,以便您的备份也包含更新的文件。/etc/firewall_defray_1to1_nat.nft
编辑:更正错误;你不能冲桌子
刷新规则集表inet过滤器{链输入{类型过滤器钩子输入优先级0; } chainforward { type 过滤器钩子转发优先级 0;政策下降; ct状态已建立,相关accept ip Saddr 172.16.0.0/26 oifname“enp1s0”accept ip Saddr 172.16.1.0/24 ip baddr 172.16.0.0/26 tcp dport 3128接受}链输出{类型过滤器钩子输出优先级0; } } table ip nat { chain pre { type nat hook 输入优先级 0; } chain post { type nat hook 输出优先级 0; ip Saddr 172.16.0.0/26 oifname“enp1s0”伪装 ip Saddr 172.16.1.0/24 oifname“enp1s0”伪装 } }