Биллинговая система Nodeny

Главная категория => Курилка => Тема начата: kuhar от 12 Апреля 2012, 15:11:19



Название: Выделить определенному клиенту статический IP
Отправлено: kuhar от 12 Апреля 2012, 15:11:19
Всем, привет.

Пожалуйста, помогите настроить так, чтобы определенном клиенту выделялся один реальный ip, который бы не был привязан к моему серверу.
Сетевой интерфейс подключается по статике, ему принадлежит один статический ip, мне также пров предоставил еще один статический ip в этой подсети.
Можете пояснить логику предоставления ip клиенту?
Нужно ли его на сетевом интерфейсе в серваке алиасом добалять или нет?
В pf.conf нужно ли какие-то настройки вносить?

PS Пробовал добавить алиасом его и через binat отдать на нужного клиента, ip отдался все ок, но если в браузере внести ip то отобразится приветственное окно апатча моего сервера, чего не должно быть. 


Название: Re: Выделить определенному клиенту статический IP
Отправлено: goletsa от 12 Апреля 2012, 16:35:08
Вешайте апач не на 0.0.0.0:80 а только на нужные интерфейсы. Тоже и к другим сервисам относится.


Название: Re: Выделить определенному клиенту статический IP
Отправлено: Rico-X от 12 Апреля 2012, 16:40:31
Можно вот так:
В rc.conf

#SUPERVLAN
ifconfig_vlan6="inet XX.YYY.53.1 netmask 255.255.255.128 vlan 6 vlandev em1"
ifconfig_vlan7="inet XX.YYY.53.1 netmask 255.255.255.128 vlan 7 vlandev em1"
........
ifconfig_em1="up"

В роуты

/sbin/route add XX.YYY.53.2 -iface vlan6
/sbin/route add XX.YYY.53.3 -iface vlan7
.......


Название: Re: Выделить определенному клиенту статический IP
Отправлено: poxy. от 12 Апреля 2012, 17:33:25
У меня все сервисы (апач и т.д) висят каждый на своем адресе, на 0.0.0.0 ничего нет. Также проблема с выдачей белого ип (при заходе на белый адрес кидает на страницу заглушку).
Правило фаервола для заглушки
Код:
${f} add 60 fwd 127.0.0.1,82 tcp from not "table(0)" to not me dst-port 80 in
. Заранее благодарен за помощь.


Название: Re: Выделить определенному клиенту статический IP
Отправлено: poxy. от 12 Апреля 2012, 17:34:42
Нат на отдельной машине, страница заглушка находится на сервере биллинга.


Название: Re: Выделить определенному клиенту статический IP
Отправлено: Rico-X от 12 Апреля 2012, 19:36:29
Правило фаервола для заглушки ${f} add 60 fwd 127.0.0.1,82 tcp from not "table(0)" to not me dst-port 80
Код:
${f} add 60 fwd 127.0.0.1,82 tcp from not "table(0)" to not сетка ваших белых адресов dst-port 80


Название: Re: Выделить определенному клиенту статический IP
Отправлено: poxy. от 13 Апреля 2012, 07:35:01
Правило фаервола для заглушки ${f} add 60 fwd 127.0.0.1,82 tcp from not "table(0)" to not me dst-port 80
Код:
${f} add 60 fwd 127.0.0.1,82 tcp from not "table(0)" to not сетка ваших белых адресов dst-port 80
Попробовал утром, не работает ваше правило  :(


Название: Re: Выделить определенному клиенту статический IP
Отправлено: Rico-X от 13 Апреля 2012, 08:50:53
покажите весь фаирвол


Название: Re: Выделить определенному клиенту статический IP
Отправлено: stix от 13 Апреля 2012, 09:13:14
может открою страшную тайну.
для бината вешать алиасом не нужно на сетевой интерфейс сетевого адаптера.

уберите алиас и решите все проблемы


Название: Re: Выделить определенному клиенту статический IP
Отправлено: poxy. от 13 Апреля 2012, 15:07:22
покажите весь фаирвол
Код:
#!/bin/sh -
f='/sbin/ipfw'

ifOut='vlan77'

# Сети/адреса, в/из которых ВЕСЬ трафик запрещаем
${f} table 120 flush
${f} table 120 add 224.0.0.0/4
${f} table 120 add 10.10.1.0/24
${f} table 120 add 172.16.0.0/12
${f} table 120 add 192.168.0.0/16

# Сети/адреса, в/из которых ВЕСЬ трафик разрешаем
${f} table 36 flush
${f} table 36 add x.x.x.x/32
${f} table 36 add x.x.x.y/32

${f} table 36 add 62.149.25.124/32 #ukrpays.com
${f} table 36 add 184.73.55.73/32 #liqpay.com
${f} table 36 add 195.85.198.17/32 #secure.upc.ua
${f} table 36 add 217.117.65.235/32 # указано в мане в api ukrpays как разрешенное
${f} table 36 add 82.198.171.43/32 #c43-171-198-82.pool.globus-telecom.com
${f} table 36 add 212.118.48.43/32 #Merchant WebMoney Transfer
${f} table 36 add 87.118.97.138/32 #ns2.km22224-04.keymachine.de


${f} -f flush

#flow-tools
#${f} add 49 allow udp from 10.10.10.251 to me 8888

#sshd
${f} add 50 allow tcp from 10.10.7.0/25 to me 22
${f} add 51 allow tcp from me 22 to 10.10.7.0/25

#dns lookup
${f} add 52 allow udp from any to me 53
${f} add 53 allow udp from me 53 to any

#radius
#${f] add 54 allow udp from any to me 1812
#${f} add 55 allow udp from me 1812 to any
#${f} add 56 allow udp from any to me 1813
#${f} add 57 allow udp from me 1813 to any

${f} add 58 allow ip from any to "table(36)"
${f} add 59 allow ip from "table(36)" to any

#fwd block clients
${f} add 60 fwd 127.0.0.1,82 tcp from not "table(0)" to not me dst-port 80 in


${f} add 61 allow ip from 10.10.0.0/16 to 10.10.0.0/16

${f} add 62 allow ip from 10.5.0.0/16 to 10.5.0.0/16

${f} add 63 allow ip from 10.10.0.0/16 to 10.5.0.0/16

${f} add 64 allow ip from 10.5.0.0/16 to 10.10.0.0/16

${f} add 80 allow ip from 10.10.0.0/16 to 10.10.1.0/24
${f} add 81 allow ip from 10.10.1.0/24 to 10.10.0.0/16

${f} add 82 deny ip from 10.5.0.0/16 to 10.10.1.0/24
${f} add 83 deny ip from 10.10.1.0/24 to 10.5.0.0/16

#mysql
${f} add 88 allow tcp from 10.10.15.0/24 to me 3306
${f} add 89 allow tcp from me 3306 to 10.10.15.0/24

#snmp
${f} add 90 allow udp from 10.10.15.0/24 to me 161
${f} add 91 allow udp from me 161 to 10.10.15.0/24
${f} add 92 allow tcp from 10.10.15.0/24 to me 199
${f} add 93 allow tcp from me 199 to 10.10.15.0/24
${f} add 94 allow udp from x.x.x.x/23 to me 161
${f} add 95 allow udp from me 161 to x.x.x.x/23
${f} add 96 allow tcp from x.x.x.x/23 to me 199
${f} add 97 allow tcp from me 199 to x.x.x.x/23

${f} add 100 deny tcp from any to any 445

${f} add 110 allow ip from any to any via lo0
${f} add 120 skipto 1000 ip from me to any
${f} add 130 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
${f} add 140 deny ip from any to "table(120)"
${f} add 150 deny ip from "table(120)" to any
${f} add 160 skipto 2000 ip from any to me

${f} add 200 skipto 500 ip from any to any via ${ifOut}

${f} add 300 skipto 4500 ip from any to any in

${f} add 400 skipto 450 ip from any to any recv ${ifOut}
${f} add 420 tee 1 ip from any to any
${f} add 450 tee 2 ip from any to any
${f} add 490 allow ip from any to any

${f} add 500 skipto 32500 ip from any to any in
${f} add 510 tee 1 ip from any to any
${f} add 540 allow ip from any to any

${f} add 1000 allow udp from any 53,7723 to any
${f} add 1010 allow tcp from any to any setup keep-state
${f} add 1020 allow udp from any to any keep-state
${f} add 1100 allow ip from any to any

${f} add 2000 check-state
${f} add 2010 allow icmp from any to any
${f} add 2020 allow tcp from any to any 80,443
${f} add 2050 deny ip from any to any via ${ifOut}
${f} add 2060 allow udp from any to any 53,7723

${f} add 2100 deny ip from any to any

${f} add 32490 deny ip from any to any


Название: Re: Выделить определенному клиенту статический IP
Отправлено: poxy. от 13 Апреля 2012, 15:14:10
На данном сервере только шейпер, за ним стоит бордер (микротик) который держить бгп и выдает белые ип натом (src+dst).


Название: Re: Выделить определенному клиенту статический IP
Отправлено: Rico-X от 13 Апреля 2012, 17:45:04
Попробуйте так, как я понимаю все вашие белые выдаваемые адреса есть в таблице 0
Код:
${f} add 60 fwd 127.0.0.1,82 tcp from not "table(0)" to not "table(0)" dst-port 80 in
Правила с 61 по 83 режут по глазам, не проще сделать както так
Код:
${f} add 61 allow ip from "table(0)" to "table(0)"
Кучу правил разрешающих коннект с самого сервера можно заменить на
Код:
allow ip from me to any


Название: Re: Выделить определенному клиенту статический IP
Отправлено: poxy. от 13 Апреля 2012, 21:56:50
Попробуйте так, как я понимаю все вашие белые выдаваемые адреса есть в таблице 0
Код:
${f} add 60 fwd 127.0.0.1,82 tcp from not "table(0)" to not "table(0)" dst-port 80 in
Правила с 61 по 83 режут по глазам, не проще сделать както так
Код:
${f} add 61 allow ip from "table(0)" to "table(0)"
Кучу правил разрешающих коннект с самого сервера можно заменить на
Код:
allow ip from me to any
Нет, в таблице 0 - серые. Структура такая:
данный сервер (шейпер ipfw+база биллига, ип серые, ната нет) - бордер (нат, куос, бгп). Белые выдаются связкой src+dst nat на серый ип клиента. В таблице 0 только серые ип.


Название: Re: Выделить определенному клиенту статический IP
Отправлено: poxy. от 13 Апреля 2012, 22:02:23
Эта кучка правил, которую вы заменили этим :
Код:
${f} add 61 allow ip from "table(0)" to "table(0)"
разрешает определенным подсетям доступ к иптв серверу и между определенными вланами. Поэтому разрешать все нельзя (может не кошерно :), но все же). Когда строил правила, придерживался принципа - запретить все и потом разрешать, поэтому вам наверно показалось что проще заменить несколько на одно. В любом случае Спасибо за помощь, нынешнюю и дальнейшую (думаю обоюдную)  ;).


Название: Re: Выделить определенному клиенту статический IP
Отправлено: poxy. от 13 Апреля 2012, 22:23:00
Блин, ночь, пиво, туплю... Правила с 61 по 81 согласен заменить на
Код:
${f} add 61 allow ip from "table(0)" to "table(0)"
, получится что доступ между собой будут иметь только те кому доступ в инет разрешен. А 82,83 - это правила которые запрещают доступ клиентам из 10.5.0.0/16 доступ к серверам в подсети 10.10.1.0/24. Их так и оставить?
PS влан с оборудованием находится в сети 10.10.15.0/24 при таком
Код:
${f} add 61 allow ip from "table(0)" to "table(0)"
будет ли ходить из этого влана в остальные подсети? Т.е из таблицы 0 в нее же понятно, а серверам между собой не поблочит?
PPS сервер боевой, эксперименты недопустимы..., поэтому и куча вопросов.


Название: Re: Выделить определенному клиенту статический IP
Отправлено: poxy. от 17 Апреля 2012, 19:26:31
to Rico-X, ответьте плиз на вопросы.


Название: Re: Выделить определенному клиенту статический IP
Отправлено: Rico-X от 18 Апреля 2012, 10:18:24
Очень сумбурно, отвечу на то, что понял
Код:
${f} add 61 allow ip from "table(0)" to "table(0)"
->
Разрешить гонять трафик между теми, кому разрешен доступ в интернет, трафик не будет учитываться коллектором, так, что если нужен учет локального траффика в статистике правило Вам не подойдет.
Код:
${f} add 60 fwd 127.0.0.1,82 tcp from not "table(0)" to not "table(0)" dst-port 80 in
-> Правило завернет всех кроме тех кому разрешен доступ, кто попытается зайти на ваши адреса, кроме тех кому разрешен доступ, как я понимаю серые к которым привязаны белые при таком паскладе будут в таблице 0 и при попытке доступа к ним из вне форвард не сработает.
Цитировать
Белые выдаются связкой src+dst nat
А нахрена? Не проще смаршрутизировать на сателит белый пул и выдавать сразу белые? Если сателитов несколько между бордером и сателитами подымаем OSPF и радуемся, не пойму зачем этот набор костылей и подпорок.

Запрещающие правила в вашем случае для сетей 10.10.15.0/24 должны быть перед разрешающими, если такие есть, иначе они не отработают.

Дальше не осилил из какого вилана в какие подсети должно ходить? Если не будет - добавите разрешение и все :)


Название: Re: Выделить определенному клиенту статический IP
Отправлено: poxy. от 19 Апреля 2012, 15:29:41
Спасибо.


Название: Re: Выделить определенному клиенту статический IP
Отправлено: kuhar от 25 Апреля 2012, 14:21:58
Цитировать
Не проще смаршрутизировать на сателит белый пул и выдавать сразу белые? Если сателитов несколько между бордером и сателитами подымаем OSPF и радуемся, не пойму зачем этот набор костылей и подпорок.


А можете плизз по подробней расказать как это сделать, а то что-то никак не клеится у меня...
PS Если можно в личку.


Название: Re: Выделить определенному клиенту статический IP
Отправлено: stix от 25 Апреля 2012, 14:38:28
Цитировать
А нахрена? Не проще смаршрутизировать на сателит белый пул и выдавать сразу белые? Если сателитов несколько между бордером и сателитами подымаем OSPF и радуемся, не пойму зачем этот набор костылей и подпорок.
с честным Ip в один влан?


Название: Re: Выделить определенному клиенту статический IP
Отправлено: kuhar от 25 Апреля 2012, 15:19:39
Цитировать
А нахрена? Не проще смаршрутизировать на сателит белый пул и выдавать сразу белые? Если сателитов несколько между бордером и сателитами подымаем OSPF и радуемся, не пойму зачем этот набор костылей и подпорок.
с честным Ip в один влан?
ну например я не совсем понял, как сделать, чтобы отдать белый ip полностью клиенту.
Мой сервер работает на ip XXX.XXX.XXX.237 маска 255.255.255.0 и шлюз прова XXX.XXX.XXX.234 (статика от провайдера).
Мне пров дает один ip XXX.XXX.XXX.236, как мне его полностью отдать во владению своему клиенту?
Все работает на одной машинке.


Название: Re: Выделить определенному клиенту статический IP
Отправлено: stix от 25 Апреля 2012, 15:27:30
и чтобы через твой роутер?
тогда со стороны провайдера нужно делать static route


Название: Re: Выделить определенному клиенту статический IP
Отправлено: Rico-X от 25 Апреля 2012, 17:40:51
с честным Ip в один влан?
Цитировать
ну например я не совсем понял, как сделать, чтобы отдать белый ip полностью клиенту.
Мой сервер работает на ip XXX.XXX.XXX.237 маска 255.255.255.0 и шлюз прова XXX.XXX.XXX.234 (статика от провайдера).
Мне пров дает один ip XXX.XXX.XXX.236, как мне его полностью отдать во владению своему клиенту?
Все работает на одной машинке.
Вариант простой - по pppoe
Вариант чуть сложней - в отдельный вилан куда воткнут клиент, например
ifconfig_vlan123="inet XXX.XXX.XXX.237 netmask 255.255.255.0 vlan 123 vlandev em0"
тоесть делаем супервилан, на интерфейсе и вилане один и тот же ип.
Затем отдаем свободный ип в вилан
/sbin/route add XXX.XXX.XXX.236 -iface vlan123
У клиента получаем вилан и задаем настройки типа
Ip XXX.XXX.XXX.236
Маска 255.255.255.0 (желательно поменьше, должно работать даже с 255,255,255,255)
шлюз  XXX.XXX.XXX.237

Может и без виланов можно, надо структуру сети видеть и отдать ИП в нужный интерфейс


Название: Re: Выделить определенному клиенту статический IP
Отправлено: kuhar от 26 Апреля 2012, 10:17:07
с честным Ip в один влан?
Цитировать
ну например я не совсем понял, как сделать, чтобы отдать белый ip полностью клиенту.
Мой сервер работает на ip XXX.XXX.XXX.237 маска 255.255.255.0 и шлюз прова XXX.XXX.XXX.234 (статика от провайдера).
Мне пров дает один ip XXX.XXX.XXX.236, как мне его полностью отдать во владению своему клиенту?
Все работает на одной машинке.
Вариант простой - по pppoe
Вариант чуть сложней - в отдельный вилан куда воткнут клиент, например
ifconfig_vlan123="inet XXX.XXX.XXX.237 netmask 255.255.255.0 vlan 123 vlandev em0"
тоесть делаем супервилан, на интерфейсе и вилане один и тот же ип.
Затем отдаем свободный ип в вилан
/sbin/route add XXX.XXX.XXX.236 -iface vlan123
У клиента получаем вилан и задаем настройки типа
Ip XXX.XXX.XXX.236
Маска 255.255.255.0 (желательно поменьше, должно работать даже с 255,255,255,255)
шлюз  XXX.XXX.XXX.237

Может и без виланов можно, надо структуру сети видеть и отдать ИП в нужный интерфейс

На сколько я понял, это для того чтобы отдать клиенту по статике, а если клиент будет соединятся через pppoe, как это организовать? Чтобы биллинг также шейпил скорость. У меня интерфейсы на сервере re0 - входит провайдер, re1 - выходит шнур на клиентов.
У меня сейчас стандартные настройки биллинга по мануалам.


Название: Re: Выделить определенному клиенту статический IP
Отправлено: Rico-X от 26 Апреля 2012, 13:35:09
Для pppoe никаких телодвижений делать не надо, задаем в админке пользователю этот реальник, исключаем реальник из правил ната и радуемся.


Название: Re: Выделить определенному клиенту статический IP
Отправлено: kuhar от 30 Апреля 2012, 12:15:24
Для pppoe никаких телодвижений делать не надо, задаем в админке пользователю этот реальник, исключаем реальник из правил ната и радуемся.

А как его исключить из ната?
Супер влан не нужно делать?


Название: Re: Выделить определенному клиенту статический IP
Отправлено: Rico-X от 30 Апреля 2012, 15:39:36
Отписал в личку. В случае с pppoe супервилан не нужен.


Название: Re: Выделить определенному клиенту статический IP
Отправлено: kuhar от 07 Мая 2012, 13:57:58
В биллинге написал выделенный ip для нужного клиента, по пппое клиент соединяется но инета у него нет.
Тсдамп говорит:
Код:
09:56:41.258478 IP 236.190.224.159.triolan.net.64865 > 21.2.86.109.triolan.net.domain: 46253+ A? www.speedtest.net. (35)
09:56:41.382161 IP 236.190.224.159.triolan.net.3791 > 111.221.74.31.https: Flags [S], seq 4264544421, win 65535, options [mss 1440,nop,nop,sackOK], length 0
09:56:41.382281 IP 236.190.224.159.triolan.net.3792 > 213.199.179.157.https: Flags [S], seq 3760766955, win 65535, options [mss 1440,nop,nop,sackOK], length 0
09:56:41.382467 IP 236.190.224.159.triolan.net.3793 > 149.5.45.206.https: Flags [S], seq 403384598, win 65535, options [mss 1440,nop,nop,sackOK], length 0
09:56:41.631607 IP 236.190.224.159.triolan.net.59464 > 2.2.86.109.triolan.net.domain: 40188+ A? www.facebook.com. (34)
09:56:41.631673 IP 236.190.224.159.triolan.net.59464 > 21.2.86.109.triolan.net.domain: 40188+ A? www.facebook.com. (34)
09:56:41.696092 ARP, Request who-has 236.190.224.159.triolan.net tell 254.190.224.159.triolan.net, length 46
09:56:41.720463 IP 236.190.224.159.triolan.net.54719 > 2.2.86.109.triolan.net.domain: 5692+ A? vk.com. (24)

Самое интересное, что как-то перезагрузил сервер, и на этапе его включения клиент соединился и у него был инет с белым ip, но при повторном переподключении инета у него не стало.