Projet

Général

Profil

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

root / spec / classes / masquerade_spec.rb @ 432af5d3

Historique | Voir | Annoter | Télécharger (4,33 ko)

1 c82b960a Steve Traylen
# frozen_string_literal: true
2
3 2a3b45ec tr
require 'spec_helper'
4
5
describe 'nftables' do
6
  let(:pre_condition) { 'Exec{path => "/bin"}' }
7
8
  on_supported_os.each do |os, os_facts|
9
    context "on #{os}" do
10
      let(:facts) { os_facts }
11
12
      context 'with masquerade' do
13
        let(:pre_condition) do
14 01d8a819 tr
          '
15 2a3b45ec tr
          nftables::rules::masquerade{
16 01d8a819 tr
            \'masquerade_eth0\':
17
              oif => \'eth0\';
18
            \'masquerade_eth1_vpn\':
19
              oif   => \'eth1\',
20
              saddr => \'192.0.2.0/24\';
21
            \'masquerade_ssh\':
22
              saddr => \'192.0.2.0/24\',
23
              daddr => \'198.51.100.2\',
24
              proto => \'tcp\',
25
              dport => \'22\';
26
            \'masquerade_ssh_gitlab\':
27
              saddr => \'192.0.2.0/24\',
28
              daddr => \'198.51.100.2\',
29
              dport => \'22\';
30
            \'masquerade_wireguard\':
31
              proto => \'udp\',
32
              dport => \'51820\';
33 2a3b45ec tr
          }
34 01d8a819 tr
          '
35 2a3b45ec tr
        end
36
37
        it { is_expected.to compile }
38
39 01d8a819 tr
        it {
40 c82b960a Steve Traylen
          expect(subject).to contain_concat('nftables-ip-nat-chain-POSTROUTING').with(
41
            path: '/etc/nftables/puppet-preflight/ip-nat-chain-POSTROUTING.nft',
42
            owner: 'root',
43
            group: 'root',
44
            mode: '0640',
45 fa92e118 Romain Tartière
            ensure_newline: true
46 01d8a819 tr
          )
47
        }
48 c82b960a Steve Traylen
49 01d8a819 tr
        it {
50 c82b960a Steve Traylen
          expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-POSTROUTING-header').with(
51
            target: 'nftables-ip-nat-chain-POSTROUTING',
52 01d8a819 tr
            content: %r{^chain POSTROUTING \{$},
53 c82b960a Steve Traylen
            order: '00'
54 01d8a819 tr
          )
55
        }
56 c82b960a Steve Traylen
57 01d8a819 tr
        it {
58 c82b960a Steve Traylen
          expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-POSTROUTING-rule-type').with(
59
            target: 'nftables-ip-nat-chain-POSTROUTING',
60 01d8a819 tr
            content: %r{^  type nat hook postrouting priority 100$},
61 c82b960a Steve Traylen
            order: '01-nftables-ip-nat-chain-POSTROUTING-rule-type-b'
62 01d8a819 tr
          )
63
        }
64 c82b960a Steve Traylen
65 01d8a819 tr
        it {
66 c82b960a Steve Traylen
          expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-POSTROUTING-rule-policy').with(
67
            target: 'nftables-ip-nat-chain-POSTROUTING',
68 01d8a819 tr
            content: %r{^  policy accept$},
69 c82b960a Steve Traylen
            order: '02-nftables-ip-nat-chain-POSTROUTING-rule-policy-b'
70 01d8a819 tr
          )
71
        }
72 c82b960a Steve Traylen
73 01d8a819 tr
        it {
74 c82b960a Steve Traylen
          expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-POSTROUTING-rule-masquerade_eth0').with(
75
            target: 'nftables-ip-nat-chain-POSTROUTING',
76 01d8a819 tr
            content: %r{^  oifname eth0 masquerade$},
77 c82b960a Steve Traylen
            order: '70-nftables-ip-nat-chain-POSTROUTING-rule-masquerade_eth0-b'
78 01d8a819 tr
          )
79
        }
80 c82b960a Steve Traylen
81 01d8a819 tr
        it {
82 c82b960a Steve Traylen
          expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-POSTROUTING-rule-masquerade_eth1_vpn').with(
83
            target: 'nftables-ip-nat-chain-POSTROUTING',
84
            content: %r{^  oifname eth1 ip saddr 192\.0\.2\.0/24 masquerade$},
85
            order: '70-nftables-ip-nat-chain-POSTROUTING-rule-masquerade_eth1_vpn-b'
86 01d8a819 tr
          )
87
        }
88 c82b960a Steve Traylen
89 01d8a819 tr
        it {
90 c82b960a Steve Traylen
          expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-POSTROUTING-rule-masquerade_ssh').with(
91
            target: 'nftables-ip-nat-chain-POSTROUTING',
92
            content: %r{^  ip saddr 192\.0\.2\.0/24 ip daddr 198.51.100.2 tcp dport 22 masquerade$},
93
            order: '70-nftables-ip-nat-chain-POSTROUTING-rule-masquerade_ssh-b'
94 01d8a819 tr
          )
95
        }
96 c82b960a Steve Traylen
97 01d8a819 tr
        it {
98 c82b960a Steve Traylen
          expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-POSTROUTING-rule-masquerade_ssh_gitlab').with(
99
            target: 'nftables-ip-nat-chain-POSTROUTING',
100
            content: %r{^  ip saddr 192\.0\.2\.0/24 ip daddr 198.51.100.2 tcp dport 22 masquerade$},
101
            order: '70-nftables-ip-nat-chain-POSTROUTING-rule-masquerade_ssh_gitlab-b'
102 01d8a819 tr
          )
103
        }
104 c82b960a Steve Traylen
105 01d8a819 tr
        it {
106 c82b960a Steve Traylen
          expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-POSTROUTING-rule-masquerade_wireguard').with(
107
            target: 'nftables-ip-nat-chain-POSTROUTING',
108 01d8a819 tr
            content: %r{^  udp dport 51820 masquerade$},
109 c82b960a Steve Traylen
            order: '70-nftables-ip-nat-chain-POSTROUTING-rule-masquerade_wireguard-b'
110 01d8a819 tr
          )
111
        }
112 c82b960a Steve Traylen
113 01d8a819 tr
        it {
114 c82b960a Steve Traylen
          expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-POSTROUTING-footer').with(
115
            target: 'nftables-ip-nat-chain-POSTROUTING',
116 01d8a819 tr
            content: %r{^\}$},
117 c82b960a Steve Traylen
            order: '99'
118 01d8a819 tr
          )
119
        }
120 2a3b45ec tr
      end
121
    end
122
  end
123
end