趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。
RSS icon
  • Debianで起動時にFreenet6に接続する

    投稿日 2011年 3月 3日 コメントはありません

    現在の状態では、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を設定変更します。