root / spec / classes / router_spec.rb @ e499cece
Historique | Voir | Annoter | Télécharger (5,76 ko)
1 | c82b960a | Steve Traylen | # frozen_string_literal: true
|
---|---|---|---|
2 | |||
3 | d78c1613 | 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 | 0b7bcb5d | mh | nft_mode = case os_facts[:os]['family'] |
13 | when 'RedHat' |
||
14 | '0600'
|
||
15 | else
|
||
16 | '0640'
|
||
17 | end
|
||
18 | |||
19 | 8f5d09ec | tr | context 'as router' do |
20 | let(:pre_condition) do |
||
21 | 01d8a819 | tr | '
|
22 | 351a88fb | tr | # inet-filter-chain-default_fwd
|
23 | d78c1613 | tr | nftables::rule{
|
24 | 01d8a819 | tr | \'default_fwd-out\':
|
25 | order => \'20\',
|
||
26 | content => \'iifname eth1 oifname eth0 accept\';
|
||
27 | \'default_fwd-drop\':
|
||
28 | order => \'90\',
|
||
29 | content => \'iifname eth0 drop\';
|
||
30 | 2a3b45ec | tr | }
|
31 | af544fea | tr |
|
32 | 2a3b45ec | tr | nftables::rules::masquerade{
|
33 | 01d8a819 | tr | \'masquerade\':
|
34 | order => \'20\',
|
||
35 | oif => \'eth0\';
|
||
36 | d78c1613 | tr | }
|
37 | 01d8a819 | tr | '
|
38 | 8f5d09ec | tr | end
|
39 | d78c1613 | tr | |
40 | it { is_expected.to compile } |
||
41 | |||
42 | 01d8a819 | tr | it { |
43 | c82b960a | Steve Traylen | expect(subject).to contain_concat('nftables-inet-filter-chain-default_fwd').with(
|
44 | path: '/etc/nftables/puppet-preflight/inet-filter-chain-default_fwd.nft', |
||
45 | owner: 'root', |
||
46 | group: 'root', |
||
47 | 0b7bcb5d | mh | mode: nft_mode,
|
48 | fa92e118 | Romain Tartière | ensure_newline: true |
49 | 01d8a819 | tr | ) |
50 | } |
||
51 | c82b960a | Steve Traylen | |
52 | 01d8a819 | tr | it { |
53 | c82b960a | Steve Traylen | expect(subject).to contain_concat__fragment('nftables-inet-filter-chain-default_fwd-header').with(
|
54 | target: 'nftables-inet-filter-chain-default_fwd', |
||
55 | 01d8a819 | tr | content: %r{^chain default_fwd \{$}, |
56 | c82b960a | Steve Traylen | order: '00' |
57 | 01d8a819 | tr | ) |
58 | } |
||
59 | c82b960a | Steve Traylen | |
60 | 01d8a819 | tr | it { |
61 | c82b960a | Steve Traylen | expect(subject).to contain_concat__fragment('nftables-inet-filter-chain-default_fwd-rule-out').with(
|
62 | target: 'nftables-inet-filter-chain-default_fwd', |
||
63 | 01d8a819 | tr | content: %r{^ iifname eth1 oifname eth0 accept$}, |
64 | c82b960a | Steve Traylen | order: '20-nftables-inet-filter-chain-default_fwd-rule-out-b' |
65 | 01d8a819 | tr | ) |
66 | } |
||
67 | c82b960a | Steve Traylen | |
68 | 01d8a819 | tr | it { |
69 | c82b960a | Steve Traylen | expect(subject).to contain_concat__fragment('nftables-inet-filter-chain-default_fwd-rule-drop').with(
|
70 | target: 'nftables-inet-filter-chain-default_fwd', |
||
71 | 01d8a819 | tr | content: %r{^ iifname eth0 drop$}, |
72 | c82b960a | Steve Traylen | order: '90-nftables-inet-filter-chain-default_fwd-rule-drop-b' |
73 | 01d8a819 | tr | ) |
74 | } |
||
75 | c82b960a | Steve Traylen | |
76 | 01d8a819 | tr | it { |
77 | c82b960a | Steve Traylen | expect(subject).to contain_concat__fragment('nftables-inet-filter-chain-default_fwd-footer').with(
|
78 | target: 'nftables-inet-filter-chain-default_fwd', |
||
79 | 01d8a819 | tr | content: %r{^\}$}, |
80 | c82b960a | Steve Traylen | order: '99' |
81 | 01d8a819 | tr | ) |
82 | } |
||
83 | d78c1613 | tr | |
84 | 01d8a819 | tr | it { |
85 | c82b960a | Steve Traylen | expect(subject).to contain_concat('nftables-ip-nat-chain-PREROUTING').with(
|
86 | path: '/etc/nftables/puppet-preflight/ip-nat-chain-PREROUTING.nft', |
||
87 | owner: 'root', |
||
88 | group: 'root', |
||
89 | 0b7bcb5d | mh | mode: nft_mode,
|
90 | fa92e118 | Romain Tartière | ensure_newline: true |
91 | 01d8a819 | tr | ) |
92 | } |
||
93 | c82b960a | Steve Traylen | |
94 | 01d8a819 | tr | it { |
95 | c82b960a | Steve Traylen | expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-PREROUTING-header').with(
|
96 | target: 'nftables-ip-nat-chain-PREROUTING', |
||
97 | 01d8a819 | tr | content: %r{^chain PREROUTING \{$}, |
98 | c82b960a | Steve Traylen | order: '00' |
99 | 01d8a819 | tr | ) |
100 | } |
||
101 | c82b960a | Steve Traylen | |
102 | 01d8a819 | tr | it { |
103 | c82b960a | Steve Traylen | expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-PREROUTING-rule-type').with(
|
104 | target: 'nftables-ip-nat-chain-PREROUTING', |
||
105 | 01d8a819 | tr | content: %r{^ type nat hook prerouting priority -100$}, |
106 | c82b960a | Steve Traylen | order: '01-nftables-ip-nat-chain-PREROUTING-rule-type-b' |
107 | 01d8a819 | tr | ) |
108 | } |
||
109 | c82b960a | Steve Traylen | |
110 | 01d8a819 | tr | it { |
111 | c82b960a | Steve Traylen | expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-PREROUTING-rule-policy').with(
|
112 | target: 'nftables-ip-nat-chain-PREROUTING', |
||
113 | 01d8a819 | tr | content: %r{^ policy accept$}, |
114 | c82b960a | Steve Traylen | order: '02-nftables-ip-nat-chain-PREROUTING-rule-policy-b' |
115 | 01d8a819 | tr | ) |
116 | } |
||
117 | c82b960a | Steve Traylen | |
118 | 01d8a819 | tr | it { |
119 | c82b960a | Steve Traylen | expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-PREROUTING-footer').with(
|
120 | target: 'nftables-ip-nat-chain-PREROUTING', |
||
121 | 01d8a819 | tr | content: %r{^\}$}, |
122 | c82b960a | Steve Traylen | order: '99' |
123 | 01d8a819 | tr | ) |
124 | } |
||
125 | 95b1259b | tr | |
126 | 01d8a819 | tr | it { |
127 | c82b960a | Steve Traylen | expect(subject).to contain_concat('nftables-ip-nat-chain-POSTROUTING').with(
|
128 | path: '/etc/nftables/puppet-preflight/ip-nat-chain-POSTROUTING.nft', |
||
129 | owner: 'root', |
||
130 | group: 'root', |
||
131 | 0b7bcb5d | mh | mode: nft_mode,
|
132 | fa92e118 | Romain Tartière | ensure_newline: true |
133 | 01d8a819 | tr | ) |
134 | } |
||
135 | c82b960a | Steve Traylen | |
136 | 01d8a819 | tr | it { |
137 | c82b960a | Steve Traylen | expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-POSTROUTING-header').with(
|
138 | target: 'nftables-ip-nat-chain-POSTROUTING', |
||
139 | 01d8a819 | tr | content: %r{^chain POSTROUTING \{$}, |
140 | c82b960a | Steve Traylen | order: '00' |
141 | 01d8a819 | tr | ) |
142 | } |
||
143 | c82b960a | Steve Traylen | |
144 | 01d8a819 | tr | it { |
145 | c82b960a | Steve Traylen | expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-POSTROUTING-rule-type').with(
|
146 | target: 'nftables-ip-nat-chain-POSTROUTING', |
||
147 | 01d8a819 | tr | content: %r{^ type nat hook postrouting priority 100$}, |
148 | c82b960a | Steve Traylen | order: '01-nftables-ip-nat-chain-POSTROUTING-rule-type-b' |
149 | 01d8a819 | tr | ) |
150 | } |
||
151 | c82b960a | Steve Traylen | |
152 | 01d8a819 | tr | it { |
153 | c82b960a | Steve Traylen | expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-POSTROUTING-rule-policy').with(
|
154 | target: 'nftables-ip-nat-chain-POSTROUTING', |
||
155 | 01d8a819 | tr | content: %r{^ policy accept$}, |
156 | c82b960a | Steve Traylen | order: '02-nftables-ip-nat-chain-POSTROUTING-rule-policy-b' |
157 | 01d8a819 | tr | ) |
158 | } |
||
159 | c82b960a | Steve Traylen | |
160 | 01d8a819 | tr | it { |
161 | c82b960a | Steve Traylen | expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-POSTROUTING-rule-masquerade').with(
|
162 | target: 'nftables-ip-nat-chain-POSTROUTING', |
||
163 | 01d8a819 | tr | content: %r{^ oifname eth0 masquerade$}, |
164 | c82b960a | Steve Traylen | order: '20-nftables-ip-nat-chain-POSTROUTING-rule-masquerade-b' |
165 | 01d8a819 | tr | ) |
166 | } |
||
167 | c82b960a | Steve Traylen | |
168 | 01d8a819 | tr | it { |
169 | c82b960a | Steve Traylen | expect(subject).to contain_concat__fragment('nftables-ip-nat-chain-POSTROUTING-footer').with(
|
170 | target: 'nftables-ip-nat-chain-POSTROUTING', |
||
171 | 01d8a819 | tr | content: %r{^\}$}, |
172 | c82b960a | Steve Traylen | order: '99' |
173 | 01d8a819 | tr | ) |
174 | } |
||
175 | d78c1613 | tr | end
|
176 | end
|
||
177 | end
|
||
178 | end |