Задать вопрос

Juniper теряет второй адрес на интерфейсе после срабатывания ip-monitoring. Как исправить?

Используется SRX220H2 (версия системы 12.1X46-D40.2) в качестве шлюза с NAT.
Настроены службы rpm и ip-monitoring.
По умолчанию используется ISP1, в случае аварии система переключает маршрут на ISP2.
Однако при переключении маршрута обратно на ISP1 перестает быть доступен второй адрес на интерфейсе 1.1.1.41/24. То есть снаружи не отвечает на пинг запросы, а изнутри не пропускает трафик с машин, использующих второй адрес (через SNAT).
Если удалить запись об адресе 1.1.1.41/24, сделать commit, после вернуть адрес и снова commit, все начинает работать.

Интерфейсы:
interfaces {
...
    reth0 {
        vlan-tagging;
        redundant-ether-options {
            redundancy-group 1;
        }
        unit 111 {
            description ISP1;
            vlan-id 111;
            family inet {
                filter {
                    input INPUT;
                }
                address 1.1.1.40/24 {
                    preferred;
                }
                address 1.1.1.41/24;
            }
        }
        unit 222 {
            description ISP2;
            vlan-id 222;
            family inet {
                filter {
                    input INPUT;
                }
                address 2.2.2.2/30;
            }
        }
    }
...
  • Вопрос задан
  • 1067 просмотров
Подписаться 4 Оценить 2 комментария
Решения вопроса 1
@pha Автор вопроса
Схема, когда провайдеры назнесены в разные virtual-router не решила проблему.

Проблема не решилась после обновления до JUNOS Software Release [12.3X48-D35.7]

По итогу придумана схема, где не нужно 2 внешних адреса.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@HunterXXI
Это такая особенность оборудования Juniper. Нужно явно разделить провадеров по разным vrf. обязательно две разные секурити зоны.
В своё время делал как-то так и работало как часы:
routing-options {
    interface-routes {
        rib-group inet inside;
    }
    static {
        route 0.0.0.0/0 next-table beeline.inet.0;
    }
    rib-groups {
        inside {
            import-rib [ inet.0 metronet.inet.0 beeline.inet.0 ];
        }
    }
}

    nat {
        source {
            rule-set trust-to-untrust {
                from routing-instance default;
                to routing-instance beeline;
                rule source-nat-rule {
                    match {
                        source-address-name NET_LOCAL;
                    }
                    then {
                        source-nat {
                            interface;
                        }
                    }
                }
                rule nat-off {
                    match {
                        source-address 0.0.0.0/0;
                        destination-address 10.0.0.0/8;
                    }
                    then {
                        source-nat {
                            off;
                        }
                    }
                }
            }
            rule-set trust-to-untrust2 {
                from routing-instance default;
                to routing-instance metronet;
                rule source-nat-rule2 {
                    match {
                        source-address-name NET_LOCAL;
                    }
                    then {
                        source-nat {
                            interface;
                        }
                    }
                }
                rule source-nat-off2 {
                    match {
                        source-address 0.0.0.0/0;
                        destination-address 10.0.0.0/8;
                    }
                    then {
                        source-nat {
                            off;
                        }
                    }
                }
            }
        }
        destination {
            pool CORE_SSH {
                address 10.240.240.5/32 port 22;
            }
            rule-set DNAT {
                from zone untrust;
                rule dnat_for_core_ssh {
                    match {
                        destination-address 0.0.0.0/0;
                        destination-port 27200;
                    }
                    then {
                        destination-nat pool CORE_SSH;
                    }
                }
            }
            rule-set DNAT-2 {
                from zone untrust2;
                rule dnat_for_core_ssh2 {
                    match {
                        destination-address 0.0.0.0/0;
                        destination-port 27200;
                    }
                    then {
                        destination-nat pool CORE_SSH;
                    }
                }
            }
        }
    }

routing-instances {
    beeline {
        instance-type virtual-router;
        interface ge-0/0/1.0;
        routing-options {
            interface-routes {
                rib-group inet inside;
            }
            static {
                route 0.0.0.0/0 next-hop X.X.X.X;;
            }
        }
    }
    metronet {
        instance-type virtual-router;
        interface ge-0/0/0.0;
        routing-options {
            interface-routes {
                rib-group inet inside;
            }
            static {
                route 0.0.0.0/0 next-hop X.X.X.X;;
            }
        }
    }
}
services {
    rpm {
        probe ISP1-GW {
            test uplink {
                probe-type icmp-ping;
                target address X.X.X.X;;
                probe-count 5;
                probe-interval 3;
                test-interval 30;
                source-address X.X.X.X;;
                routing-instance beeline;
                thresholds {
                    successive-loss 5;
                    total-loss 5;
                }
            }
        }
    }
    ip-monitoring {
        policy ISP1_DOWN {
            match {
                rpm-probe ISP1-GW;
            }
            then {
                preferred-route {
                    routing-instances beeline {
                        route 0.0.0.0/0 {
                            next-hop X.X.X.X;
                        }
                    }
                }
            }
        }
    }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы