Биллинговая система Nodeny
29 Марта 2024, 10:38:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: 1 ... 3 4 [5] 6
  Печать  
Автор Тема: два провайдера 2 шлюза  (Прочитано 59970 раз)
md5
NoDeny
Старожил
*

Карма: 0
Offline Offline

Сообщений: 256

647618
Просмотр профиля
« Ответ #60 : 23 Декабря 2010, 15:11:25 »

PF со статикой!

одно угнетает что шлюз по дефолту отлично работает

Код:
lan_net = "10.0.0.0/16"
int_if  = "em0"

ext_if1 = "sk1"
ext_if2 = "sk0"

ext_gw1 = "ссс.ссс.ссс.ссс"
ext_gw2 = "ссс.ссс.ссс.ссс"

table <ua-ix> persist file "/usr/local/nodeny/prefixes.txt"
table <lan1> persist file "/usr/local/nodeny/lan1.lan"
table <lan2> persist file "/usr/local/nodeny/lan2.txt"

#  nat исходящие соединения на каждый интерфейс Интернета

nat on $ext_if1 from $lan_net to any -> ($ext_if1)
nat on $ext_if2 from $lan_net to any -> ($ext_if2)

#  pass all исходящие пакеты на внутреннем интерфейсе
pass out on $int_if from any to $lan_net

#  pass in quick any пакеты, предназначенные для шлюза itself
pass in quick on $int_if from $lan_net to $int_if

#  Принимаем http трафик и пускаем его через шлюз $ext_gw2
pass in on $int_if route-to { ($ext_if2 $ext_gw2) } inet proto tcp from $lan_net to !<ua-ix> port {80 443 8080 8103} flags S/SA modulate state

#  Принимаем остальной трафик и если он направлен в юаикс отправляем через 2 провайдера сразу
pass in on $int_if route-to { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin proto {tcp} from $lan_net to <ua-ix> port {1:20 23:79 81:442 444:2801 2803:7776 7778:8021 8023:65500} flags S/SA

#  Принимаем остальной трафик и если он направлен !!!!!НЕ!!!!! в юаикс отправляем через шлюз $ext_gw1 который прописан в defaultrouter
pass in on $int_if route-to { ($ext_if1 $ext_gw1) } inet  proto {tcp} from $lan_net to !<ua-ix> port {1:20 23:79 81:442 444:2801 2803:7776 7778:8021 8023:65500} flags S/SA

#  Принимаем udp ели предназначены для юаикса пускаем через два провайдера сразу..
pass in on $int_if route-to { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin proto { udp } from $lan_net to <ua-ix> keep state

#  Принимаем udp если не пренодлежит юаиксу пускаем через шлюз 1.
pass in on $int_if route-to { ($ext_if1 $ext_gw1) } inet proto { udp } from $lan_net to !<ua-ix> keep state

#  Принимаем icmp если пренодлежит юаиксу пускаем через шлюз 2.
pass in on $int_if route-to { ($ext_if2 $ext_gw2) } inet proto { icmp } from $lan_net to <ua-ix> keep state

#  Принимаем icmp если не пренодлежит юаиксу пускаем через шлюз 1.
pass in on $int_if route-to { ($ext_if1 $ext_gw1) } inet proto { icmp } from $lan_net to !<ua-ix> keep state



#  Общие "pass out" правила для внешних интерфейсов
pass out on $ext_if1 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if1 proto { udp, icmp, tcp } 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, tcp } from any to any keep state

#  маршрутизации пакетов с любого IP-адреса на $ext_if1 to $ext_gw1 и та же для $ext_if2 и $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

pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to any

при включении этого правила только icmp идут на интерфейс второга ипа. ежели выключаешь то тишина полная
Записан
PulsarK
Новичок
*

Карма: 0
Offline Offline

Сообщений: 4



Просмотр профиля
« Ответ #61 : 01 Июня 2011, 13:42:51 »

Немного подыму тему в связи с аналогичной проблемой.
Нужно часть клиентов перекинуть на другой аплинк с другим гейтвеем.
Дано:
FreeBSD 7.2
Клиенты подключаются через PPPoE (MPD), потому возня с интерфейсами ng*
NAT крутится на PF

Теперь, как я понял, нужно настроить форвардинг пакетов от части клиентов на другой гейтвей. В каком месте в IPFW можно прикрутить правила форвардинга, но чтобы биллинг не пострадал?
Список правил (лишне убрал):
Код:
# ipfw show
00050      3152       287692 allow tcp from any to me dst-port 22
00051      2581       783824 allow tcp from me 22 to any
00110   1873589   3661269797 allow ip from any to any via lo0
00120   1238244    351727011 skipto 1000 ip from me to any
00130     35272      1899961 deny icmp from any to any in icmptypes 5,9,13,14,15,16,17
00160  13695188   1269721322 skipto 2000 ip from any to me
00200 607526540 496564200772 skipto 500 ip from any to any via em0
00201         0            0 skipto 500 ip from any to any via vlan1200
00300 256507799  65219388294 skipto 4500 ip from any to any in
00400 350837488 428767598132 skipto 450 ip from any to any recv em0
00401         0            0 skipto 450 ip from any to any recv vlan1200
00420    310046    221427080 allow ip from any to any
00450 350836210 428766398972 divert 2 ip from any to any
00490 350837872 428767633478 allow ip from any to any
00500 352998448 431575854202 skipto 32500 ip from any to any in
00510 254552333  64997278556 divert 1 ip from any to any
00540 247818228  64860330530 allow ip from any to any
01000    449137     99357287 allow udp from any 53 to any
01010    279306    231073708 allow tcp from any to any setup keep-state
01020    983479    123073608 allow udp from any to any keep-state
01100     28821     19198815 allow ip from any to any
02000         0            0 check-state
02010     82040     72046228 allow icmp from any to any
02015    220780    196793087 allow tcp from any to me dst-port 80 limit src-addr 16
02020     16125      2303436 allow tcp from any to me dst-port 443,25,21
02050  12293412    840853800 deny ip from any to any via em0
02051        68         4779 deny ip from any to any via vlan1200
02060    463767     29497975 allow udp from any to any dst-port 53
02100    115038      7016333 deny ip from any to any
04800     17049      4373381 fwd 127.0.0.1,83 ip from table(35) to not me dst-port 80
04900    297096     50381657 fwd 127.0.0.1,82 ip from not table(0) to not me dst-port 80
05000    755828     52956788 deny ip from not table(0) to any
05001 165133274  37474768981 skipto 5010 ip from table(127) to table(126)
05002  90271241  27633576304 skipto 5030 ip from any to not table(2)
05003      3355       233190 deny ip from any to not table(1)
05004     27837      2952550 pipe tablearg ip from table(21) to any
05005         0            0 deny ip from any to any
05010 165133274  37474768981 pipe tablearg ip from table(127) to any
05030      3239       155740 deny tcp from table(15) to any dst-port 25,465
05226         0            0 allow ip from table(127) to table(126)
05400  90268001  27633420469 pipe tablearg ip from table(11) to any
32000         1           95 deny ip from any to any
32490      1393        96462 deny ip from any to any
33000 260190627 347976754424 pipe tablearg ip from table(126) to table(127)
33001  92807820  83599099621 skipto 33010 ip from not table(2) to any
33002         1          157 pipe tablearg ip from any to table(20)
33003         0            0 deny ip from any to any
33226         0            0 allow ip from table(126) to table(127)
33400  92800444  83598400720 pipe tablearg ip from any to table(10)
65535      7376       698901 deny ip from any to any

Заранее благодарен за помощь.
PS Через PF тяжело организовать, так как внутренний интерфейс получается не один, а целая куча (ng*).
Записан
VitalVas
NoDeny
Спец
*

Карма: 60
Offline Offline

Сообщений: 991



Просмотр профиля WWW
« Ответ #62 : 01 Июня 2011, 14:36:58 »

от тебе пример, на основе этого можно без проблем дописать правила....
правила полностью рабочие, но не от этого биллинга
Код:
gateway# ipfw list
00101 allow tcp from any to me dst-port 80
00102 allow udp from any to me dst-port 53 via sk1
00103 allow udp from any to me dst-port 67 via sk1
00105 allow tcp from any to me dst-port 1723
00106 allow tcp from any to me dst-port 5006
00110 allow ip from any to me dst-port 139,445 via sk1
00130 allow icmp from any to me in icmptypes 0,8
00150 fwd 127.0.0.1,8922 tcp from table(3) to table(2) dst-port 80,443
00200 check-state
00220 allow ip from me to any keep-state
00230 setfib 1 ip from any to me in recv ste0
00231 setfib 2 ip from any to me in recv rl0
00232 setfib 0 ip from any to me in recv сс
00250 allow ip from any to any via nfe0
00251 allow ip from any to any via ste0
00252 allow ip from any to any via rl0
00301 setfib 2 ip from table(5) to any
00302 skipto 500 ip from table(5) to any
00305 setfib 2 ip from any to table(5)
00306 skipto 600 ip from any to table(5)
00310 setfib 1 ip from table(10) to any
00312 skipto 500 ip from table(10) to any
00314 setfib 1 ip from any to table(10)
00316 skipto 600 ip from any to table(10)
00320 setfib 0 ip from table(6) to any
00322 skipto 500 ip from table(6) to any
00324 setfib 0 ip from any to table(6)
00326 skipto 600 ip from any to table(6)
00510 pipe tablearg ip from table(0) to any
00590 deny ip from any to any
00610 pipe tablearg ip from any to table(1)
00690 deny ip from any to any
65535 deny ip from any to any
где ste0,rl0,nfe0 - аплинки......
Записан
PulsarK
Новичок
*

Карма: 0
Offline Offline

Сообщений: 4



Просмотр профиля
« Ответ #63 : 02 Июня 2011, 19:04:17 »

Спасибо за подсказку. Пересобрал ядро, setfib заработал. Но появились новые грабли. Пакеты, на которые распространяется правило с "setfib 1" , пропадают на правиле с "divert 1" (сокет IPCADа). Может ктото подсказать в чём причина?
Записан
VitalVas
NoDeny
Спец
*

Карма: 60
Offline Offline

Сообщений: 991



Просмотр профиля WWW
« Ответ #64 : 02 Июня 2011, 20:37:30 »

хм....
я divert вообще не юзаю
Код:
capture-ports enable;
buffers = 64k;
interface sk1;
aggregate 192.168.0.0/16 strip 32;
rsh enable at 127.0.0.1;
rsh root@127.0.0.1 admin;
rsh ttl = 10;
rsh timeout = 60;
dumpfile = ipcad.dump;
chroot = /tmp;
memory_limit = 512m;
может нужно покурить в сторону sysctl
Записан
PulsarK
Новичок
*

Карма: 0
Offline Offline

Сообщений: 4



Просмотр профиля
« Ответ #65 : 04 Июня 2011, 18:54:02 »

Проблема решилась. Решение нашёл на этом же форуме - http://forum.nodeny.com.ua/index.php?topic=362.0
В правилах IPFW заменил "divert" на "tee". Окончательный вариант фаервола IPFW (лишнее убрал):
Код:
# ipfw list
00050 allow tcp from any to me dst-port 22
00051 allow tcp from me 22 to any
00080 setfib 1 ip from 10.0.10.128/25 to any
00090 setfib 1 ip from any to 10.0.10.128/25
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 em0
00201 skipto 500 ip from any to any via vlan1200
00300 skipto 4500 ip from any to any in
00400 skipto 450 ip from any to any recv em0
00401 skipto 450 ip from any to any recv vlan1200
00420 allow ip from any to any
00450 tee 2 ip from any to any
00490 allow ip from any to any
00500 skipto 32500 ip from any to any in
00510 tee 1 ip from any to any
00540 allow ip from any to any
01000 allow udp from any 53 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
02015 allow tcp from any to me dst-port 80 limit src-addr 16
02020 allow tcp from any to me dst-port 443,25,21
02050 deny ip from any to any via em0
02051 deny ip from any to any via vlan1200
02060 allow udp from any to any dst-port 53
02100 deny ip from any to any
04800 fwd 127.0.0.1,83 ip from table(35) to not me dst-port 80
04900 fwd 127.0.0.1,82 ip from not table(0) to not me dst-port 80
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,465
05226 allow ip from table(127) to table(126)
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
33226 allow ip from table(126) to table(127)
33400 pipe tablearg ip from any to table(10)
65535 deny ip from any to any
В конфиге IPCADa (ipcad.conf) заменил интерфейс "divert" на "tee".
Перед этим в конфиге PF настроил NAT для нужных диапазонов адресов. Также были прописаны нужные направления во второй таблице маршрутизации через setfib 1.
PS Версия nodeny - 50.32
« Последнее редактирование: 04 Июня 2011, 18:59:28 от PulsarK » Записан
kuhar
NoDeny
Постоялец
*

Карма: 0
Offline Offline

Сообщений: 128


Просмотр профиля
« Ответ #66 : 04 Декабря 2011, 20:58:54 »

причому тут bgp ? я питаюсь як правильно зробити конфіг pf щоб працювало з інтерфейсом на якому міняється шлюз.
делаешь его основным, а дальше пишешь статическую маршрутизацию для другого провайдера
А можно плиззз тут по подробней, к меня два входа одного и того же прова, у которых меняется шлюз, как быть в этой ситуации?
Записан
kuhar
NoDeny
Постоялец
*

Карма: 0
Offline Offline

Сообщений: 128


Просмотр профиля
« Ответ #67 : 03 Июня 2013, 07:06:34 »

Всем привет.
Подскажите, плизз как организовать, следующую схему:
Есть два прова PS1 и PS2, оба на серваке соединяются по (это один и тот же провайдер, но с разными ip и шлюзами).
Нужно сделать так, чтобы один пров PS1 раздавал на локальную подсеть, например 10.0.24.0/24, а второй PS2 на 10.0.25.0/24.
Фаервол настроен на две сетевухи, все ок, я думал что достаточно в pf настроить так:
Код:
set limit states 128000
set optimization aggressive

nat pass on re2 from 10.0.24.0/24 to any -> re2
nat pass on re0 from 10.0.25.0/24 to any -> re0
re2 - PS1
re0 - PS2

И будет все работать, но не тут то было, по умолчанию принимает шлюз либо PS1, либо PS2 и соответственно в зависимости от шлюза работают абоны либо в подсети 10.0.24.0/24, либо в 10.0.25.0/24.
Попытался добавить руками второй шлюз, и оно как бы работает, но с очень большими потерями пакетов, иногда вообще не работает.

Подскажите, плизз, как правильно это организовать.
Записан
Redmen
NoDeny
Ветеран
*

Карма: 62
Offline Offline

Сообщений: 547


Подяку в КАРМУ


Просмотр профиля WWW
« Ответ #68 : 03 Июня 2013, 08:00:42 »

дядя Гугл подсказывает
http://www.google.com.ua/search?client=opera&hs=kCP&channel=suggest&q=options+routetables&spell=1&sa=X&ei=2y-sUeubA8fmOuWggfgL&ved=0CCkQBSgA
в ядро надо добавить опцию options ROUTETABLES=
Записан

Приймаю подяку у вигляді карми... та/або грошей Подмигивающий
t.me/MrMethod
ser970
NoDeny
Спец
*

Карма: 70
Offline Offline

Сообщений: 1324

262462619
Просмотр профиля Email
« Ответ #69 : 03 Июня 2013, 08:13:39 »

дядя Гугл подсказывает
http://www.google.com.ua/search?client=opera&hs=kCP&channel=suggest&q=options+routetables&spell=1&sa=X&ei=2y-sUeubA8fmOuWggfgL&ved=0CCkQBSgA
в ядро надо добавить опцию options ROUTETABLES=
хм
как связаны? ROUTETABLES и pf ?

если делать средствами pf то ROUTETABLES не нужен.

а по сути в pf надо еще кроме ната указать что и через какой интерфейс выходить будет .
Записан
Rico-X
NoDeny
Старожил
*

Карма: 7
Offline Offline

Сообщений: 350


Просмотр профиля
« Ответ #70 : 03 Июня 2013, 08:32:32 »

Все просто, в конце правил добавьте
Код:
pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to !<no_nat>
pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to !<no_nat>
и все заработает, если нет - уберите pass из своих правил.
Записан
kuhar
NoDeny
Постоялец
*

Карма: 0
Offline Offline

Сообщений: 128


Просмотр профиля
« Ответ #71 : 03 Июня 2013, 08:35:33 »

дядя Гугл подсказывает
http://www.google.com.ua/search?client=opera&hs=kCP&channel=suggest&q=options+routetables&spell=1&sa=X&ei=2y-sUeubA8fmOuWggfgL&ved=0CCkQBSgA
в ядро надо добавить опцию options ROUTETABLES=

Ядро у меня собрано с options ROUTETABLES=3
Записан
kuhar
NoDeny
Постоялец
*

Карма: 0
Offline Offline

Сообщений: 128


Просмотр профиля
« Ответ #72 : 03 Июня 2013, 08:39:00 »

Пробовал с такой конфигурацией:

Код:
set limit states 128000
set optimization aggressive

ext_if1="ip_PS1"
ext_if2="ip_PS2"
ext_gw1="GW_PS1"
ext_gw2="GW_PS2"

nat pass on $ext_if1 from 10.0.0.0/8 to any -> $ext_if1
nat pass on $ext_if2 from 10.0.25.0/24 to any -> $ext_if2

pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to !<no_nat>
pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to !<no_nat>

Но результатов не дало...Грустный

Все просто, в конце правил добавьте
Код:
pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to !<no_nat>
pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to !<no_nat>
и все заработает, если нет - уберите pass из своих правил.

Правда без pass не пробовал.
Если два прова соединяются по DHCP в таблице должно ведь быть 2 шлюза, правильно?
Записан
Rico-X
NoDeny
Старожил
*

Карма: 7
Offline Offline

Сообщений: 350


Просмотр профиля
« Ответ #73 : 03 Июня 2013, 10:42:31 »

Пробуйте без pass должно все работать. В своем случае создайте таблицу nonat и закиньте туда адреса на которые натить не нужно или замените !<no_nat> на any
Записан
kuhar
NoDeny
Постоялец
*

Карма: 0
Offline Offline

Сообщений: 128


Просмотр профиля
« Ответ #74 : 03 Июня 2013, 15:38:08 »

Возможно глупый вопрос, но спрошу.
При проверки дефолтного шлюза, чтобы это все работало, netstat должен выдавать 2 шлюза или один?
Записан
Страниц: 1 ... 3 4 [5] 6
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!