> Народ. Помогите. Есть такое средство в FreeBSD, чтобы можно
>было натить на несколько реальных ip? Просто у меня очень ольшая
>куча клиентов и нужно их натить на 3 ip.
>
> примерно как на кошке.
ipfw позволяет задавать `неправильные' маски, т.е. можно разделитять адреса на группы по последним битам адреса, что-то типа:
ipfw skipto 1000 ip from 10.0.0.0:255.255.0.3 to any
ipfw skipto 2000 ip from 10.0.0.1:255.255.0.3 to any
ipfw skipto 3000 ip from 10.0.0.2:255.255.0.3 to any
ipfw skipto 4000 ip from 10.0.0.3:255.255.0.3 to any
Разумеется, число групп получится степенью двойки, поэтому на 3 интерфейса можно сделать, например, 16 групп (последние 4 бита, маска 255.255.0.15) и разделить их как 5:5:6.
А вот что еще придумалось (это теория, причем решение ужасное, но есть над чем подумать). Для исходящих пакетов можно сделать:
skipto 1000 tcp from any to any established
skipto 1000 prob 0.333 tcp any to any setup
skipto 2000 prob 0.5 tcp any to any setup
skipto 3000 tcp any to any setup
1000: divert nat1, fwd ip1 to any для первого внешнего IP
2000: divert nat2, fwd ip2 to any для второго внешнего IP
3000: divert nat3, fwd ip3 to any для третьего внешнего IP
Т.е. для первого исходящего SYN каждый skipto сработает с вероятностью 1/3, и в соотв. группе правил пакет будет оттранслирован и отправлен через нужный интерфейс. Входящие пакеты прийдут на тот же интерфейс, тут все правильно. Последующие исходящие пакеты будут по очереди тыкаться в каждый nat, и оттранслированы будут только тем, который запомнил это TCP соединение (первый SYN пакет), после чего сразу отправлены через соотв. интерфейс. Всякие UDP и ICMP хрен знает как будут работать.
Чрезвычайно неэффективная и извращенная схема :)