1:1 NAT con nftables en OpenWRT 22.03

2 minutos de lectura

Estoy ejecutando mi enrutador OpenWrt como un cliente OpenVPN en una configuración VPN de sitio a sitio. Después de actualizar a OpenWrt 22.03, tengo que migrar las reglas personalizadas de mi firewall a nftables. ¿Me pueden ayudar a encontrar el archivo nft para esto:

  • /usr/sbin/iptables -t nat -I ENRUTAMIENTO PREVIO -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

¿Con ayuda? Esto no está funcionando:

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
    }
}

avatar de usuario de ykuksenko
ykuksenko

mi respuesta preliminar (todavía no he probado la parte srcnat):

El ejemplo que proporcionó creo que hace la agrupación NAT (creo que ese es el termino correcto), en lugar de 1:1 nat; que hace una entrada .1 la dirección termina con un aleatorio .0-.255 IP de destino.


Lo que parece funcionar para mí. (Intentaré actualizar si encuentro algo para cambiar la respuesta).

  1. asegúrese de que el firewall permita el acceso a la zona a la que está intentando acceder: noté este cambio en la configuración después de cambiarlo en la interfaz de usuario de luci. No estoy seguro si hay más.
config forwarding
        option src 'vpn'
        option dest 'lan'
  1. agregue lo siguiente a /etc/config/firewall
config include
        option type 'nftables'
        option path '/etc/firewall_1to1_nat.nft'
        option position 'ruleset-post'
  1. crear /etc/firewall_1to1_nat.nft – esto se traducirá entrante 10.11.0.0/24 a 192.168.0.0/24 y vuelta
flush table 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 }
        }
}

Nota: quitar el counter y meta nftrace set 1 bits según sea necesario.

Nota: esto funciona en ip escriba nftables pero no el inet tipo. inet Las mesas terminan con un Error: Could not process rule: Not supported mensaje.

Fuente: https://git.netfilter.org/nftables/commit/?id=35a6b10c1bc488ca195e9c641563c29251f725f3

¿Ha sido útil esta solución?