Projet

Général

Profil

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

root / manifests / rules / dnat4.pp @ 31b17627

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
}