Jump to content
Калькуляторы

ACL - отматчить пакеты с сети 10.0.0.0/8 в НЕ 10.0.0.0/8

Необходимо отматчить пакеты с сети 10.0.0.0/8 в НЕ 10.0.0.0/8

В линуксе в айпитейблисе это: -s 10.0.0.0/8 ! -d 10.0.0.0/8

 

Вот состряпал ACL для коммутатора:

ip access-list extended acl-local-to-inet
10 permit tcp 10.0.0.0 0.255.255.255 10.0.0.0 245.255.255.255

Но возник вопрос - верно ли я описал wildcard назначения?

 

Вот два варианта (ip wildcard):

1) 0.0.0.0 245.255.255.255

2) 10.0.0.0 245.255.255.255

 

Какой из них описывает "НЕ 10.0.0.0/8"

 

Сам склоняюсь к первому варианту.

Edited by ThreeDHead

Share this post


Link to post
Share on other sites

10 permit ip 10.0.0.0 0.255.255.255 10.0.0.0 0.255.255.255
20 deny ip 10.0.0.0 0.255.255.255 any
30 permit ip any any

Считаю что так несколько мудрёно.

 

Вообще привел несколько некорректный пример, там у меня TCP, но нет окончания, почему именно TCP.

Вот так понятнее будет (с локала в интернет на 80 порт):

ip access-list extended acl-local-to-inet
10 permit tcp 10.0.0.0 0.255.255.255 10.0.0.0 245.255.255.255 eq www

 

Одной строчкой реально описАть?

Share this post


Link to post
Share on other sites

10 permit ip 10.0.0.0 0.255.255.255 10.0.0.0 0.255.255.255
20 deny ip 10.0.0.0 0.255.255.255 any
30 permit ip any any

и че, все также заденаится

очевидно автору это не нужно, ацл должен исключить из обработки такие пакеты, а не запретить их совсем

 

Какой из них описывает "НЕ 10.0.0.0/8"

оба неправильные

больше подходит первый, но под него не попадает не только 0000 1010, но и 00001011, и тд

Share this post


Link to post
Share on other sites

Интересно, такой вариант, однозначно опишет "НЕ 10.0.0.0/8":

 

10 permit tcp 10.0.0.0 0.255.255.255   0.0.0.0 240.255.255.255 eq www
11 permit tcp 10.0.0.0 0.255.255.255   1.0.0.0 240.255.255.255 eq www
12 permit tcp 10.0.0.0 0.255.255.255   2.0.0.0 240.255.255.255 eq www
13 permit tcp 10.0.0.0 0.255.255.255   3.0.0.0 240.255.255.255 eq www
14 permit tcp 10.0.0.0 0.255.255.255   4.0.0.0 240.255.255.255 eq www
15 permit tcp 10.0.0.0 0.255.255.255   5.0.0.0 240.255.255.255 eq www
16 permit tcp 10.0.0.0 0.255.255.255   6.0.0.0 240.255.255.255 eq www
17 permit tcp 10.0.0.0 0.255.255.255   7.0.0.0 240.255.255.255 eq www
18 permit tcp 10.0.0.0 0.255.255.255   8.0.0.0 240.255.255.255 eq www
19 permit tcp 10.0.0.0 0.255.255.255   9.0.0.0 240.255.255.255 eq www

21 permit tcp 10.0.0.0 0.255.255.255  11.0.0.0 240.255.255.255 eq www
22 permit tcp 10.0.0.0 0.255.255.255  12.0.0.0 240.255.255.255 eq www
23 permit tcp 10.0.0.0 0.255.255.255  13.0.0.0 240.255.255.255 eq www
24 permit tcp 10.0.0.0 0.255.255.255  14.0.0.0 240.255.255.255 eq www
25 permit tcp 10.0.0.0 0.255.255.255  15.0.0.0 240.255.255.255 eq www

30 permit tcp 10.0.0.0 0.255.255.255  26.0.0.0 240.255.255.255 eq www
31 permit tcp 10.0.0.0 0.255.255.255  42.0.0.0 240.255.255.255 eq www
32 permit tcp 10.0.0.0 0.255.255.255  58.0.0.0 240.255.255.255 eq www
33 permit tcp 10.0.0.0 0.255.255.255  74.0.0.0 240.255.255.255 eq www
34 permit tcp 10.0.0.0 0.255.255.255  90.0.0.0 240.255.255.255 eq www
35 permit tcp 10.0.0.0 0.255.255.255 106.0.0.0 240.255.255.255 eq www
36 permit tcp 10.0.0.0 0.255.255.255 122.0.0.0 240.255.255.255 eq www
37 permit tcp 10.0.0.0 0.255.255.255 138.0.0.0 240.255.255.255 eq www
38 permit tcp 10.0.0.0 0.255.255.255 154.0.0.0 240.255.255.255 eq www
39 permit tcp 10.0.0.0 0.255.255.255 170.0.0.0 240.255.255.255 eq www
40 permit tcp 10.0.0.0 0.255.255.255 186.0.0.0 240.255.255.255 eq www
41 permit tcp 10.0.0.0 0.255.255.255 202.0.0.0 240.255.255.255 eq www
42 permit tcp 10.0.0.0 0.255.255.255 218.0.0.0 240.255.255.255 eq www
43 permit tcp 10.0.0.0 0.255.255.255 234.0.0.0 240.255.255.255 eq www
44 permit tcp 10.0.0.0 0.255.255.255 250.0.0.0 240.255.255.255 eq www

 

Но это вариант, конечно, конкретно "в лоб".

Edited by ThreeDHead

Share this post


Link to post
Share on other sites

Ну, собственно, вот и окончательный вариант:

10 permit tcp 10.0.0.0 0.255.255.255 0.0.0.0 245.255.255.255 eq www
20 permit tcp 10.0.0.0 0.255.255.255 2.0.0.0 245.255.255.255 eq www
30 permit tcp 10.0.0.0 0.255.255.255 8.0.0.0 245.255.255.255 eq www

 

Где:

  0 = 00000000
 2 = 00000010
 8 = 00001000
10 = 00001010
245 = 11110101

 

Ибо правило "10.0.0.0/8 в any" будет выглядеть так:

10 permit tcp 10.0.0.0 0.255.255.255  0.0.0.0 245.255.255.255 eq www
20 permit tcp 10.0.0.0 0.255.255.255  2.0.0.0 245.255.255.255 eq www
30 permit tcp 10.0.0.0 0.255.255.255  8.0.0.0 245.255.255.255 eq www
40 permit tcp 10.0.0.0 0.255.255.255 10.0.0.0 245.255.255.255 eq www

Share this post


Link to post
Share on other sites

Самый правильный c точки зрения наглядности вариант всё-таки несколько длиннее:

 

// поправленная версия ниже

 

Понятно, что портянка, но зато более-менее канонично (с точки зрения сабнетинга).

Edited by Alex/AT

Share this post


Link to post
Share on other sites

Я был неправ.

Собрал стенд, провел тесты, ниже рабочий вариант.

Алгоритм такой:

1. Пропускаем все что не совпадает с 10-кой 00001010, это 00000000, 00000010, 00001000 (первые три строчки) при wildcard 245 (11110101)

2. Тут приходится перечислять все сети, в которых первый октет содержит два бита как и в 10-ке при wildcard 0 (00000000)

Не совсем радужное количество записей, но другого варианта описать НЕ 10.0.0.0/8 - нету.

permit ip 10.0.0.0 0.255.255.255 0.0.0.0 245.255.255.255
permit ip 10.0.0.0 0.255.255.255 2.0.0.0 245.255.255.255
permit ip 10.0.0.0 0.255.255.255 8.0.0.0 245.255.255.255
permit ip 10.0.0.0 0.255.255.255  11.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  14.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  15.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  26.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  27.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  30.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  31.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  42.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  43.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  46.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  47.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  58.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  59.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  62.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  63.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  74.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  75.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  78.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  79.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  90.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  91.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  94.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255  95.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 106.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 107.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 110.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 111.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 122.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 123.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 126.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 127.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 138.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 139.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 142.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 143.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 154.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 155.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 158.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 159.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 170.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 171.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 174.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 175.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 186.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 187.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 190.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 191.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 202.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 203.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 206.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 207.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 218.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 219.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 222.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 223.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 234.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 235.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 238.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 239.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 250.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 251.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 254.0.0.0 0.255.255.255
permit ip 10.0.0.0 0.255.255.255 255.0.0.0 0.255.255.255

Share this post


Link to post
Share on other sites

Не совсем радужное количество записей, но другого варианта описать НЕ 10.0.0.0/8 - нету.

Oops. Лишков :)

 

Был мой пост выше - я там вчера слегка по вечеру и недосыпу попутал маски, но вот это - 100% описание "НЕ 10.0.0.0/8" в 8 строк:

 

permit tcp 10.0.0.0 0.255.255.255 0.0.0.0 7.255.255.255
permit tcp 10.0.0.0 0.255.255.255 8.0.0.0 1.255.255.255
permit tcp 10.0.0.0 0.255.255.255 11.0.0.0 0.255.255.255
permit tcp 10.0.0.0 0.255.255.255 12.0.0.0 3.255.255.255
permit tcp 10.0.0.0 0.255.255.255 16.0.0.0 15.255.255.255
permit tcp 10.0.0.0 0.255.255.255 32.0.0.0 31.255.255.255
permit tcp 10.0.0.0 0.255.255.255 64.0.0.0 63.255.255.255
permit tcp 10.0.0.0 0.255.255.255 128.0.0.0 127.255.255.255

 

Если вкратце разобрать матчинг - то он таков: 0-7, 8-9, 11, 12-15, 16-31, 32-63, 64-127, 128-255. Т.е. покрываются все диапазоны 1 октета, кроме собственно 10.

Edited by Alex/AT

Share this post


Link to post
Share on other sites

Не совсем радужное количество записей, но другого варианта описать НЕ 10.0.0.0/8 - нету.

Oops. Лишков :)

 

Был мой пост выше - я там вчера слегка по вечеру и недосыпу попутал маски, но вот это - 100% описание "НЕ 10.0.0.0/8" в 8 строк:

 

permit tcp 10.0.0.0 0.255.255.255 0.0.0.0 7.255.255.255
permit tcp 10.0.0.0 0.255.255.255 8.0.0.0 1.255.255.255
permit tcp 10.0.0.0 0.255.255.255 11.0.0.0 0.255.255.255
permit tcp 10.0.0.0 0.255.255.255 12.0.0.0 3.255.255.255
permit tcp 10.0.0.0 0.255.255.255 16.0.0.0 15.255.255.255
permit tcp 10.0.0.0 0.255.255.255 32.0.0.0 31.255.255.255
permit tcp 10.0.0.0 0.255.255.255 64.0.0.0 63.255.255.255
permit tcp 10.0.0.0 0.255.255.255 128.0.0.0 127.255.255.255

 

Если вкратце разобрать матчинг - то он таков: 0-7, 8-9, 11, 12-15, 16-31, 32-63, 64-127, 128-255. Т.е. покрываются все диапазоны 1 октета, кроме собственно 10.

 

Хороший вариант. Тест на стенде прошел.

Вкратце как проходил тест: на тестируемом образце заворачиваем трафик тестового хоста через PBR на второй роутер, у которого с портов считаем счетчики пакетов. Так сложно, по причине того что лентяи из Dlink'а не поставили счетчиков ни на acl'ы ни на route-map'ы.

 

Считываем пакеты, с порта nexthop'а:

$ while true; do VALUE=`snmpget -v 2c -c private 10.X.Y.Z .1.3.6.1.2.1.2.2.1.11.18 | awk '{print $4}'`; NUM=$[$VALUE-$LASTVALUE]; LASTVALUE=$VALUE; if [ $NUM -eq 0 ]; then echo -n "."; else echo -n $NUM; fi; sleep 0.2; done
60...............................1112..11111..1112..11111..11111..2111..11111..1211..11111........11111..1121..11111..1112..11111..11111.11111..11111.11111..11111..2111..11111..2111..11112.
.1211..11111..1211..11111..1121..11111..1121..11111..1112..11111..1112..11111..1112..11111..11111.11111..11111.11111..11111..2111..11111..2111..11111..1211..11111..1211..11111..1121..11111.
.11111.11111..1112..11111..11111.11111..1112..11.1..11111..1112..11111..1112..11111..1..11111.11111..11111..2111..11111..1211..11.11111..1112...2111..11111..1211..11111..1211..11111..1211.
.11111..1121..11111..1112..11111..1121..111111.1112..11111..11111..2111..11111..1211..11111..1121..11111..1112..11111..1112..11111..1112..11111..1112...2111..11111..2111..11111..1211..11111.
.1121..1121..11111..11111..2111..11111..1211..11111..1121..11111..1121..11111..1112.........11111.11111..11111..2111..11111..2111..11111..2111..111111.1121..11111..1112..11111..1112..11111.
.11111..2111..11111..2111..11111..1211..11111..1121..11111..1112..11111..1112..111111.1112...2111..1121..11111..1121..11111..1121..11111..1121..11111..1..11111.11111..1121..11111..1112..11111.
.1112..11111..11111..2111..11111..1211..11111..1121..11111..1121..11111..1211..11111..1121..11111..1121..11111..1112..11111..1112...2111..11111..2111..11111.11111..11111..1211..11111..1211.
.11111..1121..11121..1112..11111..1112..11111..11111..2111..11111.11111..11111..2111..11111..2111..11111..12111.11111..1121..11111..1121..11111.....................................1121..11111.
.1112..11111..1211..11111..1112..11111..11111.11111..1121..11111..11111..2111..11111..2111.......................^C

Собственно пингуем сети:

$ for i in `seq 1 255`; do echo -n " $i"; ping -i 0.2 -w 1 $i.1.1.1 2>&1 >/dev/null; sleep 0.5; done
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218
219 220 221 222 223
224ping: broadcast ping with too short interval.
225ping: broadcast ping with too short interval.
226ping: broadcast ping with too short interval.
227ping: broadcast ping with too short interval.
228ping: broadcast ping with too short interval.
229ping: broadcast ping with too short interval.
230ping: broadcast ping with too short interval.
231ping: broadcast ping with too short interval.
232ping: broadcast ping with too short interval.
233ping: broadcast ping with too short interval.
234ping: broadcast ping with too short interval.
235ping: broadcast ping with too short interval.
236ping: broadcast ping with too short interval.
237ping: broadcast ping with too short interval.
238ping: broadcast ping with too short interval.
239ping: broadcast ping with too short interval.
240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255

 

Не прошли тест пакеты в сети 127.*, 224-239.* - но с ними и так все ясно.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.