Значение конфигурации многоканальной защиты Wireguard

Значение конфигурации многоканальной защиты Wireguard

Можно ли разделить команду конфигурации на несколько строк вместо одной длинной строки?

Например

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

При использовании большего количества команд строка становится очень длинной и нечитаемой. Я бы хотел разделить ее, чтобы использовать одну строку на команду. Что-то вроде:

PostUp = iptables -A FORWARD -i %i -j ACCEPT; \
   iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

На странице руководства сказано, что он основан на формате INI, но никакой справки по этой теме нет.

решение1

Команда wg-quick— этоbash-скрипт. Цикл чтения ключей (таких как PostUpключ) использует read -r, что предотвращает любое использование \ для разделения строк. Но чтение этого же скрипта показывает:

POST_UP=( )

объявить его как массив, и:

          PostUp) POST_UP+=( "$value" ); continue ;;

для добавления элемента в массив.

evalЗатем он выполняется позже ( в функции есть команда execute_hooks):

execute_hooks "${POST_UP[@]}"

Таким образом, можно разделитьнесколько команд(но нетпроизвольные линии) с помощью многократного использования одного и того же ключевого ввода. Так что пример OP будет работать так:

PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

На самом делестраница руководствауже говорит это:

• PreUp, PostUp, PreDown, PostDown — фрагменты скриптов, которые будут выполнены bash(1) до/после настройки/демонтажа интерфейса, чаще всего используются для настройки пользовательских параметров DNS или правил брандмауэра. Специальная строка `%i' расширяется доИНТЕРФЕЙС. Каждый из них может быть указан несколько раз, в этом случае команды выполняются в следующем порядке:.

Связанный контент