1 |
А с простого начинать пробовали? |
2 |
|
3 |
Например временно сказать |
4 |
|
5 |
iptables -I FORWARD --src 172.17.18.0/24 --dst 172.16.0.0/24 -j ACCEPT |
6 |
iptables -I FORWARD --src 172.16.0.0/24 --dst 172.17.18.0/24 -j ACCEPT |
7 |
|
8 |
чтобы исключить потенциальные ошибки в правилах iptables и всяких там |
9 |
ip4_black_list, ip4_white_list_2_inet, формирование которых тут неочевидно. |
10 |
|
11 |
Обычно самое необъяснимое поведение в итоге связано с самыми простыми и |
12 |
тупыми ошибками. |
13 |
|
14 |
Что касается действительно необъяснимых подземных стуков в iptables, я |
15 |
имел несчастье наблюдать такие случаи, но все они проявлялись при |
16 |
использовании policy routing. |
17 |
В обычных конфигурациях все ведет себя стабильно и предсказуемо. |
18 |
|
19 |
Для адекватного анализа нужен вывод: |
20 |
|
21 |
arp -a |
22 |
ip addr list |
23 |
ip rule list |
24 |
ip route list |
25 |
ip route list table local |
26 |
iptables-save |
27 |
ipset list |
28 |
|
29 |
При тестировании пингом и логировании tcpdump лучше использовать фильтр |
30 |
типа "tcpdump -ni eth1 icmp" чтобы увидеть трансформации пакетов, если |
31 |
таковые произошли (я надеюсь у вас нет машин, которые постоянно друг |
32 |
друга пингуют). |
33 |
|
34 |
|
35 |
|
36 |
04.06.2015 10:39, Andrew A. Sabitov пишет: |
37 |
|
38 |
> Hi! |
39 |
> Коллеги, кто может раскрыть секрет: что, хотя бы в теории, может |
40 |
> убивать пакеты _до_ iptables??? |
41 |
> |
42 |
> Симптомы: |
43 |
> |
44 |
> Есть раутер локальной сети, стоящий между юзерами и DMZ. |
45 |
> eth1 смотрит в DMZ, на eth0 взведена куча vlan'он, каждый из которых |
46 |
> смотрит |
47 |
> в нужный кусочек пользовательской сети. На раутере накручены |
48 |
> iptables+ipset. |
49 |
> Шейпер и ebtables не используются |
50 |
> |
51 |
> В первом приближении (и с ОЧЕНЬ хорошей точностью) все работает. Но!!! |
52 |
> Совершенно случайно обнаружил проблему, возникновение которой объяснить |
53 |
> не могу уже неделю :( |
54 |
> |
55 |
> В DMZ есть машина 172.16.0.11 (этот момент не принципиален, т.к. |
56 |
> пробовал с |
57 |
> разных машин и даже из разных IP-сетей, как из DMZ, так и |
58 |
> пользовательских). С |
59 |
> этой машины пускается пинг на 2 адреса в одной из пользовательских сетей. |
60 |
> Для определенности, пусть это будут 172.17.18.19 и 172.17.18.40. |
61 |
> |
62 |
> Получаем такой результат: |
63 |
> =============================================================== |
64 |
> sabitov@fig ~ $ ping 172.17.18.19 |
65 |
> PING 172.17.18.19 (172.17.18.19) 56(84) bytes of data. |
66 |
> ^C |
67 |
> --- 172.17.18.19 ping statistics --- |
68 |
> 6 packets transmitted, 0 received, 100% packet loss, time 5002ms |
69 |
> |
70 |
> sabitov@fig ~ $ ping 172.17.18.40 |
71 |
> PING 172.17.18.40 (172.17.18.40) 56(84) bytes of data. |
72 |
> 64 bytes from 172.17.18.40: icmp_seq=1 ttl=63 time=5.59 ms |
73 |
> 64 bytes from 172.17.18.40: icmp_seq=2 ttl=63 time=4.90 ms |
74 |
> ^C |
75 |
> --- 172.17.18.40 ping statistics --- |
76 |
> 2 packets transmitted, 2 received, 0% packet loss, time 1001ms |
77 |
> rtt min/avg/max/mdev = 4.900/5.247/5.594/0.347 ms |
78 |
> =============================================================== |
79 |
> |
80 |
> Перед пинганьем на раутере запускаем: |
81 |
> tcpdump -n -i eth0.0018 net 172.17.18.0/24 and host 172.16.0.11 |
82 |
> tcpdump -n -i eth1 net 172.17.18.0/24 and host 172.16.0.11 |
83 |
> |
84 |
> На eth0.0018 имеем: |
85 |
> =============================================================== |
86 |
> 12:38:00.277614 IP 172.16.0.11 > 172.17.18.19: ICMP echo request, id |
87 |
> 26647, seq 1, length 64 |
88 |
> 12:38:00.283405 IP 172.17.18.19 > 172.16.0.11: ICMP echo reply, id |
89 |
> 26647, seq 1, length 64 |
90 |
> 12:38:01.280200 IP 172.16.0.11 > 172.17.18.19: ICMP echo request, id |
91 |
> 26647, seq 2, length 64 |
92 |
> 12:38:01.285974 IP 172.17.18.19 > 172.16.0.11: ICMP echo reply, id |
93 |
> 26647, seq 2, length 64 |
94 |
> 12:38:02.280152 IP 172.16.0.11 > 172.17.18.19: ICMP echo request, id |
95 |
> 26647, seq 3, length 64 |
96 |
> 12:38:02.285944 IP 172.17.18.19 > 172.16.0.11: ICMP echo reply, id |
97 |
> 26647, seq 3, length 64 |
98 |
> 12:38:03.280164 IP 172.16.0.11 > 172.17.18.19: ICMP echo request, id |
99 |
> 26647, seq 4, length 64 |
100 |
> 12:38:03.285961 IP 172.17.18.19 > 172.16.0.11: ICMP echo reply, id |
101 |
> 26647, seq 4, length 64 |
102 |
> 12:38:04.280186 IP 172.16.0.11 > 172.17.18.19: ICMP echo request, id |
103 |
> 26647, seq 5, length 64 |
104 |
> 12:38:04.286543 IP 172.17.18.19 > 172.16.0.11: ICMP echo reply, id |
105 |
> 26647, seq 5, length 64 |
106 |
> 12:38:05.280201 IP 172.16.0.11 > 172.17.18.19: ICMP echo request, id |
107 |
> 26647, seq 6, length 64 |
108 |
> 12:38:05.286016 IP 172.17.18.19 > 172.16.0.11: ICMP echo reply, id |
109 |
> 26647, seq 6, length 64 |
110 |
> 12:38:13.170502 IP 172.16.0.11 > 172.17.18.40: ICMP echo request, id |
111 |
> 26648, seq 1, length 64 |
112 |
> 12:38:13.175813 IP 172.17.18.40 > 172.16.0.11: ICMP echo reply, id |
113 |
> 26648, seq 1, length 64 |
114 |
> 12:38:14.172288 IP 172.16.0.11 > 172.17.18.40: ICMP echo request, id |
115 |
> 26648, seq 2, length 64 |
116 |
> 12:38:14.176868 IP 172.17.18.40 > 172.16.0.11: ICMP echo reply, id |
117 |
> 26648, seq 2, length 64 |
118 |
> =============================================================== |
119 |
> |
120 |
> На eth1: |
121 |
> =============================================================== |
122 |
> 12:38:00.277575 IP 172.16.0.11 > 172.17.18.19: ICMP echo request, id |
123 |
> 26647, seq 1, length 64 |
124 |
> 12:38:01.280166 IP 172.16.0.11 > 172.17.18.19: ICMP echo request, id |
125 |
> 26647, seq 2, length 64 |
126 |
> 12:38:02.280124 IP 172.16.0.11 > 172.17.18.19: ICMP echo request, id |
127 |
> 26647, seq 3, length 64 |
128 |
> 12:38:03.280132 IP 172.16.0.11 > 172.17.18.19: ICMP echo request, id |
129 |
> 26647, seq 4, length 64 |
130 |
> 12:38:04.280154 IP 172.16.0.11 > 172.17.18.19: ICMP echo request, id |
131 |
> 26647, seq 5, length 64 |
132 |
> 12:38:05.280164 IP 172.16.0.11 > 172.17.18.19: ICMP echo request, id |
133 |
> 26647, seq 6, length 64 |
134 |
> 12:38:13.170466 IP 172.16.0.11 > 172.17.18.40: ICMP echo request, id |
135 |
> 26648, seq 1, length 64 |
136 |
> 12:38:13.175902 IP 172.17.18.40 > 172.16.0.11: ICMP echo reply, id |
137 |
> 26648, seq 1, length 64 |
138 |
> 12:38:14.172256 IP 172.16.0.11 > 172.17.18.40: ICMP echo request, id |
139 |
> 26648, seq 2, length 64 |
140 |
> 12:38:14.176978 IP 172.17.18.40 > 172.16.0.11: ICMP echo reply, id |
141 |
> 26648, seq 2, length 64 |
142 |
> =============================================================== |
143 |
> |
144 |
> Видно, что с .40 все хорошо, а ответы от .19 не проходят через раутер. |
145 |
> Возникло подозрение, |
146 |
> что где-то в iptables я это блокирую, как результат напихал кучу |
147 |
> правил для логирования |
148 |
> прохождения пакета по цепочкам. |
149 |
> |
150 |
> Это реальный кусок без купюр: |
151 |
> =============================================================== |
152 |
> iptables -t raw -A PREROUTING -s 172.17.18.0/24 -j LOG --log-prefix |
153 |
> "172.17.18.0 (raw): " |
154 |
> iptables -t mangle -A PREROUTING -s 172.17.18.0/24 -j LOG --log-prefix |
155 |
> "172.17.18.0 (mangle): " |
156 |
> #маркируем прямые обращения к squid-у для блокировки в цепочке INPUT |
157 |
> iptables -t mangle -A PREROUTING -p TCP -s 172.16.0.0/15 --dport 3128 |
158 |
> -j MARK --set-mark 3128 |
159 |
> |
160 |
> iptables -t nat -A PREROUTING -s 172.17.18.0/24 -j LOG --log-prefix |
161 |
> "172.17.18.0 (nat): " |
162 |
> iptables -t nat -A PREROUTING -p TCP \ |
163 |
> -s 172.16.0.0/15 \ |
164 |
> -m set ! --match-set "ip4_direct_http_clients" src \ |
165 |
> -m set ! --match-set "ip4_all_vlans" dst \ |
166 |
> -m set --match-set "ip4_proxying_port_list" dst \ |
167 |
> -j REDIRECT --to-ports 3128 |
168 |
> |
169 |
> |
170 |
> iptables -A FORWARD -s 172.17.18.0/24 -j LOG --log-prefix "172.17.18.0 |
171 |
> (1): " |
172 |
> iptables -A FORWARD -p ALL -m set --match-set "ip4_black_list" |
173 |
> src -j DROP |
174 |
> iptables -A FORWARD -s 172.17.18.0/24 -j LOG --log-prefix "172.17.18.0 |
175 |
> (2): " |
176 |
> |
177 |
> iptables -A FORWARD -p ALL ! -s 172.17.32.0/24 -m set --match-set |
178 |
> "ip4_all_vlans" src -m set ! --match-set "mac" src,src -m limit |
179 |
> --limit 3/minute --limit-burst 3 -j LOG --log-prefix "Wrong MAC-IP |
180 |
> pair (FORWARD): " |
181 |
> iptables -A FORWARD -p ALL ! -s 172.17.32.0/24 -m set --match-set |
182 |
> "ip4_all_vlans" src -m set ! --match-set "mac" src,src -j DROP |
183 |
> |
184 |
> iptables -A FORWARD -s 172.17.18.0/24 -j LOG --log-prefix "172.17.18.0 |
185 |
> (3): " |
186 |
> |
187 |
> iptables -A FORWARD -p ALL -m set --match-set "ip4_white_list_2_inet" |
188 |
> src -j ACCEPT |
189 |
> iptables -A FORWARD -p ALL -m set --match-set "ip4_white_list_2_inet" |
190 |
> dst -j ACCEPT |
191 |
> |
192 |
> iptables -A FORWARD -p ALL -m addrtype --dst-type |
193 |
> BROADCAST -j DROP |
194 |
> |
195 |
> iptables -A FORWARD -s 172.17.18.0/24 -j LOG --log-prefix "172.17.18.0 |
196 |
> (4): " |
197 |
> |
198 |
> iptables -A FORWARD -p ALL -m conntrack --ctstate |
199 |
> ESTABLISHED,RELATED -j ACCEPT |
200 |
> |
201 |
> iptables -A FORWARD -s 172.17.18.0/24 -j LOG --log-prefix "172.17.18.0 |
202 |
> (5): " |
203 |
> |
204 |
> iptables -A FORWARD -p TCP -j forward_tcp_packets |
205 |
> iptables -A FORWARD -p UDP -j forward_udp_packets |
206 |
> iptables -A FORWARD -p ICMP -j forward_icmp_packets |
207 |
> |
208 |
> iptables -A FORWARD -s 172.17.18.0/24 -j LOG --log-prefix "172.17.18.0 |
209 |
> (6): " |
210 |
> |
211 |
> iptables -A forward_icmp_packets -s 172.17.18.0/24 -j LOG --log-prefix |
212 |
> "172.17.18.0: " |
213 |
> iptables -A forward_icmp_packets -p ICMP -j ACCEPT |
214 |
> =============================================================== |
215 |
> |
216 |
> Если верить диаграмме http://inai.de/images/nf-packet-flow.png , то у |
217 |
> меня должно в первую |
218 |
> очередь отработать логирование входящего пакета в цепочке PREROUTING |
219 |
> таблицы raw. |
220 |
> Дык вот, для ответов от .40 это так и есть, а для .19 -- тишина! |
221 |
> =============================================================== |
222 |
> router ~ # grep 172.17.18. /var/log/messages | grep 172.16.0.11 |
223 |
> Jun 4 12:38:13 router kernel: 172.17.18.0 (raw): IN=eth0.0018 OUT= |
224 |
> MAC=00:13:21:ae:e7:4b:00:1d:b3:91:29:a0:08:00 SRC=172.17.18.40 |
225 |
> DST=172.16.0.11 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=100 PROTO=ICMP |
226 |
> TYPE=0 CODE=0 ID=26648 SEQ=1 |
227 |
> Jun 4 12:38:13 router kernel: 172.17.18.0 (raw): IN=eth0.0018 OUT= |
228 |
> MAC=00:13:21:ae:e7:4b:00:1d:b3:91:29:a0:08:00 SRC=172.17.18.40 |
229 |
> DST=172.16.0.11 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=100 PROTO=ICMP |
230 |
> TYPE=0 CODE=0 ID=26648 SEQ=1 |
231 |
> Jun 4 12:38:13 router kernel: 172.17.18.0 (mangle): IN=eth0.0018 OUT= |
232 |
> MAC=00:13:21:ae:e7:4b:00:1d:b3:91:29:a0:08:00 SRC=172.17.18.40 |
233 |
> DST=172.16.0.11 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=100 PROTO=ICMP |
234 |
> TYPE=0 CODE=0 ID=26648 SEQ=1 |
235 |
> Jun 4 12:38:13 router kernel: 172.17.18.0 (1): IN=eth0.0018 OUT=eth1 |
236 |
> MAC=00:13:21:ae:e7:4b:00:1d:b3:91:29:a0:08:00 SRC=172.17.18.40 |
237 |
> DST=172.16.0.11 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=100 PROTO=ICMP |
238 |
> TYPE=0 CODE=0 ID=26648 SEQ=1 |
239 |
> Jun 4 12:38:13 router kernel: 172.17.18.0 (2): IN=eth0.0018 OUT=eth1 |
240 |
> MAC=00:13:21:ae:e7:4b:00:1d:b3:91:29:a0:08:00 SRC=172.17.18.40 |
241 |
> DST=172.16.0.11 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=100 PROTO=ICMP |
242 |
> TYPE=0 CODE=0 ID=26648 SEQ=1 |
243 |
> Jun 4 12:38:13 router kernel: 172.17.18.0 (3): IN=eth0.0018 OUT=eth1 |
244 |
> MAC=00:13:21:ae:e7:4b:00:1d:b3:91:29:a0:08:00 SRC=172.17.18.40 |
245 |
> DST=172.16.0.11 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=100 PROTO=ICMP |
246 |
> TYPE=0 CODE=0 ID=26648 SEQ=1 |
247 |
> Jun 4 12:38:13 router kernel: 172.17.18.0 (4): IN=eth0.0018 OUT=eth1 |
248 |
> MAC=00:13:21:ae:e7:4b:00:1d:b3:91:29:a0:08:00 SRC=172.17.18.40 |
249 |
> DST=172.16.0.11 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=100 PROTO=ICMP |
250 |
> TYPE=0 CODE=0 ID=26648 SEQ=1 |
251 |
> Jun 4 12:38:14 router kernel: 172.17.18.0 (raw): IN=eth0.0018 OUT= |
252 |
> MAC=00:13:21:ae:e7:4b:00:1d:b3:91:29:a0:08:00 SRC=172.17.18.40 |
253 |
> DST=172.16.0.11 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=101 PROTO=ICMP |
254 |
> TYPE=0 CODE=0 ID=26648 SEQ=2 |
255 |
> Jun 4 12:38:14 router kernel: 172.17.18.0 (raw): IN=eth0.0018 OUT= |
256 |
> MAC=00:13:21:ae:e7:4b:00:1d:b3:91:29:a0:08:00 SRC=172.17.18.40 |
257 |
> DST=172.16.0.11 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=101 PROTO=ICMP |
258 |
> TYPE=0 CODE=0 ID=26648 SEQ=2 |
259 |
> Jun 4 12:38:14 router kernel: 172.17.18.0 (mangle): IN=eth0.0018 OUT= |
260 |
> MAC=00:13:21:ae:e7:4b:00:1d:b3:91:29:a0:08:00 SRC=172.17.18.40 |
261 |
> DST=172.16.0.11 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=101 PROTO=ICMP |
262 |
> TYPE=0 CODE=0 ID=26648 SEQ=2 |
263 |
> Jun 4 12:38:14 router kernel: 172.17.18.0 (1): IN=eth0.0018 OUT=eth1 |
264 |
> MAC=00:13:21:ae:e7:4b:00:1d:b3:91:29:a0:08:00 SRC=172.17.18.40 |
265 |
> DST=172.16.0.11 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=101 PROTO=ICMP |
266 |
> TYPE=0 CODE=0 ID=26648 SEQ=2 |
267 |
> Jun 4 12:38:14 router kernel: 172.17.18.0 (2): IN=eth0.0018 OUT=eth1 |
268 |
> MAC=00:13:21:ae:e7:4b:00:1d:b3:91:29:a0:08:00 SRC=172.17.18.40 |
269 |
> DST=172.16.0.11 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=101 PROTO=ICMP |
270 |
> TYPE=0 CODE=0 ID=26648 SEQ=2 |
271 |
> Jun 4 12:38:14 router kernel: 172.17.18.0 (3): IN=eth0.0018 OUT=eth1 |
272 |
> MAC=00:13:21:ae:e7:4b:00:1d:b3:91:29:a0:08:00 SRC=172.17.18.40 |
273 |
> DST=172.16.0.11 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=101 PROTO=ICMP |
274 |
> TYPE=0 CODE=0 ID=26648 SEQ=2 |
275 |
> Jun 4 12:38:14 router kernel: 172.17.18.0 (4): IN=eth0.0018 OUT=eth1 |
276 |
> MAC=00:13:21:ae:e7:4b:00:1d:b3:91:29:a0:08:00 SRC=172.17.18.40 |
277 |
> DST=172.16.0.11 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=101 PROTO=ICMP |
278 |
> TYPE=0 CODE=0 ID=26648 SEQ=2 |
279 |
> =============================================================== |
280 |
> |
281 |
> Эта проблема касается не только пингов, а трафика "вообще". Например, |
282 |
> через раз срабатывает обход устройств по SNMP. |
283 |
> |
284 |
> |
285 |
> |