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