Так, я знаю, что могу сделать ufw allow from tun0 to tun0 port 36892
но действительно ли возможно сделать что-то подобное при использовании профиля ufw для нескольких портов как ports=tun0;36892|tun0;23976|tun0;19827
?
В этом случае предположите, что tun0 10.8.0.1
Я - испуганный сетевой интерфейс добавления в профиль приложений, не возможно, потому что под разделом 'Application Integration' в странице руководства 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
Давайте создадим новый файл профиля, названный 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