1. 程式人生 > >build FRR on ubuntu

build FRR on ubuntu

packet nts blog local set use all read ast

https://github.com/FRRouting/frr/wiki/Building-FRR-on-Ubuntu-1404

Install required packages

Add packages:

apt-get install git autoconf automake libtool make gawk libreadline-dev    texinfo dejagnu pkg-config libpam0g-dev libjson-c-dev bison flex    python-pytest libc-ares-dev python3-dev

Add frr groups and user

sudo groupadd -g 92 frr
sudo groupadd -r -g 85 frrvty
sudo adduser --system --ingroup frr --home /var/run/frr/    --gecos "FRR suite" --shell /sbin/nologin frr
sudo usermod -a -G frrvty frr

Download Source, configure and compile it

(You may prefer different options on configure statement. These are just an example.)

git clone https://github.com/frrouting/frr.git frr
cd frr
./bootstrap.sh
./configure     --prefix=/usr     --enable-exampledir=/usr/share/doc/frr/examples/     --localstatedir=/var/run/frr     --sbindir=/usr/lib/frr     --sysconfdir=/etc/frr     --enable-pimd     --enable-watchfrr     --enable-ospfclient=yes     --enable-ospfapi=yes     --enable-multipath=64     --enable-user=frr     --enable-group=frr     --enable-vty-group=frrvty     --enable-configfile-mask=0640     --enable-logfile-mask=0640     --enable-rtadv     --enable-fpm     --enable-ldpd     --with-pkg-git-version     --with-pkg-extra-version=-MyOwnFRRVersion
make
make check
sudo make install

derek@kbox:~/share/frr$ autoreconf -i
.ibtoolize: error: AC_CONFIG_MACRO_DIRS([m4]) conflicts with ACLOCAL_AMFLAGS=-I m4
autoreconf: libtoolize failed with exit status: 1

在項目的根目錄下添加如下.gitattributes文件便可

*.sh     -crlf
*.ac     -crlf
*.am     -crlf

Create empty FRR configuration files

sudo install -m 755 -o frr -g frr -d /var/log/frr
sudo install -m 775 -o frr -g frrvty -d /etc/frr
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/zebra.conf
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/bgpd.conf
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/ospfd.conf
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/ospf6d.conf
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/isisd.conf
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/ripd.conf
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/ripngd.conf
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/pimd.conf
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/ldpd.conf
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/nhrpd.conf
sudo install -m 640 -o frr -g frrvty /dev/null /etc/frr/vtysh.conf

nable IP & IPv6 forwarding

Edit /etc/sysctl.conf and uncomment the following values (ignore the other settings)

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
net.ipv6.conf.all.forwarding=1

Reboot or use sysctl -p to apply the same config to the running system ### Install the init.d service

sudo install -m 755 tools/frr /etc/init.d/frr
sudo install -m 644 tools/etc/frr/daemons /etc/frr/daemons
sudo install -m 644 tools/etc/frr/daemons.conf /etc/frr/daemons.conf
sudo install -m 644 -o frr -g frr tools/etc/frr/vtysh.conf /etc/frr/vtysh.conf

Enable daemons

Edit /etc/frr/daemons and change the value from "no" to "yes" for those daemons you want to start by systemd. For example.
zebra=yes
bgpd=yes
ospfd=yes
ospf6d=yes
ripd=yes
ripngd=yes
isisd=yes

Start the init.d service

  • sudo /etc/init.d/frr start
  • use /etc/init.d/frr status to check its status.

vtysh

  • sudo vtysh
derek@kbox:~$ sudo vtysh
[sudo] password for derek: 

Hello, this is FRRouting (version 3.1-dev-MyOwnFRRVersion-gff9eb72).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

This is a git build of frr-3.1-dev-699-g4ff9eb72
Associated branch(es):
        local:master
        github/frrouting/frr.git/master

kbox# show version
FRRouting 3.1-dev-MyOwnFRRVersion-gff9eb72 (kbox).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
This is a git build of frr-3.1-dev-699-g4ff9eb72
Associated branch(es):
        local:master
        github/frrouting/frr.git/master

configured with:
     --prefix=/usr --enable-exampledir=/usr/share/doc/frr/examples/ --localstatedir=/var/run/frr --sbindir=/usr/lib/frr‘...

build FRR on ubuntu