This tutorial will describe how to set up a BGP Looking Glass server on CentOS. For those of you new to the concept of BGP and Looking Glass, let's start with introduction. If you are familiar with BGP, skip it over.
What is Border Gateway Protocol (BGP)?
BGP is literally the routing backbone of the Internet. As we all know it, the Internet consists of millions of interconnected networks. In the telecom industry, these millions of individual networks are referred to as Autonomous Systems (ASs). Each AS is managed under a single administrative domain (e.g., one organization or an ISP), with its own unique AS number and IP address pools aka IP prefixes. The AS number can be private (i.e., not visible publicly), and so can be the IP address pools. For example, when multiple branch offices of one company interconnect, they can use a private AS number and IP prefix for each branch office. Networks that want to use a public AS number and publicly routable IP addresses have to apply for them at a Regional Internet Registry (RIR) like ARIN, APNIC, RIPE. The RIR assigns a unique AS number and IP prefix(es) to that network.
BGP is the industry standard inter-domain routing protocol used to interconnect different ASs. All IP prefixes known to one AS are shared with neighboring ASs, thus populating the BGP routing tables of their border routers. The Internet is formed by such interconnections between millions of public ASs through BGP. So stating here again, BGP is essentially the routing backbone of the Internet.
What is Looking Glass?
Looking Glass (LG) is a web-based tool that helps network operators analyze how traffic is routed to and from a particular AS. The BGP routing table of an AS depends on what other ASs it is connected with. To be more specific, the IP prefixes learnt from neighboring ASs will populate the local BGP routing table, which will be used by the local AS to make its routing decisions.
Now assume that for troubleshooting routing or network latency related issues, we want to run ping or traceroute from a remote AS. Naturally, we do not have access to their equipment so running the test from remote locations is not feasible. However, the admins of a remote AS could set up a Looking Glass server with web-based interface, which will allow any user to run specific commands like ping, traceroute, or access the remote AS's BGP routing information, without logging in to their routers. These tests provide useful insight during network troubleshooting, as the ping or traceroute probing can be conducted from another AS's networks.
Setting Up BGP Looking Glass on CentOS
Before we start, please make sure that SELinux and firewall are tuned to permit necessary services and ports like 23, 2601, 2605, 80.
First of all, dependencies are installed. Using the Reporforge repository is recommended.
The Looking Glass will be set up using LG. Necessary software is downloaded and extracted. The directory where the site will be stored is also created.
[root@lg ~]# wget http://www.version6.net/lg/lg-1.9.tar.gz
[root@lg ~]# tar zxvf lg-1.9.tar.gz
[root@lg ~]# mkdir /var/www/html/lg
Now that all files have been extracted, they are copied into the web server directory. Necessary permissions are also set.
[root@lg lg]# cp /root/lg-1.9/lg.cgi .
[root@lg lg]# cp /root/lg-1.9/favicon.ico .
[root@lg lg]# cp /root/lg-1.9/lg.conf .
All the files must be readable.
The lg.cgi script must be executable.
Tuning the Web Server
The index.html file is created for LG with necessary redirection.
In case DNS is set up for the Looking Glass server:
<html> <head> <meta http-equiv="refresh" content="0;url=http://lg.example.tst/lg/lg.cgi"> </head> </html>
<html> <head> <meta http-equiv="refresh" content="0;url=http://IP/lg.cgi"> </head> </html>
The following parameters are modified in the web server.
## The favicon path and the cgi script paths are defined ## Alias /lg/favicon.ico "/var/www/html/lg/favicon.ico" ScriptAlias /lg "/var/www/html/lg/lg.cgi"
The httpd service is started and added to startup list.
[root@lg ~]# chkconfig httpd on
Adding Routers to the Looking Glass
LG supports Cisco, Juniper and Linux Quagga routers. All routers are added to /var/www/html/lg/lg.conf. Please note that the router password required is the remote login password, and NOT the privileged EXEC password aka 'enable' password.
<!-- Router Section --> <Separator>Sample Routers</Separator> <Router Name="Router-A"> <Title>Router-A</Title> <URL>telnet://login:routerPassword@routerIP</URL> <!--EXAMPLE <URL>telnet://login:firstname.lastname@example.org</URL> --> </Router> <Router Name="Router-B"> <Title>Router-B</Title> <URL>telnet://login:routerPassword@routerIP</URL> </Router>
The Looking Glass is now ready with minimum configuration. It can be accessed by entering the http://IP, or http://lg.example.tst in a web browser.
Here's a screenshot of the fresh Looking Glass.
Provisioning for IPv6
Preparing the Looking Glass for IPv6 is simple as well. The following lines are modified.
## $ipv4enabled-- is replaced with $ipv4enabled++ around line 398 ## ### Commented out $ipv4enabled-- #### $ipv4enabled++
Then the routers that support IPv6 are specified.
<Router Name="Router-A" EnableIPv6="Yes"> <Title>Router-A</Title> <URL>telnet://login:routerPassword@routerIP</URL> <!--EXAMPLE <URL>telnet://login:email@example.com</URL> --> </Router>
Any reachable IPv4 or IPv6 address that can be used for logging in to the router can be specified here as the IP address.
The following configuration is optional. However, they can help in giving the LG a professional look.
The logo image is stored in /var/www/html/images.
[root@lg ~]# cp logo.png /var/www/html/images/logo.png
<LogoImage Align="center" Link="http://www.companyweb.com/">/images/logo.png</LogoImage>
2. Page Headers
The headers of the page can modified as needed.
<HTMLTitle>ASXXXX IPv4 and IPv6 Looking Glass</HTMLTitle> <ContactMail>firstname.lastname@example.org</ContactMail>
#### In the closing section of the HTML tag i.e. </HTML>, the following line can be added#### <I> Please email questions or comments to <A HREF="mailto:$email">$email</A>. </I> <P> <P> Powered By: <a href="http://wiki.version6.net/LG">Looking Glass 1.9</a></P> </CENTER> </BODY> </HTML>
Needless to say, logging is important. The log file can be created this way.
[root@lg ~]# chown apache:apache /var/log/lg.log
Now the Looking Glass is up, and ready to be used.
Looking Glass Screenshots
The following are some screenshots from the Looking Glass of AS 132267.
Hope this helps.
Subscribe to Xmodulo
Do you want to receive Linux FAQs, detailed tutorials and tips published at Xmodulo? Enter your email address below, and we will deliver our Linux posts straight to your email box, for free. Delivery powered by Google Feedburner.
Did you find this tutorial helpful? Then please be generous and support Xmodulo!
Latest posts by Sarmed Rahman (see all)
- How to combine two graphs on Cacti - June 15, 2015
- How to set up NTP server in CentOS - April 27, 2015
- How to secure BGP sessions using authentication on Quagga - April 6, 2015