Jump to content
Калькуляторы

Карточка Juniper MS-MIC-16G + NAPT+ PPPOE+ filtering и Грабли! Juniper routers + NAT

Есть интересная статья на хабре про NAT и juniper. Может кто то и читал http://habrahabr.ru/post/209298/

Все конечно интересно с точки зрения натрирования и есть перспективы натирования вместе с IPv6.

Но вот, когда дело до дела доходит и нужно нарезать скорость то обязательно вылазят какие-то "Грабли!".

 

Вот берем пример конфига динамического профайла , тут все в принципе срабатывает на ура

 

dynamic-profiles {

PPPOE-profile {

interfaces {

pp0 {

unit "$junos-interface-unit" {

ppp-options {

chap;

}

pppoe-options {

underlying-interface "$junos-underlying-interface";

server;

}

keepalives interval 30;

family inet {

filter {

input "$junos-input-filter";

output "$junos-output-filter";

}

 

}

unnumbered-address lo0.0;

}

}

}

}

}

}

 

firewall {

family inet {

filter INPUT-10M {

interface-specific;

term 10 {

then {

policer 10M;

accept;

}

}

}

 

filter OUTPUT-10M {

interface-specific;

term 10 {

then {

policer 10M;

accept;

}

}

}

 

policer 10M {

if-exceeding {

bandwidth-limit 10m;

burst-size-limit 100k;

}

then discard;

}

 

Абоненту выдаем адрес , накатываем фильтр , скорость шейпится в обе стороны нормально. Но мы усложним задачу , будем выдавать абоненту серые адреса и натить их для начала в пул реальных IPv4

 

dynamic-profiles {

PPPOE-profile {

interfaces {

pp0 {

unit "$junos-interface-unit" {

ppp-options {

chap;

}

pppoe-options {

underlying-interface "$junos-underlying-interface";

server;

}

keepalives interval 30;

family inet {

filter {

input "$junos-input-filter";

output "$junos-output-filter";

}

service {

input {

service-set NAT;

}

output {

service-set NAT;

}

}

unnumbered-address lo0.0;

}

}

}

}

}

}

 

И настройка сервиса NAT

 

services {

nat {

pool NAT-POOL {

address XXX.XXX.XXX.XXX/30;

port {

automatic {

random-allocation;

}

}

}

rule NAT-RULE1 {

match-direction input;

term 10 {

from {

source-address {

10.1.0.0/16;

}

}

then {

translated {

source-pool NAT-POOL;

translation-type {

napt-44;

}

}

}

}

}

}

service-set NAT {

nat-rules NAT-RULE1;

interface-service {

service-interface ms-0/2/0;

}

}

}

 

Пробуем шейпить и ...

#show firewall

 

Policers:

Name Bytes Packets

10M-10-pp0.1073741829-in 1467741 995

 

Filter: OUTPUT-10M-pp0.1073741829-out

Policers:

Name Bytes Packets

10M-10-pp0.1073741829-out 0 0

 

Видим, что уже трафик в по OUTPUT-10M не бегает. Но быть может манюал подсказывает что фильтры нужно цеплять на service как post-service-filter.

Но и тут сразу облом http://www.juniper.net/techpubs/en_US/junos13.3/topics/reference/configuration-statement/post-service-filter-edit-dynamic-profiles.html

На output не прицепишь и на pp0 не работает.

Вот и задаешься вопросом "шейпинга" это вообще возможно в таком случае ?

Edited by Star1609

Share this post


Link to post
Share on other sites

фильтр такой же пытаюсь подсунуть INPUT-10M и OUTPUT-10M который описал в конфиге тут же чуть выше , в post-service-filter на input конфигурится но не сработатывает , теость сессия PPPoE вообще не подымается у абонента, в output собственно там где нам и нужно пост сервис фильтры в джуносе нет возможности применять

Share this post


Link to post
Share on other sites

Вообще странно, фильтр на интерфейсе должен работать . На каком софте запускаете , если не секрет ?

Share this post


Link to post
Share on other sites

как int подписчика в итоге выглядит в плане фильтров?

sh int .. extensive ?

 

а вообще зачем service как interface style

сделайте next-hop style, проще и удобнее будет

Share this post


Link to post
Share on other sites

Так настраивать NAT нельзя ни на циске, ни на джуне =)

Никто не вешает "ip nat inside" на Virtual-Template.

Ну и тоже самое верно для джуна.

Share this post


Link to post
Share on other sites

как int подписчика в итоге выглядит в плане фильтров?

sh int .. extensive ?

 

а вообще зачем service как interface style

сделайте next-hop style, проще и удобнее будет

 

admin> show interfaces pp0.1073741824 extensive

Logical interface pp0.1073741824 (Index 335) (SNMP ifIndex 539) (Generation 144)

Flags: Up Point-To-Point SNMP-Traps 0x0 Encapsulation: PPPoE

PPPoE:

State: SessionUp, Session ID: 1,

Session AC name: TENET_SERVER, Remote MAC address: 60:eb:69:5c:74:a5,

Underlying interface: ge-1/1/2.0 (Index 334)

Bandwidth: 1000mbps

Traffic statistics:

Input bytes : 54109

Output bytes : 13256

Input packets: 263

Output packets: 65

Local statistics:

Input bytes : 1391

Output bytes : 389

Input packets: 47

Output packets: 10

Transit statistics:

Input bytes : 52718 856 bps

Output bytes : 12867 0 bps

Input packets: 216 1 pps

Output packets: 55 0 pps

Keepalive settings: Interval 30 seconds, Up-count 1, Down-count 3

LCP state: Opened

NCP state: inet: Opened, inet6: Not-configured, iso: Not-configured, mpls: Not-configured

CHAP state: Success

PAP state: Closed

Protocol inet, MTU: 1480, Generation: 163, Route table: 0

Flags: Sendbcast-pkt-to-re

Input Filters: INPUT-10M-pp0.1073741824-in

Output Filters: OUTPUT-10M-pp0.1073741824-out

Addresses, Flags: Is-Primary

Destination: Unspecified, Local: 10.1.1.1, Broadcast: Unspecified, Generation: 144

Share this post


Link to post
Share on other sites

Так настраивать NAT нельзя ни на циске, ни на джуне =)

Никто не вешает "ip nat inside" на Virtual-Template.

Ну и тоже самое верно для джуна.

 

Сделал nat через next hop но теперь проблема , pp0 интерфейс даже не подысатся в лог ничего не пишет

Пробую так :

PPPOE-test {

interfaces {

pp0 {

unit "$junos-interface-unit" {

ppp-options {

chap;

}

pppoe-options {

underlying-interface "$junos-underlying-interface";

server;

}

keepalives interval 30;

family inet {

filter {

input INPUT-NAT;

}

unnumbered-address lo0.0;

}

}

}

}

}

 

filter INPUT-NAT {

term 10 {

from {

source-address {

10.1.0.0/16;

}

}

then {

routing-instance NAT-VRF;

}

}

term 20 {

then accept;

}

}

 

Если у кого то заработала такая схема поделитесь информацией если не жалко

Share this post


Link to post
Share on other sites

Фильтр, используемый на динамическом интерфейсе, обязан быть interface-specific.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this