forked from Mirror/frr
120 lines
3.9 KiB
Markdown
120 lines
3.9 KiB
Markdown
![]() |
Building FRR on CentOS 7 from Git Source
|
||
|
========================================
|
||
|
|
||
|
CentOS 7 restrictions:
|
||
|
----------------------
|
||
|
|
||
|
- MPLS is not supported on `CentOS 7` with default kernel. MPLS requires
|
||
|
Linux Kernel 4.5 or higher (LDP can be built, but may have limited use
|
||
|
without MPLS)
|
||
|
|
||
|
Install required packages
|
||
|
-------------------------
|
||
|
|
||
|
Add packages:
|
||
|
|
||
|
sudo yum install git autoconf automake libtool make gawk readline-devel \
|
||
|
texinfo net-snmp-devel groff pkgconfig json-c-devel pam-devel \
|
||
|
bison flex pytest
|
||
|
|
||
|
Get FRR, compile it and install it (from Git)
|
||
|
---------------------------------------------
|
||
|
|
||
|
**This assumes you want to build and install FRR from source and not using any packages**
|
||
|
|
||
|
### Add frr groups and user
|
||
|
|
||
|
sudo groupadd -g 92 frr
|
||
|
sudo groupadd -r -g 85 frrvt
|
||
|
sudo useradd -u 92 -g 92 -M -r -G frrvt -s /sbin/nologin \
|
||
|
-c "FRR FreeRangeRouting suite" -d /var/run/frr frr
|
||
|
|
||
|
### Download Source, configure and compile it
|
||
|
(You may prefer different options on configure statement. These are just an example.)
|
||
|
|
||
|
You may want to pay special attention to `/usr/lib64` paths and change them if you are not building on a x86_64 architecture
|
||
|
|
||
|
git clone https://github.com/freerangerouting/frr.git frr
|
||
|
cd frr
|
||
|
git checkout stable/2.0
|
||
|
./bootstrap.sh
|
||
|
./configure \
|
||
|
--sysconfdir=/etc/frr \
|
||
|
--libdir=/usr/lib64/frr \
|
||
|
--libexecdir=/usr/lib64/frr \
|
||
|
--localstatedir=/var/run/frr \
|
||
|
--enable-snmp=agentx \
|
||
|
--enable-multipath=64 \
|
||
|
--enable-ospfclient=yes \
|
||
|
--enable-ospfapi=yes \
|
||
|
--enable-user=frr \
|
||
|
--enable-group=frr \
|
||
|
--enable-vty-group=frrvt \
|
||
|
--enable-rtadv \
|
||
|
--disable-exampledir \
|
||
|
--enable-watchfrr \
|
||
|
--enable-tcp-zebra \
|
||
|
--enable-fpm \
|
||
|
--with-pkg-git-version \
|
||
|
--with-pkg-extra-version=-MyOwnFRRVersion
|
||
|
make
|
||
|
make check
|
||
|
sudo make install
|
||
|
|
||
|
### Create empty FRR configuration files
|
||
|
sudo mkdir /var/log/frr
|
||
|
sudo mkdir /etc/frr
|
||
|
sudo touch /etc/frr/zebra.conf
|
||
|
sudo touch /etc/frr/bgpd.conf
|
||
|
sudo touch /etc/frr/ospfd.conf
|
||
|
sudo touch /etc/frr/ospf6d.conf
|
||
|
sudo touch /etc/frr/isisd.conf
|
||
|
sudo touch /etc/frr/ripd.conf
|
||
|
sudo touch /etc/frr/ripngd.conf
|
||
|
sudo touch /etc/frr/pimd.conf
|
||
|
sudo chown -R frr:frr /etc/frr/
|
||
|
sudo touch /etc/frr/vtysh.conf
|
||
|
sudo chown frr:frrvt /etc/frr/vtysh.conf
|
||
|
sudo chmod 640 /etc/frr/*.conf
|
||
|
|
||
|
### Enable IP & IPv6 forwarding
|
||
|
|
||
|
Create a new file `/etc/sysctl.d/90-routing-sysctl.conf` with the following content:
|
||
|
|
||
|
# Sysctl for routing
|
||
|
#
|
||
|
# Routing: We need to forward packets
|
||
|
net.ipv4.conf.all.forwarding=1
|
||
|
net.ipv6.conf.all.forwarding=1
|
||
|
|
||
|
**Reboot** or use `sysctl` to apply the same config to the running system
|
||
|
|
||
|
### Install Service files
|
||
|
sudo install -p -m 644 redhat/zebra.service /usr/lib/systemd/system/zebra.service
|
||
|
sudo install -p -m 644 redhat/isisd.service /usr/lib/systemd/system/isisd.service
|
||
|
sudo install -p -m 644 redhat/ripd.service /usr/lib/systemd/system/ripd.service
|
||
|
sudo install -p -m 644 redhat/ospfd.service /usr/lib/systemd/system/ospfd.service
|
||
|
sudo install -p -m 644 redhat/bgpd.service /usr/lib/systemd/system/bgpd.service
|
||
|
sudo install -p -m 644 redhat/ospf6d.service /usr/lib/systemd/system/ospf6d.service
|
||
|
sudo install -p -m 644 redhat/ripngd.service /usr/lib/systemd/system/ripngd.service
|
||
|
sudo install -p -m 644 redhat/pimd.service /usr/lib/systemd/system/pimd.service
|
||
|
sudo install -p -m 644 redhat/frr.sysconfig /etc/sysconfig/frr
|
||
|
sudo install -p -m 644 redhat/frr.logrotate /etc/logrotate.d/frr
|
||
|
|
||
|
### Register the systemd files
|
||
|
sudo systemctl preset zebra.service
|
||
|
sudo systemctl preset ripd.service
|
||
|
sudo systemctl preset ospfd.service
|
||
|
sudo systemctl preset bgpd.service
|
||
|
sudo systemctl preset ospf6d.service
|
||
|
sudo systemctl preset ripngd.service
|
||
|
sudo systemctl preset pimd.service
|
||
|
|
||
|
### Enable required daemons at startup
|
||
|
Only enable zebra and the daemons which are needed for your setup
|
||
|
|
||
|
sudo systemctl enable zebra
|
||
|
sudo systemctl enable ospfd
|
||
|
sudo systemctl enable bgpd
|
||
|
[...] etc (as needed)
|