所以,我知道我可以这样做,ufw allow from tun0 to tun0 port 36892
但是在使用 UFW 配置文件对多个端口进行类似操作时是否可以这样做
ports=tun0;36892|tun0;23976|tun0;19827
?
在这种情况下,假设 tun0 是 10.8.0.1。
答案1
一般答案
恐怕无法将网络接口添加到应用程序配置文件中,因为在“应用程序集成”部分下UFW 的手册页语法如下:
应用程序配置文件的语法是简单的 .INI 格式:
[<name>] title=<title> description=<description> ports=<ports>
并且没有提供接口指令。
手动创建规则
根据问题,有两种方法可以同时允许 TCP 和 UDP:
为每个端口分别添加规则:
sudo ufw allow in on tun0 to any port 36892 sudo ufw allow in on tun0 to any port 23976 sudo ufw allow in on tun0 to any port 19827
分别为每个协议添加规则:
sudo ufw allow in on tun0 to any port 36892,23976,19827 proto tcp sudo ufw allow in on tun0 to any port 36892,23976,19827 proto udp
为了仅允许从特定地址访问,请添加from 10.8.0.xxx
声明 - 例如:
sudo ufw allow in on tun0 from 10.8.0.110 to any port 36892,23976,19827 proto tcp
- 更多示例:UFW 基础知识:常见防火墙规则和命令。
创建应用程序配置文件并基于它创建规则
让我们创建一个新的配置文件,名为custom.ufw.profile
,位于/etc/ufw/applications.d/
。该文件的内容可能如下所示:
[CustomApp 1 Full]
title=The first Custom Application
description=Custom Application Description
ports=36892|23976|19827
[CustomApp 1 TCP]
title=The first Custom Application - TPC only
description=Custom Application Description
ports=36892,23976,19827/tcp
[CustomApp 1 UDP]
title=The first Custom Application - UDP only
description=Custom Application Description
ports=36892,23976,19827/udp
我们可以通过命令检查语法是否正确
ufw app info "app name"
:$ sudo ufw app info "CustomApp 1 Full" Profile: CustomApp 1 Full Title: The first Custom Application Description: Custom Application Description Ports: 36892 23976 19827
现在我们可以基于此配置文件创建新规则:
sudo ufw allow in on tun0 to any app "CustomApp 1 Full"
检查规则是否正确:
$ sudo ufw status numbered | grep CustomApp [10] CustomApp 1 Full on tun0 ALLOW IN Anywhere [20] CustomApp 1 Full (v6) on tun0 ALLOW IN Anywhere (v6)
创建自定义命令来自动执行规则启用/禁用过程
如果我们想要快速启用或禁用一些 UFW 规则,我们可以为此创建自定义命令。我们可以使用如下所示的函数:
function ufw-custom {
if ! ufw_loc="$(type -p "ufw")" || [ -z "$ufw_loc" ]; then
printf "\nUFW is not installed yet.\n\n"
elif [ "$1" = "enable" ]; then
sudo ufw allow in on tun0 to any port 36892
sudo ufw allow in on tun0 to any port 23976
sudo ufw allow in on tun0 to any port 19827
echo ""
sudo ufw reload
echo ""
sudo ufw status numbered
elif [ "$1" = "disable" ]; then
sudo ufw delete allow in on tun0 to any port 36892
sudo ufw delete allow in on tun0 to any port 23976
sudo ufw delete allow in on tun0 to any port 19827
echo ""
sudo ufw reload
echo ""
sudo ufw status numbered
else
echo ""
sudo ufw status numbered
printf "Use 'ufw-custom enable' or 'ufw-custom disable'.\n\n"
fi
}
export -f ufw-custom
将这些行放入文件末尾~/.bashrc
,然后source ~/.bashrc
。现在我们有一个名为的自定义命令,ufw-custom
它可以处理enable
或disable
作为参数。例如,要启用规则,请使用:
ufw-custom enable