Wireguard 多行配置值

lak*_*tak 3 wireguard

是否可以将配置命令拆分为多行而不是一个长字符串?

例如

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

当使用更多命令时,该行会变得很长且难以阅读。我想将其拆分,以便每个命令可以使用一行。就像是:

PostUp = iptables -A FORWARD -i %i -j ACCEPT; \
   iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

手册页说它基于 ini 格式,但对此主题没有任何帮助。

A.B*_*A.B 5

wg-quick命令是一个bash 脚本PostUp使用循环读取键(例如键)read -r可以防止使用\\\n 来分隔行。但阅读同一个脚本表明:

\n
\n
POST_UP=( )\n
Run Code Online (Sandbox Code Playgroud)\n
\n

将其声明为数组,并且:

\n
\n
          PostUp) POST_UP+=( "$value" ); continue ;;\n
Run Code Online (Sandbox Code Playgroud)\n
\n

向数组添加一个元素。

\n

eval然后稍后执行(函数中有一个命令execute_hooks):

\n
\n
execute_hooks "${POST_UP[@]}"\n
Run Code Online (Sandbox Code Playgroud)\n
\n

因此,可以通过多次使用相同的按键输入来分割多个命令(但不是任意行)。所以OP的例子会像这样工作:

\n
PostUp = iptables -A FORWARD -i %i -j ACCEPT\nPostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\n
Run Code Online (Sandbox Code Playgroud)\n

实际上手册页已经告诉了它:

\n
\n

\xe2\x80\xa2 PreUp、PostUp、PreDown、PostDown \xe2\x80\x94 脚本片段将由 bash(1) 在设置/拆除界面之前/之后\n执行,最常用于配置自定义 DNS选项或\n防火墙规则。特殊字符串“%i\”被扩展为INTERFACE。\n每个字符串都可以被指定多次,在这种情况下,命令将按顺序执行

\n
\n