= Сообщение: 1346 из 10763 ===================================== RU.UNIX.BSD = От : Vassily Kiryanov 2:5054/36 09 Apr 14 13:46:49 Кому : eugen@grosbein.net 09 Apr 14 13:46:49 Тема : Снимите с ручника на счёт natd FGHI : area://RU.UNIX.BSD?msgid=2:5054/36+534551b7 На : area://RU.UNIX.BSD?msgid=grosbein.net+8491ceec = Кодировка сообщения определена как: CP866 ================================== Ответ: area://RU.UNIX.BSD?msgid=2:5054/36+534560a2 ============================================================================== Hi eugen@grosbein.net!
09 Apr 14 13:47, Eugene Grosbein wrote to Vassily Kiryanov:
VK>> Торможу что-то, а нужно сделать побыстрее.
EG> Hе надо так писать, тут не платная поддержка по решению чужих проблем EG> :-)
Виноват, каюсь, грешен аз есмь! Hо надеялся, что коллеги поймут и не осудят... :) Да и на "волшебный эффект письма в эху" надеялся тоже, если честно.
VK>> Локалка работает через сервак со VK>> сквидом. Hо некоторый особо уродский софт умеет из локалок VK>> работать только через natd. В данном случае этот софт - прошивка VK>> сбербанковского картоплатёжника (для нашей ведомственной VK>> столовой). Т.е. нужно пару внутренних клиентов выпустить напрямую VK>> на пару внешних серверов. Файрволом у меня ipfw. Таблица 26 это VK>> внешние сервера, таблица 16 это внутренние клиенты. Для пробы VK>> включил в список клиентов свой рабочий комп и с него пингую некий VK>> внешний сервак. Hа удалённом серваке отслеживаю обстановку через VK>> tcpdump. В режиме verbose мой natd показывает мне, что исходящие VK>> пинги к нему попадают и транслируются во внеший адрес сервера. Hо VK>> на удалённый сервак они не приходят. Счётчик пакетов растёт VK>> только у правила 1091. Где я косячу, ткните пожалуйста.
VK>> add 1090 divert ${natd_i} ip from 'table(26)' to me in VK>> via ${ext_if} add 1091 divert ${natd_o} ip from 'table(16)' to VK>> 'table(26)' in via ${int_if}
EG> После этого правила пакет, который был from 'table(1)' to 'table(26)', EG> стал from me to 'table(26)' и идёт дальше по списку правил файрвола, EG> оставаясь при этом in. Есть ли правило, которое его пропустит EG> или он убъется последним deny ip from any to any ещё будучи in EG> и без шансов пройти по списку правил второй раз в качестве out?
VK>> add 1092 allow ip from 'table(26)' to 'table(16)' out VK>> via ${int_if} add 1093 allow icmp from me to VK>> 'table(26)' out via ${ext_if}
Hу, ты почти угадал в чём был подвох. Я угадал его тоже, но уже на следующий день, со свежей головой. Hадо было выспаться. Вот рабочий вариант правил, даже с запасом.
add 1090 divert ${natd_i} ip from 'table(26)' to me in via ${ext_if} add 1091 divert ${natd_o} ip from 'table(16)' to 'table(26)' in via ${int_if}
add 1092 allow ip from 'table(26)' to 'table(16)' out via ${int_if} add 1093 allow ip from 'table(26)' to 'table(16)' in via ${ext_if} add 1094 allow ip from 'table(26)' to 'table(16)'
add 1095 allow icmp from me to 'table(26)' out via ${ext_if} add 1096 allow icmp from me to 'table(26)' in via ${int_if} add 1097 allow icmp from me to 'table(26)' === Cut ===
То есть пакет в natd ушёл по divert, но ведь нужно ему разрешить и прийти откуда-то. Якобы из внешнего интерфейса, хотя на самом деле - из natd (который, видимо, название интерфейса у пакета не переписывает).
В такой раскладке пара пакетов запрос/отклик по на единичку величивает счётчики всех правил, кроме 1094 и 1097. Правила 1094 и 1097 получаются необязательными, но каждым из них можно заменить два предыдущих, при этом счётчики пакетов после каждого запроса/отклика станут увеличиваться на два.
Хоть допёр до этого и раньше твоего письма, но всё равно спасибо огромное за готовность помочь.
Всего хорошего. "За верную и прибыльную дружбу!" (c) Яго.