FRR(1):Ubuntu环境上在LXC内安装FRR

新建一个lxc的Ubuntu容器,再进行下列操作。

1 安装环境依赖

sudo apt-get install \
   git autoconf automake libtool make libreadline-dev texinfo \
   pkg-config libpam0g-dev libjson-c-dev bison flex \
   libc-ares-dev python3-dev python3-sphinx \
   install-info build-essential libsnmp-dev perl \
   libcap-dev python2 libelf-dev libunwind-dev

2 安装pip

curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py

sudo python2 ./get-pip.py

查看安装是否成功

pip2 --version

3 编译libyang

git clone https://github.com/CESNET/libyang.git

cd libyang

git checkout v2.0.0

mkdir build

cd build

cmake -D CMAKE_INSTALL_PREFIX:PATH=/usr \
      -D CMAKE_BUILD_TYPE:String="Release" ..

make

sudo make install

注意:在执行cmake前,要安装cmake以及libpcre2-dev工具包,命令如下:

sudo apt-get install cmake

sudo apt-get install libpcre2-dev

4 安装 Protobuf, ZeroMQ

sudo apt-get install protobuf-c-compiler libprotobuf-c-dev

sudo apt-get install libzmq5 libzmq3-dev

5 配置FRR用户

sudo groupadd -r -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

6 编译安装FRR

git clone https://github.com/frrouting/frr.git frr

cd frr

./bootstrap.sh

./configure \
    --prefix=/usr \
    --includedir=\${prefix}/include \
    --bindir=\${prefix}/bin \
    --sbindir=\${prefix}/lib/frr \
    --libdir=\${prefix}/lib/frr \
    --libexecdir=\${prefix}/lib/frr \
    --localstatedir=/var/run/frr \
    --sysconfdir=/etc/frr \
    --with-moduledir=\${prefix}/lib/frr/modules \
    --with-libyang-pluginsdir=\${prefix}/lib/frr/libyang_plugins \
    --enable-configfile-mask=0640 \
    --enable-logfile-mask=0640 \
    --enable-snmp=agentx \
    --enable-multipath=64 \
    --enable-user=frr \
    --enable-group=frr \
    --enable-vty-group=frrvty \
    --with-pkg-git-version \
    --with-pkg-extra-version=-MyOwnFRRVersion

make

sudo make install

7 安装FRR配置文件

sudo install -m 775 -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 frrvty tools/etc/frr/vtysh.conf /etc/frr/vtysh.conf
sudo install -m 640 -o frr -g frr tools/etc/frr/frr.conf /etc/frr/frr.conf
sudo install -m 640 -o frr -g frr tools/etc/frr/daemons.conf /etc/frr/daemons.conf
sudo install -m 640 -o frr -g frr tools/etc/frr/daemons /etc/frr/daemons

8 修改配置文件

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

执行 sysctl -p 刷新 看到net.ipv4.ip_forward=1  net.ipv6.conf.all.forwarding=1即可

9 添加MPLS内核模块

首先在宿主机上加载必要的linux内核MPLS模块,直接分别在宿主机上运行如下命令:

sudo modprobe mpls_router
sudo modprobe mpls_gso
sudo modprobe mpls_iptunnel

查看模块是否加载成功

lsmod | grep mpls

 注意:以上命令在宿主机执行。

将这3个内核模块添加到容器的配置文件中,确保容器也能加载这些模块

sudo vi /etc/modules

添加如下内容:

# Load MPLS Kernel Modules
mpls_router
mpls_gso
mpls_iptunnel

在容器加载内核模块

modprobe mpls-router mpls_gso mpls-iptunnel

如果容器中执行以上命令出错,如下:

尝试使用命令

sudo apt-get install linux-modules-extra-`uname -r`-generic

如果执行失败,直接将`uname -r`直接改为报错的版本号,如下:

10 MPLS

修改配置文件,启用 MPLS 转发

sudo vi /etc/sysctl.conf

添加配置:

# Enable MPLS Label processing on all interfaces
net.mpls.conf.eth0.input=1
net.mpls.conf.eth1.input=1
net.mpls.conf.eth2.input=1
net.mpls.platform_labels=100000

注意:eth1,eth2网卡如果没有。需要注释掉

执行sysctl -p 刷新一次

11 安装服务文件

sudo install -m 644 tools/frr.service /etc/systemd/system/frr.service
# 设置开机自启
sudo systemctl enable frr

注意:命令在你创立的frr目录下进行

12 启动守护进程

修改配置文件

sudo vim /etc/frr/daemons

开启你需要的服务,设置为yes,且修改MAX_FDS=1024

13 启动FRR

# 启用
systemctl start frr
# 重启
systemctl restart frr

启动后可以使用netstat -nlpt看下端口是否正常。

默认守护程序的路径是/etc/frr/xxx.conf

14 测试frr

如果输入如下代码,可以进入编辑模式,则frr安装完毕

sudo vtysh

猜你喜欢

转载自blog.csdn.net/u013938578/article/details/129782030