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

Главная категория => Nodeny 49 => Тема начата: tramX от 28 Июля 2009, 23:40:12



Название: Два шлюза в Internet
Отправлено: tramX от 28 Июля 2009, 23:40:12
Скажите например я настроил на freebsd шлюз в интернет, прописал тарифы добавил пользователей. Через время взял второй канал интернет. Можно настроить второй шлюз на freebsd или mikrotik чтобы использовалась общая база? Возможно на одном сервере с freebsd и nodeny раздавать два канала и выдавать белые ip адреса?


Название: Re: Два шлюза в Internet
Отправлено: Efendy от 29 Июля 2009, 00:11:29
все это можно


Название: Re: Два шлюза в Internet
Отправлено: tramX от 29 Июля 2009, 13:21:49
Есть описание как с помощью nodeny поделить два канал? Нать лучше pfnat ?


Название: Re: Два шлюза в Internet
Отправлено: Unix от 29 Июля 2009, 13:36:48
/etc/pf.conf
# Внешний интерфейс и шлюз для канала A (WAN_1).#
ext_if_a        = "em0"
ext_gw_a        = "x.x.x.x"
# Внешний интерфейс и шлюз для канала B (WAN_2).#
ext_if_b        = "em2"
ext_gw_b        = "x.x.x.x"
# Внешний интерфейс и шлюз для канала C (WAN_3).#
ext_if_c        = "fxp0"
ext_gw_c        = "x.x.x.x"
# Внутренний интерфейс (LAN).#
int_if          = "em1"
# Обслуживаемые TCP и UDP сервисы.
tcp_svc         = "22 25 21 35000:35100"
# TCP сервисы, обслуживаемые сервером из внутренней сети, и адрес сервера.
# 3389
tcp_svc_lan_terminal    = "3389"
tcp_rdr_lan_terminal    = "192.168.1.3"
# Не фильтровать трафик на lo интерфейсах.#
set skip on lo0
# Нормализовать весь входящий трафик.#
scrub in
# Включить трансляцию адресов на внешних интерфейсах.#
nat on $ext_if_a inet from !(self) -> $ext_if_a:0
nat on $ext_if_b inet from !(self) -> $ext_if_b:0
nat on $ext_if_c inet from !(self) -> $ext_if_c:0
# Переадресовать TCP сессии для сервисов, обслуживаемых локальным сервером.
# Правила rdr здесь НЕ должны содержать слова pass.
rdr on $ext_if_a inet proto tcp to $ext_if_a:0 port { $tcp_svc_lan_terminal\
 } tag EXT_IF_A -> $tcp_rdr_lan_terminal
rdr on $ext_if_b inet proto tcp to $ext_if_b:0 port { $tcp_svc_lan_terminal\
 } tag EXT_IF_B -> $tcp_rdr_lan_terminal
rdr on $ext_if_c inet proto tcp to $ext_if_c:0 port { $tcp_svc_lan_terminal\
 } tag EXT_IF_C -> $tcp_rdr_lan_terminal
# Разрешить подключение к переадресованным сервисам из локальной сети по
# внешним адресам.
rdr pass on $int_if inet proto tcp to { $ext_if_a:0 $ext_if_b:0 $ext_if_c:0\
 } port { $tcp_svc_lan_terminal } tag INT_IF_RDR -> $tcp_rdr_lan_terminal
nat on $int_if tagged INT_IF_RDR -> $int_if:0
# По умолчанию блокировать весь трафик на всех интерфейсах. Для входящих TCP
# соединений возвращать RST.
block on { $ext_if_a $ext_if_b $ext_if_c $int_if}
block return on { $ext_if_a $ext_if_b $ext_if_c $int_if} inet proto tcp
#Разрешить доступ через лок интерфейс к терминал серверу
pass out quick on $int_if inet proto tcp from any to $tcp_rdr_lan_terminal\
 port $tcp_svc_lan_terminal keep state
# Пропускаем входящие пакеты для переадресованых сервисов. Устанавливаем
# для них симметричную маршрутизацию (если пакет пришел
# из канала A, ответ пойдет через канал A независимо от default route). 
pass in quick reply-to ($ext_if_a $ext_gw_a) tagged EXT_IF_A keep state
pass in quick reply-to ($ext_if_b $ext_gw_b) tagged EXT_IF_B keep state
pass in quick reply-to ($ext_if_c $ext_gw_c) tagged EXT_IF_C keep state
# Выпускать исходящие пакеты. Установить маршрутизацию в зависимости от
# адреса источника. Пакеты с адресом интерфейса A уходят в канал A,
# с адресом интерфейса B - в канал B.
pass out route-to ( $ext_if_a $ext_gw_a ) inet from $ext_if_a:0 keep state
pass out route-to ( $ext_if_b $ext_gw_b ) inet from $ext_if_b:0 keep state
pass out route-to ( $ext_if_c $ext_gw_c ) inet from $ext_if_c:0 keep state
# Разрешить входящие ICMP PING пакеты.#
pass in on $ext_if_a reply-to ($ext_if_a $ext_gw_a) inet proto icmp\
 to $ext_if_a:0 icmp-type echoreq code 0 keep state
pass in on $ext_if_b reply-to ($ext_if_b $ext_gw_b) inet proto icmp\
 to $ext_if_b:0 icmp-type echoreq code 0 keep state
pass in on $ext_if_c reply-to ($ext_if_c $ext_gw_c) inet proto icmp\
 to $ext_if_c:0 icmp-type echoreq code 0 keep state

# Разрешить входящие TCP сессии для обслуживаемых сервисов.#
pass in on $ext_if_a reply-to ($ext_if_a $ext_gw_a) inet proto tcp\
 to $ext_if_a:0 port { $tcp_svc } flags S/SA keep state
pass in on $ext_if_b reply-to ($ext_if_b $ext_gw_b) inet proto tcp\
 to $ext_if_b:0 port { $tcp_svc } flags S/SA keep state
pass in on $ext_if_c reply-to ($ext_if_c $ext_gw_c) inet proto tcp\
 to $ext_if_c:0 port { $tcp_svc} flags S/SA keep state
#Разрешим туннели на интерфейсе WAN_2 и WAN3
pass in on $ext_if_b reply-to ($ext_if_b $ext_gw_b) inet proto tcp\
 from x.x.x.x to $ext_if_b:0 port 5000 flags S/SA keep state
pass in on $ext_if_c reply-to ($ext_if_c $ext_gw_c) inet proto tcp\
 from x.x.x.x to $ext_if_c:0 port 5000 flags S/SA keep state
pass quick on tun0 all
pass quick on tun1 all
#Разрешить в локалку пакеты от внутреннего интерфейса, из локальных сетей
# туннелей
pass out on $int_if inet from { $int_if:0, 192.168.3.0/24,\
 192.168.4.0/24 } to $int_if:network:0 keep state
#Разрешить из локалки пакеты на внутренний интерфейс, в локальные сети
# туннелей
pass in on $int_if inet from $int_if:network:0 to { $int_if:0,\
 192.168.3.0/24, 192.168.4.0/24 } keep state
#Разрешить из локалки пинг
pass in on $int_if inet proto icmp from $int_if:network:0 to any\
 icmp-type echoreq code 0 keep state
#Разрешить из локалки 110, 3389, 53
pass in on $int_if inet proto tcp from $int_if:network:0 to any port\
 { 110, 3389 } flags S/SA keep state
pass in on $int_if inet proto udp from $int_if:network:0 to any port\
 53 keep state


Название: Re: Два шлюза в Internet
Отправлено: tramX от 06 Августа 2009, 01:07:55
Пытаюсь установить NODENY на одну машину а сервер mysql находится на другой. Вот такая ошибка после того как ввожу пароль root
BI connect('database=mysql;host=192.168.5.1;mysql_connect_timeout=3;','root',...) failed: Can't connect to MySQL server on '192.168.5.1' (4) at install.pl line 200


Название: Re: Два шлюза в Internet
Отправлено: Efendy от 06 Августа 2009, 01:46:07
ну а если с консоли:
mysql -p -u root -h 192.168.5.1


Название: Re: Два шлюза в Internet
Отправлено: tramX от 06 Августа 2009, 14:56:50
Если так то подключается.


Название: Re: Два шлюза в Internet
Отправлено: tramX от 06 Августа 2009, 22:51:26
Сервер MYSQL был за wi-fi линком. Перенес его на кабель NODENY установил. Почему в админке показывает авторизированных пользователе?  На сервере NODENY 192.168.5.1 показывает 5 авторизированных а на вновь установленном 3 хотя к нему никто не подключен.


Название: Re: Два шлюза в Internet
Отправлено: Efendy от 07 Августа 2009, 10:02:53
Убирает авторизацию ядро. Если оно не запущено либо не может соединиться с БД - будет такой результат


Название: Re: Два шлюза в Internet
Отправлено: tramX от 11 Августа 2009, 20:27:22
Два канала в инет. Ниже пример пока сложноват для меня. У меня
1.re0 - 192.168.1.2 на нем поднимается pppoe tun0 ip получает внешний динамический.
2.rl0 - 192.168.4.1 смотрит в локалку. и на нем PPPoE сервер выдает адреса 172.16.1.0/24
3.rl1 - 192.168.6.2 смотрит на шлюз 192.168.6.1
Нужно чтоб 192.168.4.1 ходили в инет через pppoe соединение которое поднимается на re0, а 172.16.1.0/24 через rl1.

правила для nat
nat on tun0 from 192.168.4.0/24 to any -> (tun0)
nat on rl1 from 172.16.1.0/24 to any -> (rl1)

Правильно я нат настроил или нужно еще что то?


Название: Re: Два шлюза в Internet
Отправлено: elite от 11 Августа 2009, 21:04:33
Два канала в инет. Ниже пример пока сложноват для меня. У меня
1.re0 - 192.168.1.2 на нем поднимается pppoe tun0 ip получает внешний динамический.
2.rl0 - 192.168.4.1 смотрит в локалку. и на нем PPPoE сервер выдает адреса 172.16.1.0/24
3.rl1 - 192.168.6.2 смотрит на шлюз 192.168.6.1
Нужно чтоб 192.168.4.1 ходили в инет через pppoe соединение которое поднимается на re0, а 172.16.1.0/24 через rl1.

правила для nat
nat on tun0 from 192.168.4.0/24 to any -> (tun0)
nat on rl1 from 172.16.1.0/24 to any -> (rl1)

Правильно я нат настроил или нужно еще что то?
нат ты правильно сделал, но надо еще форвардить пакеты в соответствующий интерфейс, ну или использовать альтернативные таблицы маршрутизации
искать в гугле по PBR, ipfw fwd, setfib


Название: Re: Два шлюза в Internet
Отправлено: tramX от 11 Августа 2009, 21:36:17
А NODENY сам не добавит нужные правила IPFW?


Название: Re: Два шлюза в Internet
Отправлено: elite от 11 Августа 2009, 21:48:27
А NODENY сам не добавит нужные правила IPFW?
нет


Название: Re: Два шлюза в Internet
Отправлено: Efendy от 12 Августа 2009, 22:43:34
А NODENY сам не добавит нужные правила IPFW?
NoDeny управляет доступом, а не роутингом.


Название: Re: Два шлюза в Internet
Отправлено: tramX от 18 Августа 2009, 01:59:45
Возможно чтобы было два сервера MySQL, на них одинакавая база. С целью если один сервер не доступен то сателиты подключаются ко второму. А между серверами MySQL происходил обмен данными о последних изменениях?
Как быть с настройкой PF для двух каналов если один соединяется по pppoe и IP адрес и шлюз постоянно меняются?


Название: Re: Два шлюза в Internet
Отправлено: Efendy от 18 Августа 2009, 09:37:59
В mysql есть стандартные средства для этого. Читай о репликации


Название: Re: Два шлюза в Internet
Отправлено: blackjack от 18 Августа 2009, 10:04:53
при постоянно меняющемся адресе интерфейса в пф надо взять интерфейс в скобки типа (tun0)


Название: Re: Два шлюза в Internet
Отправлено: tramX от 18 Августа 2009, 11:50:19
С интерфейсом понятно, я так и сделал
nat on tun0 from 192.168.4.0/24 to any -> (tun0)

В этом топике выше пример
# Внешний интерфейс и шлюз для канала A (WAN_1).#
ext_if_a        = "em0"
ext_gw_a        = "x.x.x.x"
# Внешний интерфейс и шлюз для канала B (WAN_2).#
ext_if_b        = "em2"
ext_gw_b        = "x.x.x.x"
# Внешний интерфейс и шлюз для канала C (WAN_3).#
ext_if_c        = "fxp0"
ext_gw_c        = "x.x.x.x"

Что мне в ext_gw_a        = "x.x.x.x" прописать если IP меняется?


Название: Re: Два шлюза в Internet
Отправлено: tramX от 21 Августа 2009, 14:13:10
Нет решений если ip шлюза меняется? Может можно вместо IP шлюза указать имя интерфейса?


Название: Re: Два шлюза в Internet
Отправлено: imn от 05 Сентября 2009, 16:02:44
Код:
cat /etc/pf.conf 
#интерфейсы
int_if="re0"

ext_if1="vr1"
ext_gw1="192.168.1.1"
ext_if2="vr0"
# Таблицы с направлениями
table <Out1>
table <Out2>
#
nat on $ext_if1 from <Out1> to any -> ($ext_if1)
nat on $ext_if2 from <Out2> to any -> ($ext_if2)
pass in on $int_if route-to ($ext_if1 $ext_gw1) from <Out1> to any keep state
# вротой редирект не нужен так-как совподает с дефаулт роутером

pass out all

проверяем sudo pfctl -t Out1 -T add 192.168.0.2

на внешнем интерфейсе молчек, но если
sudo ipfw disable firewall
тогда
внутренний интерфейс
Код:
tcpdump -npi re0 host 192.168.0.2
17:48:39.628221 IP 192.168.0.2.123 > 195.16.42.125.123: NTPv4, Client, length 48
17:48:39.634062 IP 195.16.42.125.123 > 192.168.0.2.123: NTPv4, Server, length 48

внешний интерфейс
Код:
tcpdump -npi vr1
17:48:39.628262 IP 192.168.1.253.57381 > 195.16.42.125.123: NTPv4, Client, length 48
17:48:39.634043 IP 195.16.42.125.123 > 192.168.1.253.57381: NTPv4, Server, length 48

sudo ipfw table all list
Код:
 sudo ipfw table all list
---table(0)---
192.168.0.2/32 0
192.168.0.154/32 0
---table(1)---
192.168.0.2/32 0
192.168.0.154/32 0
---table(2)---
192.168.0.2/32 0
192.168.0.154/32 0
---table(10)---
192.168.0.2/32 1004
192.168.0.154/32 1008
---table(11)---
192.168.0.2/32 1004
192.168.0.154/32 1008
---table(15)---
192.168.0.2/32 0
192.168.0.154/32 0
---table(20)---
192.168.0.2/32 1
192.168.0.154/32 1
---table(21)---
192.168.0.2/32 1
192.168.0.154/32 1

sudo ipfw list
Код:
00050 allow tcp from any to me dst-port 22
00051 allow tcp from me 22 to any
00110 allow ip from any to any via lo0
00120 skipto 1000 ip from me to any
00130 deny icmp from any to any in icmptypes 5,9,13,14,15,16,17
00160 skipto 2000 ip from any to me
00200 skipto 500 ip from any to any via re0
00300 skipto 4500 ip from any to any in
00400 skipto 450 ip from any to any recv re0
00490 allow ip from any to any
00500 skipto 32500 ip from any to any in
00540 allow ip from any to any
01000 allow udp from any 53,7723 to any
01010 allow tcp from any to any setup keep-state
01020 allow udp from any to any keep-state
01100 allow ip from any to any
02000 check-state
02010 allow icmp from any to any
02020 allow tcp from any to any dst-port 80,443
02050 deny ip from any to any via re0
02060 allow udp from any to any dst-port 53,7723
02100 deny ip from any to any
05000 deny ip from not table(0) to any
05001 skipto 5010 ip from table(127) to table(126)
05002 skipto 5030 ip from any to not table(2)
05003 deny ip from any to not table(1)
05004 pipe tablearg ip from table(21) to any
05005 deny ip from any to any
05010 pipe tablearg ip from table(127) to any
05030 deny tcp from table(15) to any dst-port 25
05400 pipe tablearg ip from table(11) to any
32000 deny ip from any to any
32490 deny ip from any to any
33000 pipe tablearg ip from table(126) to table(127)
33001 skipto 33010 ip from not table(2) to any
33002 pipe tablearg ip from any to table(20)
33003 deny ip from any to any
33400 pipe tablearg ip from any to table(10)
65535 deny ip from any to any

почему ipfw режет пакеты?


Название: Re: Два шлюза в Internet
Отправлено: smallcms от 23 Октября 2009, 16:13:48
Может у кого-то есть готовое решение для двух шлюзов в round-robin в конфигурации биллинга "всё в одном"? Поделитесь, пожалуйста... Спрашиваю, т.г. гугл не помог, а в pf и ipfw не силён.  ???

P.S.: Дело не с pf.conf, здесь я разобрался. Правило вида:
Код:
[root@gateway /etc]# cat pf.conf 
set limit states 128000
set optimization aggressive

lan_net = "192.168.0.0/16"
int_if  = "xl0"
ext_if1 = "vr0"
ext_if2 = "vr1"
ext_gw1 = "192.168.88.1"
ext_gw2 = "192.168.99.1"

#  nat outgoing connections on each internet interface
nat on $ext_if1 from $lan_net to any -> ($ext_if1)
nat on $ext_if2 from $lan_net to any -> ($ext_if2)

#  default deny
###block in  from any to any
###block out from any to any

#  pass all outgoing packets on internal interface
pass out on $int_if from any to $lan_net
#  pass in quick any packets destined for the gateway itself
pass in quick on $int_if from $lan_net to $int_if
#  load balance outgoing tcp traffic from internal network.
pass in on $int_if route-to \
    { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
    proto tcp from $lan_net to any flags S/SA modulate state
#  load balance outgoing udp and icmp traffic from internal network
pass in on $int_if route-to \
    { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
    proto { udp, icmp } from $lan_net to any keep state

#  general "pass out" rules for external interfaces
pass out on $ext_if1 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if1 proto { udp, icmp } from any to any keep state
pass out on $ext_if2 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if2 proto { udp, icmp } from any to any keep state

#  route packets from any IPs on $ext_if1 to $ext_gw1 and the same for
#  $ext_if2 and $ext_gw2
pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to any
pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to any

Абсолютно не понятно как прикрутить к ipfw.  :(

P.P.S.: И всё же вроде нашёл ход:
в /etc/rc.firewall
добавил (омечено плюсом):
Код:
ifOut='vr0'
+ifOur='vr1'

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

${f} add 400 skipto 450 ip from any to any recv ${ifOut}
+${f} add 400 skipto 450 ip from any to any recv ${ifOur}

${f} add 2050 deny ip from any to any via ${ifOut}
+${f} add 2050 deny ip from any to any via ${ifOur}

Да, может и смешно реализовано, но оно же работает. Вроде как...  ;D


Название: Re: Два шлюза в Internet
Отправлено: Cell от 24 Октября 2009, 11:50:30
нормально реализованно


Название: Re: Два шлюза в Internet
Отправлено: olegotek от 25 Января 2010, 02:19:04
Я делаю жосткие правила такой-то подсети на 1 канал, такой-то на 2-ой. Подскажите, пожалуйста, как решается вопрос с ДНС. Просто дописать еще один сервер в rezolv.conf? Или можно так же конкретно прописать кому какой давать ДНС?


Название: Re: Два шлюза в Internet
Отправлено: Cell от 25 Января 2010, 02:56:54
Я делаю жосткие правила такой-то подсети на 1 канал, такой-то на 2-ой. Подскажите, пожалуйста, как решается вопрос с ДНС. Просто дописать еще один сервер в rezolv.conf? Или можно так же конкретно прописать кому какой давать ДНС?
сделай локальный ДНС и будет счастье, нафиг использовать ДНС провайдеров?