Debianで起動時にFreenet6に接続する

現在の状態では、Debianは起動後に手動で /usr/local/gogoc/bin/gogoc を起動しなければならないのですが、これを自動化したいと思います。

そこで、Debianの起動スクリプトを作ります。ここ(@IT)にあるのを雛形に、以下のようなファイルを作りました。

#!/bin/bash
setip6tables() {
    ip6tables -P INPUT DROP
    ip6tables -P FORWARD DROP
    ip6tables -P OUTPUT ACCEPT
    ip6tables -F
    ip6tables -Z
    ip6tables -X
    ip6tables -N ufw6-after-forward
    ip6tables -N ufw6-after-input
    ip6tables -N ufw6-after-logging-forward
   :
   :(長いので中略)
   :
    ip6tables -A ufw6-before-output -m state --state RELATED,ESTABLISHED -j ACCEPT
    ip6tables -A ufw6-before-output -j ufw6-user-output
    ip6tables -A ufw6-skip-to-policy-forward -j DROP
    ip6tables -A ufw6-skip-to-policy-input -j DROP
    ip6tables -A ufw6-skip-to-policy-output -j ACCEPT
    ip6tables -A ufw6-track-output -p tcp -m state --state NEW -j ACCEPT
    ip6tables -A ufw6-track-output -p udp -m state --state NEW -j ACCEPT
}
clearip6tables() {
    ip6tables -P INPUT DROP
    ip6tables -P FORWARD DROP
    ip6tables -P OUTPUT DROP
    ip6tables -F
    ip6tables -Z
    ip6tables -X
}
start() {
    echo -e "Set ip6tables: "
    setip6tables
    echo -e "Starting gogoc Freenet6 client: "
    /usr/local/gogoc/bin/gogoc -y -f /usr/local/gogoc/bin/gogoc.conf -r 180 &
    return 0
}
stop() {
#    killproc gogoc
    echo -e "Clear ip6tables: "
    clearip6tables
    return 0
}
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
esac

本来なら、ip6tablesの設定はわけた方が良さそうな気もしますが、ここに含めています。
また、gogoc(Freenet6クライアント)の停止のしかたがわからないので、代わりにip6tablesで全てをDROPする設定をするようにしました。

このファイルを /etc/init.d/gogoclient として root で保存し、ファイル属性を 700 に変更します。そして起動時に呼ばれるようにするため、update-rc.dを使って設定します。

# sudo update-rc.d gogoclient start 99 2 3 4 5 .
update-rc.d: warning: /etc/init.d/gogoclient missing LSB information
update-rc.d: see
Adding system startup for /etc/init.d/gogoclient …
/etc/rc2.d/S99gogoclient -> ../init.d/gogoclient
/etc/rc3.d/S99gogoclient -> ../init.d/gogoclient
/etc/rc4.d/S99gogoclient -> ../init.d/gogoclient
/etc/rc5.d/S99gogoclient -> ../init.d/gogoclient
#

再起動すると、自動的にFreenetに接続するようになります。なお、起動時はなぜか素直につながらないことが多いようですが、リトライするうちにつながるようです。

停止する際は、

# /etc/init.d/gogoclient stop

で全てのIPv6をブロックするようにip6tablesを設定変更します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)