kirush Опубликовано 2 февраля, 2012 (изменено) · Жалоба Добрый день! table 100 - храним IP адреса, которым можно ходить в интернет. Как правильно добавить правило: allow ip from table(100) to any allow ip from any to table(100) чтобы ipfw проверил таблицу 100 и если его IP присутсвует в таблице то делал skipto НАТ правилом 500. Если IPа нет в таблице 100 то посылал бы нафиг. ipfw add 500 nat tablearg ip from table(15) to any out xmit igb0 ipfw add 550 nat tablearg ip from any to table(10) in recv igb0 Пробовал нечто вида: ipfw add 50 skipto 51 ip from table(100) to any ipfw add 51 skipto 500 ip from any to table(100) не получается ;( если поставить правила перед NAT и sysctl -w net.inet.ip.fw.one_pass=0 тоже не получается Изменено 2 февраля, 2012 пользователем kirush Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vlad11 Опубликовано 2 февраля, 2012 (изменено) · Жалоба вместо ipfw add 500 nat tablearg ip from table(15) to any out xmit igb0 ipfw add 550 nat tablearg ip from any to table(10) in recv igb0 сделайте: ipfw add 500 nat ip from table(100) to any out xmit igb0 ipfw add 550 nat ip from any to me in recv igb0 Изменено 2 февраля, 2012 пользователем vlad11 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 3 февраля, 2012 · Жалоба Пробовал нечто вида: ipfw add 50 skipto 51 ip from table(100) to any ipfw add 51 skipto 500 ip from any to table(100) не получается ;( "skipto 51" замените на "skipto 500", иначе получается бессмыслица. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kirush Опубликовано 5 февраля, 2012 (изменено) · Жалоба Немного изменил схему: Все также в таблице 100 - клиенты которым можно ходить в интернет: ${fwcmd} table 10 add реальный_ip/32 1 ${fwcmd} table 10 add реальный_ip/32 2 ${fwcmd} table 10 add реальный_ip/32 3 ${fwcmd} table 10 add реальный_ip/32 4 ${fwcmd} table 10 add реальный_ip/32 5 ${fwcmd} table 10 add реальный_ip/32 6 ${fwcmd} table 15 add 172.16.0.0/22 1 ${fwcmd} table 15 add 172.16.4.0/22 2 ${fwcmd} table 15 add 172.16.8.0/22 3 ${fwcmd} table 15 add 172.16.12.0/22 4 ${fwcmd} table 15 add 172.16.16.0/22 5 ${fwcmd} table 15 add 172.16.20.0/22 6 ${fwcmd} nat 1 config ip реальный_ip/32 same_ports ${fwcmd} nat 2 config ip реальный_ip/32 same_ports ${fwcmd} nat 3 config ip реальный_ip/32 same_ports ${fwcmd} nat 4 config ip реальный_ip/32 same_ports ${fwcmd} nat 5 config ip реальный_ip/32 same_ports ${fwcmd} nat 6 config ip реальный_ip/32 same_ports Далее: ${fwcmd} add 300 skipto 500 ip from table\(100\) to any out xmit igb0 ${fwcmd} add 500 nat tablearg ip from table\(15\) to any out xmit igb0 ${fwcmd} add 500 nat tablearg ip from any to tab\le\(10\) in recv igb0 ${fwcmd} add 550 allow ip from any to table\(100\) in recv igb0 Счетчики выглядят так: 00300 417 22278 skipto 500 ip from table(100) to any out xmit igb0 00500 2328 142508 nat tablearg ip from table(100) to any out xmit igb0 00500 71 8208 nat tablearg ip from any to table(10) in recv igb0 00550 0 0 allow ip from any to table(100) in recv igb0 трафик на клиента не идет. Изменено 5 февраля, 2012 пользователем kirush Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dyr Опубликовано 6 февраля, 2012 · Жалоба Естественно не пойдёт, блин - вам же уже написали, замените 550 правило на "allow ip from any to me in recv igb0". "me", естественно, в случае если NAT-адреса на интерфейсе альясами, а не в blackhole смаршрутизированы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kirush Опубликовано 6 февраля, 2012 (изменено) · Жалоба Прошу прощения проморгал. Исправил, но толку мало 00300 119 8318 skipto 500 ip from table(100) to any out xmit igb0 00500 153 13593 nat tablearg ip from table(15) to any out xmit igb0 00500 236 21439 nat tablearg ip from any to table(10) in recv igb0 00550 0 0 allow ip from any to me in recv igb0 NAT адреса навешаны алиасами. Изменено 6 февраля, 2012 пользователем kirush Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Deac Опубликовано 6 февраля, 2012 (изменено) · Жалоба Хмм... А one_pass случайно не включен? ${fwcmd} add 500 nat tablearg ip from any to tab\le\(10\) in recv igb0 Должно быть так: ${fwcmd} add 510 nat ip from any to me in via igb0 ${fwcmd} add 520 allow all from table\(10\) or table\(15\) to any out via igb0 Изменено 6 февраля, 2012 пользователем Deac Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kirush Опубликовано 7 февраля, 2012 · Жалоба пробовал и с включеным и выключенным. По поводу совета Ваших правил немного не понял, так как у меня трнаслируется table(15) в пул реальных IP адресов table(10). Логически у меня все написано верно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Deac Опубликовано 7 февраля, 2012 · Жалоба пробовал и с включеным и выключенным. Использование NAT требует обязательного отключение one_pass. По поводу совета Ваших правил немного не понял, так как у меня трнаслируется table(15) в пул реальных IP адресов table(10). Логически у меня все написано верно. При трансляции изнутри - наружу указание tablearg имеет смысл, при обратной трансляции это бессмысленно, если конечно это не попытка binat. Мало NAT-ить, надо ещё и разрешить прохождение. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...