在 OpenWRT 22.03 上使用 nftables 进行 1:1 NAT

问题描述 投票:0回答:2

我在 VPN 站点到站点设置中将 OpenWrt 路由器作为 OpenVPN 客户端运行。升级到最新的 OpenWrt 22.03 后,我必须将防火墙自定义规则迁移到 nftables。你能帮我找到这个的 nft 文件吗:

  • /usr/sbin/iptables -t nat -I PREROUTING -i tun+ -d 10.2.1.0/24 -j NETMAP --to 192.168.1.0/24
  • /usr/sbin/iptables -t nat -I POSTROUTING -o tun+ -s 192.168.1.0/24 -j NETMAP --to 10.2.1.0/24

你帮忙吗?这不起作用:

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
    }
}
routes debian openwrt nftables
2个回答
0
投票

您提供的示例我相信是 NAT 池(我认为这是正确的术语),而不是 1:1 nat。这使得输入

.1
地址最终会出现 /24 块的随机
.0-.255
目标 IP。


这对我有用:

  1. 确保防火墙允许访问您尝试访问的区域。例如这样的事情:
config forwarding
        option src 'vpn'
        option dest 'lan'

config forwarding
        option src 'lan'
        option dest 'vpn'
  1. 将以下内容添加到
    /etc/config/firewall
config include
        option type 'nftables'
        option path '/etc/firewall_1to1_nat.nft'
        option position 'ruleset-post'
  1. 创建
    /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

  1. 另外不要忘记更新
    /etc/sysupgrade.conf
    ,以便您的备份也包含更新的文件。
/etc/firewall_defray_1to1_nat.nft

编辑:更正错误;你不能冲桌子


0
投票

刷新规则集表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”伪装 } }

© www.soinside.com 2019 - 2024. All rights reserved.