root / spec / classes / masquerade_spec.rb @ 0c9bc308
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 |