如何配置IPTABLE的NFTABLES CAPEROR
本文将展示如何在Linux盒上安装nftables,以作为防火墙和互联网网关。
如何构建带有nftables的Linux内核,如何安装Nftables使用空间以及IT的依赖关系以及NFT实用程序来执行网络过滤和IP地址转换。
nftables项目旨在通过更新的一个和用户空间工具,nft,替换当前的NetFilter工具,例如iptables,Eptables,Agptable和内核空间基础设施,NFT具有简化和清洁的语法,但保持了本质我们现在使用的工具。
检查你的内核
nftables自内核3.13以来在Linux内核树上,我们只需使用通常的内核配置工具和构建它来启用相对于NFTABLE的符号。
但是,Masquerade和重定向网络地址转换目标分别在内核3.18和3.19中引入,并且期望NAT。
使用以下命令获取内核发布号码
uname -r
要检查是否已编译NF_Tables模块,请尝试此操作
modinfo nf_tables
我们应该查看与模块相关的信息,但如果我们收到错误,则需要另一个内核。
构建一个兼容的内核的nftables
让我们编译内核4.2,它是我写这个的最新稳定内核,并拥有我们所需要的nftables。
输入/usr/src
cd /usr/src
从kernel.org下载Linux内核的XZ包
wget --no-check-certificate https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.2.tar.xz
提取XZ包上的源
tar Jxvf linux-4.2.tar.xz
移动旧Linux内核树
mv linux linux-old
创建新的Linux树的链接
ln -s linux-4.2 linux
将旧的.config复制到新内核树
cp linux-old/.config linux/.config
然后输入Linux内核树
cd linux
现在使用OldDefConfig目标为新内核进行准备,为新内核进行准备,这维护了当前的内核设置并将新符号设置为默认值。
make olddefconfig
现在,使用menuconfig选项浏览校舍的菜单并遵循与nftables相关的选项
make menuconfig
网络支持
网络选项
网络数据包过滤框架(NetFilter)
核心NetFilter配置
启用NetFilter NF_Tables支持和相关模块
启用NFTABLE和相关模块
现在上升一个级别,返回主要的NetFilter设置并输入IP:NetFilter配置
输入IPv4 NetFilter设置
在那里,我们可以为NF_Tables和伪装和重定向目标启用NAT链。
为IPv4启用NFTABLE NAT支持
我们现在已经使用了Nftables,记得检查是否有关特定需求的任何内核设置不会丢失并保存.config
然后制作并制作模块
make && make modules
手动将内核安装到/启动,因此如果我们错过了一些问题,我们可以使用旧内核。
cp arch/x86_64/boot/bzImage /boot/vmlinuz-4.2
cp system.map /boot/system.map-4.2
cp .config /boot/config-4.2
安装内核模块
make modules_install
boot子
有些设置可能需要初始ramdisk启动,因此如果根分区位于LVM下,RAID或者根文件系统的模块未构建内核。
以下示例创建压缩的ramdisk文件/boot/initrd-4.2gz,这将等待8秒钟在vGroup逻辑卷组的rootfs分区上引导,它将加载来自内核4.2.0的XFS和Ext4文件系统的模块
mkinitrd -w 8 -c-c -f ext4-m ext4:xfs -l -r/dev/vgroup/rootfs -k 4.2.0 -o /boot/initrd-4.2.gz
如果我们有一个,请为引导加载程序添加一个新选项,如果我们有一个,请指向内核和ramdisk;在lilo上,我们应该在/etc/lilo.conf中添加这样的内容
image = /boot/vmlinuz-4.2 root = /dev/vgroup/rootfs label = linux-4.2 initrd = /boot/initrd-4.2.gz read-only
系统重新启动后,再次检查模块。
modinfo nf_tables
ModInfo NF_Tables.
我们应该看到类似于上面的图像的内容,否则,尝试查看上面的步骤并尝试将所有NetFilter相关符号标记为模块。
之后,制作和安装这些模块
make modules && make modules install
安装NFT工具
现在是时候安装nftables用户空间实用程序,nft,更换传统的iptables及其朋友,但在我们做到之前,我们需要安装所需的共享库来构建NFT本身。
GMP - GNU多重精度算术库下载并提取包
wget https://gmplib.org/download/gmp/gmp-6.0.0a.tar.xz tar Jxvf gmp-*
构建和安装
cd gmp* && ./configure && make && make install
Libreadline - GNU Readline库
如果我们计划在交互模式下使用NFT,我们将需要此库,这是可选的未在此处介绍。
下载,提取和输入源树。
wget ftp://ftp.gnu.org/gnu/readline/readline-6.3.tar.gz && tar zxvf readline * && cd Readline *
配置它以使用NCURSES,然后进行制作并安装。
./configure --with-curses && make && make安装
用于网络链接开发人员的libmnl minimalistic用户空间库
下载,扩展和输入源树
wget http://www.netfilter.org/projects/libmnl/files/libmnl-1.0.3.tar.bz2 && tar jxvf libmnl- * && cd libmnl- *
配置,制作和安装
./configure && make && make install
libnftnl.
下载,提取和输入源树
wget http://www.netfilter.org/projects/libnftnl/files/libnftnl-1.0.3.tar.bz2 && tar jxvf libnftnl* && cd libnftnl*
配置制作和安装。
./configure && make && make install
建立并安装nft
下载,提取并输入源树。
wget http://www.netfilter.org/projects/nftables/files/nftables-0.4.tar.bz2 && tar jxvf nftables*
然后配置,制作和安装
./configure && make && make install
请注意,我们可以使用 - 配置脚本--without-cli标志,它将禁用交互式命令行界面和Readline库的需要。
使用nftables.
首先,你可以做的,是加载IPv4网络的基本模板表,可以在NFT工具源树上找到,当然你可以用手做,但请记住,这总是一个好主意确实开始简单。
加载IPv4过滤表定义
nft -f files/nftables/ipv4-filter
加载NAT表
nft -f files/nftables/ipv4-nat
加载也是一个好主意
nft -f files/nftables/ipv4-mangle
现在列出你的表
nft list tables
将任何新数据包放在此机器上
nft add rule filter input ct state new drop
接受来自与既定连接相关的数据包
nft add rule filter input ct state related,established accept
大多数Linux系统运行openssh,它是一个好主意接受与TCP端口22的连接,因此我们可以访问SSH服务。
nft insert rule filter input tcp port 22 accept
现在列出表,并查看事物的方式
nft list table filter
执行网络地址转换(NAT)
创建规则以翻译来自网络的IP地址192.168.1.0/24并在发送之前计算。
nft add rule nat postrouting ip saddr 192.168.1.0/24 counter masquerade
看看你的规则,这次追加'-a'标志来获得更多细节,你会看到
nft list table nat -a
启用转发
我们还需要在内核上启用IP转发
sysctl -w net.ipv4.ip_forward=1
要在启动时启用转发,请将以下句子放在/etc/sysctl.conf文件中,这可能需要在某些发行版上创建。
net.ipv4.ip_forward=1
我们还可以通过proc文件系统启用转发,运行以下命令执行此操作,并将其放在RC脚本的末尾,如RC.local,以在启动时启用转发
echo 1 > /proc/sys/net/ipv4/ip_forward
保存表格
要保存设置,请将列表命令的输出重定向到文件
保存过滤表
nft list table filter -a > /etc/firewall.tables
现在添加NAT表,请注意我们使用">"两次。
nft list table nat -a >> /etc/firewall.tables
然后添加剪辑表
nft list table mangle -a >> /etc/firewall.tables
现在我们只需要在系统启动时加载此文件
nft -f /etc/firewall.tables