nftables是用於替換iptables的數據包過濾框架,目前已在Centos、Debian等最新Linux系統發行版作為生產工具提供。相比較iptables,nftables優勢更明顯、支持對動態IP進行轉發、端口段轉發、自動檢測本機IP等,以配置文件保存轉發規則、對其設置更輕松。
前言:適用於centos8、redhat8、fedora31和支持nftables的debian系linux發行版如debian10;
項目地址:
https://github.com/arloor/nftables-nat-rust
1、一般情況下,Linux最新發行版會默認安裝nftables,使用以下命令關閉firewalld、關閉selinux、開啟內核端口轉發、安裝nftables;
service firewalld stop systemctl disable firewalld setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config sed -n '/^net.ipv4.ip_forward=1/'p /etc/sysctl.conf | grep -q "net.ipv4.ip_forward=1" echo 1 > /proc/sys/net/ipv4/ip_forward if [ $? -ne 0 ]; then echo -e "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p fi yum install -y nftables
2、下載可執行文件並賦予執行權限;
wget -O /usr/local/bin/nat https://zhujiget.com/wp-content/uploads/sh/dnat chmod +x /usr/local/bin/nat
3、創建systemd服務;
cat > /lib/systemd/system/nat.service <<EOF [Unit] Description=dnat-service After=network-online.target Wants=network-online.target [Service] ExecStart=/usr/local/bin/nat /etc/nat.conf LimitNOFILE=100000 Restart=always RestartSec=60 [Install] WantedBy=multi-user.target EOF
4、設置為開機啟動,並啟動該服務;
systemctl daemon-reload
systemctl enable nat
systemctl start nat
5、生成配置文件,也可以使用 vi /etc/nat.conf 命令添加刪除修改轉發規則;
cat > /etc/nat.conf <<EOF SINGLE,22222,6666,zhujiget.com RANGE,10000,20000,zhujiget.com EOF
注釋:
每行代表1個規則,行內以英文逗號分隔為4段內容
SINGLE:代表單端口轉發:本機22222端口轉發到遠程blog.tgae.xyz域名或IP的6666端口
SINGLE:代表端口段轉發:本機10000-20000轉發到遠程blog.tgae.xyz域名或IP的10000-20000端口
6、停止以及卸載命令
## 停止定時監聽域名解析地任務
service nat stop
## 清空nat規則
nft add table ip nat
nft delete table ip nat
## 禁止開機啟動
systemctl disable nat
以上Linux系統使用nftables進行端口轉發教程,支持DDNS動態IP/端口轉發設置的詳細內容。