Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

root / manifests / rules / dnat4.pp @ e17693e3

Historique | Voir | Annoter | Télécharger (1,06 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
  Enum['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
}