root / manifests / rules / dnat4.pp @ 7cc88e25
Historique | Voir | Annoter | Télécharger (1,07 ko)
1 |
# manage a ipv4 dnat rule |
---|---|
2 |
define nftables::rules::dnat4( |
3 |
Pattern[/^[12]?\d{1,2}\.[12]?\d{1,2}\.[12]?\d{1,2}\.[12]?\d{1,2}$/] |
4 |
$daddr, |
5 |
Variant[String,Integer[1,65535]] |
6 |
$port, |
7 |
Pattern[/^[a-zA-Z0-9_]+$/] |
8 |
$rulename = $title, |
9 |
Pattern[/^\d\d$/] |
10 |
$order = '50', |
11 |
String[1] |
12 |
$chain = 'default_fwd', |
13 |
Optional[String[1]] |
14 |
$iif = undef, |
15 |
Pattern[/^(tcp|udp)$/] |
16 |
$proto = 'tcp', |
17 |
Optional[Variant[String,Integer[1,65535]]] |
18 |
$dport = '', |
19 |
Enum['present','absent'] |
20 |
$ensure = 'present', |
21 |
) { |
22 |
|
23 |
$iifname = $iif ? { |
24 |
undef => '', |
25 |
default => "iifname ${iif} ", |
26 |
} |
27 |
$filter_port = $dport ? { |
28 |
'' => $port, |
29 |
default => $dport, |
30 |
} |
31 |
$nat_port = $dport ? { |
32 |
'' => '', |
33 |
default => ":${dport}", |
34 |
} |
35 |
|
36 |
nftables::rule{ |
37 |
default: |
38 |
ensure => $ensure, |
39 |
order => $order; |
40 |
"${chain}-${rulename}": |
41 |
content => "${iifname}ip daddr ${daddr} ${proto} dport ${filter_port} accept"; |
42 |
"PREROUTING-${rulename}": |
43 |
table => 'ip-nat', |
44 |
content => "${iifname}${proto} dport ${port} dnat to ${daddr}${nat_port}"; |
45 |
} |
46 |
} |