2007年2月16日アーカイブ

Fletsを使っていると、プロバイダとfletsのマルチセッションのpppoeを張りたくなる。
しかし、FreeBSDの/etc/rc.d/ppp スクリプトはマルチセッションには対応していないので、以下の方法を使うとマルチセッションにできる。(と思う、けど、なんと言ってもうちはOSの起動時にネットワーク系の初期化がうまくいかないので・・・。たぶん、jailに合わせてListenアドレスを限定しているせいだと思うんだけど)
前提条件は、以下。
  • プロバイダにtun0、fletsにtun1で繋ぐ。
  • ppp.confでのプロバイダのラベルはinternet、fletsはfletsとする。
  • プロバイダに繋ぐときのコントロールソケットは /var/tmp/internet
  • fletsに繋ぐときのコントロールソケットは /var/tmp/flets
で、手順。
  1. /etc/rc.d/ppp スクリプトの変更(プロバイダ用)
    *** /usr/src/etc/rc.d/ppp       Sat Nov  4 04:28:02 2006
    --- ppp Fri Feb 16 17:07:48 2007
    ***************
    *** 14,19 ****
    --- 14,20 ----
      command="/usr/sbin/${name}"
      start_precmd="ppp_precmd"
      start_postcmd="ppp_postcmd"
    + pidfile=/var/run/tun0.pid
    
      ppp_precmd()
      {
    ***************
    *** 36,41 ****
    --- 37,43 ----
            esac
    
            rc_flags="$rc_flags ${ppp_profile}"
    +       rm -f /var/tmp/internet
      }
    
      ppp_postcmd()
    
  2. /etc/rc.d/ppp-flets スクリプトの作成 /etc/rc.d/ppp を /etc/rc.d/ppp-flets としてコピーし、以下を変更する。
    *** ppp Fri Feb 16 17:07:48 2007
    --- ppp-flets   Fri Feb 16 17:10:43 2007
    ***************
    *** 9,20 ****
    
      . /etc/rc.subr
    
    ! name="ppp"
      rcvar=`set_rcvar`
    ! command="/usr/sbin/${name}"
      start_precmd="ppp_precmd"
      start_postcmd="ppp_postcmd"
    ! pidfile=/var/run/tun0.pid
    
      ppp_precmd()
      {
    --- 9,20 ----
    
      . /etc/rc.subr
    
    ! name="ppp_flets"
      rcvar=`set_rcvar`
    ! command="/usr/sbin/ppp"
      start_precmd="ppp_precmd"
      start_postcmd="ppp_postcmd"
    ! pidfile=/var/run/tun1.pid
    
      ppp_precmd()
      {
    ***************
    *** 36,43 ****
                    ;;
            esac
    
    !       rc_flags="$rc_flags ${ppp_profile}"
    !       rm -f /var/tmp/internet
      }
    
      ppp_postcmd()
    --- 36,43 ----
                    ;;
            esac
    
    !       rc_flags="$rc_flags ${ppp_profile_flets}"
    !       rm -f /var/tmp/flets
      }
    
      ppp_postcmd()
    
  3. /etc/rc.confにflets用の記述を追加(下2行)
    ppp_mode="ddial"
    ppp_nat="NO"
    ppp_enable="YES"
    ppp_profile="-unit0 internet"
    ppp_flets_enable="YES"
    ppp_profile_flets="-unit1 flets"
    
変更点を大雑把に説明すると、以下のような感じ。
  • デフォルトでは、commandのプロセスが起動しているかどうかを判定するので、代わりにpidファイルでチェックするように変更。
  • たまにpppの死に方によってコントロールソケットが残るので、rmするように変更。(本当は、rc.confの変数にする方がスマートだけど、スクリプトに直書き)

/etc/rc.subrのおかげで便利になってるんだろうけど、使い方がわかってないと恩恵にあずかれないね。本当はもっとスマートにできるのかも知れない。
2007年2月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28      

このアーカイブについて

このページには、2007年2月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2007年2月14日です。

次のアーカイブは2007年2月19日です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.1.1