IPv6: BIRD2: BGP Sederhana - AS PREPEND

From OnnoWiki
Jump to navigation Jump to search
Bgp-multihoming.png


Ada tiga (3) ISP

ISP1:

IP 192.168.1.1/24 menuju ISP3
IP 192.168.3.1/24 menuju ISP2
AS 10
IP 10.100.100.0/24
IP 10.100.200.0/24

ISP2

IP 192.168.2.1/24 - menuju ISP3
IP 192.168.3.2/24 - menuju ISP1
AS 20
IP 10.10.10.0/24
IP 10.10.20.0/24

ISP3 (kita)

IP 192.168.1.2/24 - menuju ISP1
IP 192.168.2.2/24 - menuju ISP2
AS 30
IP 10.1.1.0/24
IP 10.1.2.0/24 


Sambungan

R1
e1 --> R3 e1
e2 --> R2 e2 
e3 --> LAN 10.100.100.0/24
e4 --> LAN 10.100.200.0/24
R2
e1 --> R3 e2
e2 --> R1 e2
e3 --> LAN 10.10.10.0/24
e4 --> LAN 10.10.20.0/24
R3
e1 --> R1 e1
e2 --> R2 e1
e3 --> LAN 10.1.1.0/24
e4 --> LAN 10.1.2.0/24


Setup connection

Pastikan semua ifconfig bersih, lakukan langkah BIRD: dari OpenWRT


ISP1

ifconfig eth1 192.168.1.1 netmask 255.255.255.0
ifconfig eth1 2001:192:168:1::1/64
ifconfig eth2 192.168.3.1 netmask 255.255.255.0
ifconfig eth2 2001:192:168:3::1/64
ifconfig eth3 10.100.100.1 netmask 255.255.255.0
ifconfig eth3 2001:10:100:100::1/64
ifconfig eth4 10.100.200.1 netmask 255.255.255.0
ifconfig eth4 2001:10:100:200::1/64


ISP2

ifconfig eth1 192.168.2.1 netmask 255.255.255.0
ifconfig eth1 2001:192:168:2::1/64
ifconfig eth2 192.168.3.2 netmask 255.255.255.0
ifconfig eth2 2001:192:168:3::2/64
ifconfig eth3 10.10.10.1 netmask 255.255.255.0
ifconfig eth3 2001:10:10:10::1/64
ifconfig eth4 10.10.20.1 netmask 255.255.255.0
ifconfig eth4 2001:10:10:20::1/64

ISP3

ifconfig eth1 192.168.1.2 netmask 255.255.255.0
ifconfig eth1 2001:192:168:1::2/64
ifconfig eth2 192.168.2.2 netmask 255.255.255.0
ifconfig eth2 2001:192:168:2::2/64
ifconfig eth3 10.1.1.1 netmask 255.255.255.0
ifconfig eth3 2001:10:1:1::1/64
ifconfig eth4 10.1.2.1 netmask 255.255.255.0
ifconfig eth4 2001:10:1:2::1/64


BGP Peering

Consider that IP connectivity between ISPs edge routers and Our Core router is already set up and working properly. So we can start to establish BGP peering to both ISPs.

ISP1

# vi /usr/local/etc/bird6.conf  # BIRD appliance di GNS3
vi /etc/bird.conf               # BIRD1 di OpenWRT

edit

log syslog all;
router id 192.168.1.1;

ipv4 table master4;
ipv6 table master6;
ipv4 table mcast4;
ipv6 table mcast6;
ipv4 table mtab4;
ipv6 table mtab6;
vpn4 table vpntab4;
vpn6 table vpntab6;
vpn4 table vpn4mc;
vpn6 table vpn6mc;
flow4 table flowtab4;
flow6 table flowtab6;

protocol device {
}
protocol kernel kernel4 {
        ipv4 {
                export all;
        };
}
protocol kernel kernel6 {
        ipv6 {
                export all;
        };
}
protocol direct {
        ipv4;
        ipv6;
        interface "eth1" , "eth2" , "eth3" , "eth4" ;
}
protocol bgp {
        local 192.168.1.1 as 10;
        neighbor 192.168.1.2 as 30;
        ipv4 {
                import all;
                export all;
        };
}
protocol bgp {
        local 2001:192:168:1::1 as 10;
        neighbor 2001:192:168:1::2 as 30;
        ipv6 {
                import all;
                export all;
        };
}
protocol bgp {                     
        local 192.168.3.1 as 10;   
        neighbor 192.168.3.2 as 20;
        ipv4 {                  
                import all;        
                export all;        
        };                         
}
protocol bgp {                     
        local 2001:192:168:3::1 as 10;   
        neighbor 2001:192:168:3::2 as 20;
        ipv6 {                  
                import all;        
                export all;        
        };                         
}                              
# BIRD1 di OpenWRT
killall zebra
killall bgpd
killall watchquagga
killall ospfd
killall ospf6d
killall ripd
killall ripngd
killall bird
bird

ISP2

# vi /usr/local/etc/bird6.conf  # BIRD appliance di GNS3
vi /etc/bird.conf               # BIRD1 di OpenWRT

edit

log syslog all;       
router id 192.168.2.1;
                   
ipv4 table master4;
ipv6 table master6;
ipv4 table mcast4;   
ipv6 table mcast6;   
ipv4 table mtab4;    
ipv6 table mtab6;    
vpn4 table vpntab4;  
vpn6 table vpntab6;      
vpn4 table vpn4mc;       
vpn6 table vpn6mc;         
flow4 table flowtab4;      
flow6 table flowtab6;      
                           
protocol device {          
}                                                    
protocol kernel kernel4 {                            
        ipv4 {                                       
                export all;                          
        };                                           
}        
protocol kernel kernel6 {                            
        ipv6 {                                       
                export all;                          
        };                                           
}                                               
protocol direct {                                    
        ipv4;
        ipv6;                                       
        interface "eth1" , "eth2" , "eth3" , "eth4" ;
}                                  
protocol bgp {                     
        local 192.168.3.2 as 20;   
        neighbor 192.168.3.1 as 10;
        ipv4 {                     
                import all;        
                export all;        
        };                         
} 
protocol bgp {                     
        local 2001:192:168:3::2 as 20;   
        neighbor 2001:192:168:3:1 as 10;
        ipv6 {
                import all;        
                export all;        
        };                         
} 
protocol bgp {                     
        local 192.168.2.1 as 20;   
        neighbor 192.168.2.2 as 30;
        ipv4 {                     
                import all;        
                export all;        
        };                         
}
protocol bgp {                     
        local 2001:192:168:2::1 as 20;   
        neighbor 2001:192:168:2::2 as 30;
        ipv6 {                     
                import all;        
                export all;        
        };                         
}
# BIRD1 di OpenWRT
killall zebra
killall bgpd
killall watchquagga
killall ospfd
killall ospf6d
killall ripd
killall ripngd
killall bird
bird

ISP3

# vi /usr/local/etc/bird6.conf  # BIRD appliance di GNS3
vi /etc/bird.conf               # BIRD1 di OpenWRT

edit

log syslog all;
router id 192.168.1.2;

ipv4 table master4;
ipv6 table master6;
ipv4 table mcast4;
ipv6 table mcast6;
ipv4 table mtab4;
ipv6 table mtab6;
vpn4 table vpntab4;
vpn6 table vpntab6;
vpn4 table vpn4mc;
vpn6 table vpn6mc;
flow4 table flowtab4;
flow6 table flowtab6;

protocol device {
}
protocol kernel kernel4 {
        ipv4 {
                export all;
        };
}
protocol kernel kernel6 {
        ipv6 {
                export all;
        };
}
protocol direct {
        ipv4;
        ipv6;
        interface "eth1" , "eth2" , "eth3" , "eth4" ;
}
filter export_ipv4 {
        if net ~ [ 10.1.1.0/24 ] then {
                bgp_path.prepend( 30 );
                bgp_path.prepend( 30 );
                bgp_path.prepend( 30 );
        }
        if net ~ [ 10.1.2.0/24 ] then {
                bgp_path.prepend( 30 );
                bgp_path.prepend( 30 );
                bgp_path.prepend( 30 );
        }
        accept;
}
filter export_ipv6 {
        if net ~ [ 2001:10:1:1::/64 ] then {
                bgp_path.prepend( 30 );
                bgp_path.prepend( 30 );
                bgp_path.prepend( 30 );
        }
        if net ~ [ 2001:10:1:2::/64 ] then {
                bgp_path.prepend( 30 );
                bgp_path.prepend( 30 );
                bgp_path.prepend( 30 );
        }
        accept;
}
protocol bgp {
        local 192.168.1.2 as 30;
        neighbor 192.168.1.1 as 10;
        ipv4 {
                import all;
                export filter {
                       bgp_path.prepend( 30 );
                       bgp_path.prepend( 30 );
                       bgp_path.prepend( 30 );
                       accept;
                       };
        };
}
protocol bgp {
        local 2001:192:168:1::2 as 30;
        neighbor 2001:192:168:1::1 as 10;
        ipv6 {
                import all;
                export filter {
                       bgp_path.prepend( 30 );
                       bgp_path.prepend( 30 );
                       bgp_path.prepend( 30 );
                       accept;
                       };
        };
}
protocol bgp {                     
        local 192.168.2.2 as 30;   
        neighbor 192.168.2.1 as 20;
        ipv4 {                  
                import all;        
                export filter {
                       bgp_path.prepend( 30 );
                       bgp_path.prepend( 30 );
                       bgp_path.prepend( 30 );
                       accept;
                       };        
        };                         
}            
protocol bgp {                     
        local 2001:192:168:2::2 as 30;   
        neighbor 2001:192:168:2::1 as 20;
        ipv6 {
                import all;        
                export filter {
                       bgp_path.prepend( 30 );
                       bgp_path.prepend( 30 );
                       bgp_path.prepend( 30 );
                       accept;
                       };       
        };                         
}                         
# BIRD1 di OpenWRT
killall zebra
killall bgpd
killall watchquagga
killall ospfd
killall ospf6d
killall ripd
killall ripngd
killall bird
bird

Test

birdc

ketik

show interfaces
show protocols
show protocols all bgp1
show protocols all bgp2
show route

Referensi


Pranala Menarik