kirush Posted February 2, 2012 Posted February 2, 2012 (edited) Добрый день! 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 тоже не получается Edited February 2, 2012 by kirush Вставить ник Quote
vlad11 Posted February 2, 2012 Posted February 2, 2012 (edited) вместо 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 Edited February 2, 2012 by vlad11 Вставить ник Quote
Ilya Evseev Posted February 3, 2012 Posted February 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", иначе получается бессмыслица. Вставить ник Quote
kirush Posted February 5, 2012 Author Posted February 5, 2012 (edited) Немного изменил схему: Все также в таблице 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 трафик на клиента не идет. Edited February 5, 2012 by kirush Вставить ник Quote
Dyr Posted February 6, 2012 Posted February 6, 2012 Естественно не пойдёт, блин - вам же уже написали, замените 550 правило на "allow ip from any to me in recv igb0". "me", естественно, в случае если NAT-адреса на интерфейсе альясами, а не в blackhole смаршрутизированы. Вставить ник Quote
kirush Posted February 6, 2012 Author Posted February 6, 2012 (edited) Прошу прощения проморгал. Исправил, но толку мало 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 адреса навешаны алиасами. Edited February 6, 2012 by kirush Вставить ник Quote
Deac Posted February 6, 2012 Posted February 6, 2012 (edited) Хмм... А 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 Edited February 6, 2012 by Deac Вставить ник Quote
kirush Posted February 7, 2012 Author Posted February 7, 2012 пробовал и с включеным и выключенным. По поводу совета Ваших правил немного не понял, так как у меня трнаслируется table(15) в пул реальных IP адресов table(10). Логически у меня все написано верно. Вставить ник Quote
Deac Posted February 7, 2012 Posted February 7, 2012 пробовал и с включеным и выключенным. Использование NAT требует обязательного отключение one_pass. По поводу совета Ваших правил немного не понял, так как у меня трнаслируется table(15) в пул реальных IP адресов table(10). Логически у меня все написано верно. При трансляции изнутри - наружу указание tablearg имеет смысл, при обратной трансляции это бессмысленно, если конечно это не попытка binat. Мало NAT-ить, надо ещё и разрешить прохождение. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.