Wireguard

Wireguard 多行配置值

  • June 1, 2021

是否可以將配置命令拆分為多行而不是一個長字元串?

例如

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 格式,但對這個主題沒有幫助。

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’ 擴展為INTERFACE每個可以指定多次,在這種情況下,命令按順序執行

引用自:https://unix.stackexchange.com/questions/652100