Wireguard マルチライン設定値

Wireguard マルチライン設定値

構成コマンドを 1 つの長い文字列ではなく、複数の行に分割することは可能ですか?

例えば

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

より多くのコマンドを使用すると、行が非常に長くなり、読みにくくなります。コマンドごとに 1 行を使用できるように分割したいと思います。次のようになります。

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

マニュアル ページには、ini 形式に基づいていると書かれていますが、このトピックに関するヘルプはありません。

答え1

コマンドwg-quickbashスクリプト. キー (キーなど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'は次のように展開されます。インターフェースそれぞれ複数回指定することができ、その場合コマンドは順番に実行されます。

関連情報