Недавно мы установили второе подключение к Интернету, поэтому я несколько успешно настроил маршрутизацию на основе политик на граничном маршрутизаторе, которым является Juniper J4350 с JunOS 9.5R1.8.
Я следовал руководству более или менее точно на примере (здесь: http://community.riverbed.com/rvrb/attachments/rvrb/rvrb-7/2886/1/Juniper%20PBR.pdf), а маршрутизация PBR работает исходящим, маршрутизируя трафик из определенных диапазонов внутри локальной сети от поставщика услуг Интернета по мере необходимости, однако при включении фильтр также, кажется, улавливает другой трафик - я больше не могу подключиться к маршрутизатору по SSH на интерфейсе локальной сети, и конфигурация также, кажется, нарушает некоторые IPSEC VPN, проходящие через тот же маршрутизатор.
Таким образом, PBR и маршрутизация не работали должным образом через одного интернет-провайдера со статической маршрутизацией, специфичной для routing-options
.
Для справки, я добавил следующие части конфигурации:
ge-0/0/0 { vlan-tagging; unit 0 { vlan-id 1; family inet { filter { input PBR; } address 192.168.51.13/24; } } unit 16 { description Hants-ext; vlan-id 16; family inet { sampling { input; output; } address 10.249.16.126/25; } } unit 128 { description DMZ; vlan-id 128; family inet { address 10.249.16.129/25; } } unit 150 { description NetworkFlow; vlan-id 150; family inet { address 217.20.18.50/29; } } }
family inet { filter sample-in { term default { then { sample; accept; } } } filter PBR { term traffic_for_hants { from { source-address { 192.168.0.0/16; 172.16.0.0/16; 192.168.12.0/24 except; } } then { routing-instance viaHants; } } term traffic_for_networkflow { from { source-address { 192.168.12.0/24; } } then { routing-instance viaNetworkFlow; } } term default { then accept; } } }
routing-options { interface-routes { rib-group inet fbf-group; } static { route 192.168.0.0/16 next-hop 192.168.51.37; route 10.217.163.0/24 next-hop 192.168.51.37; route 172.19.0.0/16 next-hop 192.168.51.12; route 172.16.0.0/16 next-hop 10.249.16.1; route 0.0.0.0/0 next-hop 10.249.16.1; } rib-groups { fbf-group { import-rib [ inet.0 viaHants.inet.0 viaNetworkFlow.inet.0 ]; } } }
firewall { family inet { filter sample-in { term default { then { sample; accept; } } } filter PBR { term traffic_for_hants { from { source-address { 192.168.0.0/16; 172.16.0.0/16; 192.168.12.0/24 except; } } then { routing-instance viaHants; } } term traffic_for_networkflow { from { source-address { 192.168.12.0/24; } } then { routing-instance viaNetworkFlow; } } term default { then accept; } } } filter all { term all { then { sample; accept; } } } }
routing-instances { viaHants { instance-type forwarding; routing-options { static { route 0.0.0.0/0 next-hop 10.249.16.1; route 192.168.0.0/16 next-hop 192.168.51.37; route 10.217.163.0/24 next-hop 192.168.51.37; route 172.19.0.0/16 next-hop 192.168.51.12; route 172.16.0.0/16 next-hop 10.249.16.1; } } } viaNetworkFlow { instance-type forwarding; routing-options { static { route 0.0.0.0/0 next-hop 217.20.18.49; route 192.168.0.0/16 next-hop 192.168.51.37; route 10.217.163.0/24 next-hop 192.168.51.37; route 172.19.0.0/16 next-hop 192.168.51.12; route 172.16.0.0/16 next-hop 10.249.16.1; } } } }
Таблицы маршрутизации:
inet.0: 13 destinations, 13 routes (13 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 0.0.0.0/0 *[Static/5] 5d 02:52:09 > to 10.249.16.1 via ge-0/0/0.16 10.217.163.0/24 *[Static/5] 5d 02:52:09 > to 192.168.51.37 via ge-0/0/0.0 10.249.16.0/25 *[Direct/0] 38w2d 11:16:31 > via ge-0/0/0.16 10.249.16.126/32 *[Local/0] 38w2d 11:17:33 Local via ge-0/0/0.16 10.249.16.128/25 *[Direct/0] 38w2d 11:16:31 > via ge-0/0/0.128 10.249.16.129/32 *[Local/0] 38w2d 11:17:33 Local via ge-0/0/0.128 172.16.0.0/16 *[Static/5] 5d 02:52:09 > to 10.249.16.1 via ge-0/0/0.16 172.19.0.0/16 *[Static/5] 5d 02:52:09 > to 192.168.51.12 via ge-0/0/0.0 192.168.0.0/16 *[Static/5] 5d 02:52:09 > to 192.168.51.37 via ge-0/0/0.0 192.168.51.0/24 *[Direct/0] 38w2d 11:16:31 > via ge-0/0/0.0 192.168.51.13/32 *[Local/0] 38w2d 11:17:33 Local via ge-0/0/0.0 217.20.18.48/29 *[Direct/0] 1w5d 23:06:44 > via ge-0/0/0.150 217.20.18.50/32 *[Local/0] 1w5d 23:06:44 Local via ge-0/0/0.150 viaHants.inet.0: 13 destinations, 13 routes (13 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 0.0.0.0/0 *[Static/5] 6d 08:47:33 > to 10.249.16.1 via ge-0/0/0.16 10.217.163.0/24 *[Static/5] 5d 20:07:57 > to 192.168.51.37 via ge-0/0/0.0 10.249.16.0/25 *[Direct/0] 5d 03:17:39 > via ge-0/0/0.16 10.249.16.126/32 *[Local/0] 20:39:33 Local via ge-0/0/0.16 10.249.16.128/25 *[Direct/0] 5d 03:17:39 > via ge-0/0/0.128 10.249.16.129/32 *[Local/0] 20:39:33 Local via ge-0/0/0.128 172.16.0.0/16 *[Static/5] 5d 20:07:57 > to 10.249.16.1 via ge-0/0/0.16 172.19.0.0/16 *[Static/5] 5d 20:07:57 > to 192.168.51.12 via ge-0/0/0.0 192.168.0.0/16 *[Static/5] 5d 20:07:57 > to 192.168.51.37 via ge-0/0/0.0 192.168.51.0/24 *[Direct/0] 5d 03:17:39 > via ge-0/0/0.0 192.168.51.13/32 *[Local/0] 20:39:33 Local via ge-0/0/0.0 217.20.18.48/29 *[Direct/0] 5d 03:17:39 > via ge-0/0/0.150 217.20.18.50/32 *[Local/0] 20:39:33 Local via ge-0/0/0.150 viaNetworkFlow.inet.0: 13 destinations, 13 routes (13 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 0.0.0.0/0 *[Static/5] 6d 08:47:33 > to 217.20.18.49 via ge-0/0/0.150 10.217.163.0/24 *[Static/5] 5d 20:07:57 > to 192.168.51.37 via ge-0/0/0.0 10.249.16.0/25 *[Direct/0] 5d 03:17:39 > via ge-0/0/0.16 10.249.16.126/32 *[Local/0] 20:39:33 Local via ge-0/0/0.16 10.249.16.128/25 *[Direct/0] 5d 03:17:39 > via ge-0/0/0.128 10.249.16.129/32 *[Local/0] 20:39:33 Local via ge-0/0/0.128 172.16.0.0/16 *[Static/5] 5d 20:07:57 > to 10.249.16.1 via ge-0/0/0.16 172.19.0.0/16 *[Static/5] 5d 20:07:57 > to 192.168.51.12 via ge-0/0/0.0 192.168.0.0/16 *[Static/5] 5d 20:07:57 > to 192.168.51.37 via ge-0/0/0.0 192.168.51.0/24 *[Direct/0] 5d 03:17:39 > via ge-0/0/0.0 192.168.51.13/32 *[Local/0] 20:39:33 Local via ge-0/0/0.0 217.20.18.48/29 *[Direct/0] 5d 03:17:39 > via ge-0/0/0.150 217.20.18.50/32 *[Local/0] 20:39:33 Local via ge-0/0/0.150
Чертовски хорошая работа! Поскольку вам действительно нужно использовать только другой шлюз по умолчанию, я бы немного изменил ситуацию с вашими фильтрами брандмауэра, добавив адрес назначения 0.0.0.0/0 в раздел from для каждого термина. Таким образом, он применяется только тогда, когда адресатом является исходящий интернет-провайдер. Тем не менее, это не должно повлиять на доступ к интерфейсу управления. Я также обычно добавляю раздел, который импортирует все подключенные маршруты, но я думаю, что то, что вы здесь делаете, делает это. Можете выложить таблицы маршрутизации?
вот несколько примеров, которые я сделал, когда я настроил маршрут политики для перенаправления трафика на внутренний блок веб-фильтрации.
policy-options {
prefix-list web-redirect-src-exclusions;
prefix-list web-redirect-dst-exclusions {
10.254.0.0/16;
10.254.1.10/32;
10.254.1.11/32;
10.254.1.12/32;
10.254.128.10/32;
10.254.128.11/32;
10.254.128.12/32;
}
}
firewall {
family inet {
filter web-redirect {
term srx-exclusions {
from {
source-prefix-list {
web-redirect-src-exclusions;
}
}
then accept;
}
term dst-exclusions {
from {
destination-prefix-list {
web-redirect-dst-exclusions;
}
}
then accept;
}
term web-redirect {
from {
destination-address {
0.0.0.0/0;
}
destination-port [ http https ];
}
then {
routing-instance web-redirect;
}
}
term default {
then accept;
}
}
}
}
routing-instances {
web-redirect {
instance-type forwarding;
routing-options {
static {
route 0.0.0.0/0 next-hop 10.1.1.5;
}
}
}
}