#! /sbin/nft -f # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Copyright © 2018-2019 Hugo Levy-Falk table ip nat { set radius_federez { type ipv4_addr elements = { 195.154.165.76, 185.230.78.47 } } chain prerouting { type nat hook prerouting priority 0; ip saddr $range_prerezotage ip daddr != { $intranet, $comnpay, $website } tcp dport {http,https} dnat $bounce_server; ip saddr @radius_federez ip daddr $ip_self_public tcp dport { 636, 389 } dnat $ip_radius; ip saddr @radius_federez ip daddr $ip_self_public udp dport { 636, 1812 } dnat $ip_radius; } chain postrouting { type nat hook postrouting priority 100 meta oifname != $if_supelec return ip saddr $ip_radius ip daddr @radius_federez tcp dport { 636, 389} snat to $ip_self_public ip saddr $ip_radius ip daddr @radius_federez udp dport { 636, 1812 } snat to $ip_self_public ip daddr != {10.0.0.0/8, $range_public} ip saddr vmap { $range_adherent : goto adherent_nat, $range_admin : goto admin_nat, $range_federez : goto federez_nat, $range_aloes : goto aloes_nat, $range_prerezotage : goto prerezotage_nat } ip daddr != {10.0.0.0/8, $range_public} ip saddr != $range_public snat to $ip_self_public } }