root / manifests / rules / dnat4.pp @ 25b3f3f4
Historique | Voir | Annoter | Télécharger (1,1 ko)
1 | 351a88fb | tr | # manage a ipv4 dnat rule |
---|---|---|---|
2 | 11bf7237 | Steve Traylen | define nftables::rules::dnat4 ( |
3 | 09cba182 | Steve Traylen | # lint:ignore:parameter_documentation |
4 | 31b17627 | Steve Traylen | Pattern[/^[12]?\d{1,2}\.[12]?\d{1,2}\.[12]?\d{1,2}\.[12]?\d{1,2}$/] $daddr, |
5 | 94a80621 | Steve Traylen | Variant[String,Stdlib::Port] $port, |
6 | 31b17627 | Steve Traylen | Pattern[/^[a-zA-Z0-9_]+$/] $rulename = $title, |
7 | Pattern[/^\d\d$/] $order = '50', |
||
8 | String[1] $chain = 'default_fwd', |
||
9 | Optional[String[1]] $iif = undef, |
||
10 | Enum['tcp','udp'] $proto = 'tcp', |
||
11 | de3e7bb0 | Tim Meusel | Optional[Variant[String,Stdlib::Port]] $dport = undef, |
12 | 31b17627 | Steve Traylen | Enum['present','absent'] $ensure = 'present', |
13 | 09cba182 | Steve Traylen | # lint:endignore |
14 | 351a88fb | tr | ) { |
15 | $iifname = $iif ? { |
||
16 | undef => '', |
||
17 | default => "iifname ${iif} ", |
||
18 | } |
||
19 | $filter_port = $dport ? { |
||
20 | de3e7bb0 | Tim Meusel | undef => $port, |
21 | 351a88fb | tr | default => $dport, |
22 | } |
||
23 | $nat_port = $dport ? { |
||
24 | de3e7bb0 | Tim Meusel | undef => '', |
25 | 351a88fb | tr | default => ":${dport}", |
26 | } |
||
27 | |||
28 | 11bf7237 | Steve Traylen | nftables::rule { |
29 | 351a88fb | tr | default: |
30 | ensure => $ensure, |
||
31 | order => $order; |
||
32 | "${chain}-${rulename}": |
||
33 | content => "${iifname}ip daddr ${daddr} ${proto} dport ${filter_port} accept"; |
||
34 | "PREROUTING-${rulename}": |
||
35 | fcb79d73 | Ben Morrice | table => "ip-${nftables::nat_table_name}", |
36 | 351a88fb | tr | content => "${iifname}${proto} dport ${port} dnat to ${daddr}${nat_port}"; |
37 | } |
||
38 | } |