Народ. Помогите. Есть такое средство в FreeBSD, чтобы можно было натить на несколько реальных ip? Просто у меня очень ольшая куча клиентов и нужно их натить на 3 ip.примерно как на кошке.
ip nat pool INET_POOL 194.220.196.172 194.220.196.174 prefix-length 24
ip nat inside source list MOBILE_LIST pool INET_POOL overloadЕсть ли такие средства на FreeBSD. ДОбился пока только map xl0 10.0.0.0/16 -> 194.220.196.172/32. Делаю 194.220.196.172/31 - не работает :(
Подели их на три группы. И нать каждую группу отдельно...
Сам бы с радостью. ТОлько вот разделить по три группы /16 будет затруднительно.
>Сам бы с радостью. ТОлько вот разделить по три группы /16 будет
>затруднительно.Тогда расскажи _зачем_ ?
Может быть тогда будет проще ответить на твой вопрос.
Ну для начала, ip-шники выдаются динамически, т.е. я не знаю какой именно из этой подсети достанется клиенты (ppp). Да и техничекси разделить подсеть /16 как?
> Ну для начала, ip-шники выдаются динамически, т.е. я не знаю
>какой именно из этой подсети достанется клиенты (ppp). Да и техничекси
>разделить подсеть /16 как?Если задача по любому использовать 3 (N ip адресов) то
divert natd1 ip from 192.168.1.1 to any out xmit fxp0
divert natd1 ip from 192.168.1.2 to any out xmit fxp0
.
.
divert natd2 ip from 192.168.1.8 to any out xmit fxp0
divert natd2 ip from 192.168.1.9 to any out xmit fxp0
.
.
divert natd3 ip from 192.168.1.16 to any out xmit fxp0и
/sbin/natd -p natd1 -a ip1
/sbin/natd -p natd2 -a ip2
/sbin/natd -p natd3 -a ip3Но опять-же, в чём приемущество перед использованием 1-го ip ?
Прсто маска подсети /16 65 с лишним адресов, клиентов куча. Выдается динамически, т.е. может быть 10.0.0.1 а может и 10.0.234.12 какой нить. с одного ip если во внешку босб загнется кол-во портов...
> Народ. Помогите. Есть такое средство в 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 setup1000: 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 хрен знает как будут работать.
Чрезвычайно неэффективная и извращенная схема :)