PPPoEマルチセッションでフレッツ網に接続

1.はじめに

最近フレッツでは2つ同時に接続出来るマルチセッションに対応している
これを利用して1つは従来通りのプロバイダー、もう一つをフレッツ網に接続をトライして見る
条件として
・FirewallはIPFを使用の事
・固定IPで有る事
・ipnatを使用
・bindを使用
とします。

2.設定

特にインストールするソフトは無いので、設定に入る
設定ファイルは以下のとおりです
/etc/ppp/ppp.conf を編集する  (注)行頭のスペースは半角で必ず必要
default:
 set device PPPoE:Exl0                                     #WAN側のtun0デバイスに割り当てるIFカードを指定
 set MRU 1454
 set MTU 1454
 set log Phase Chat LCP IPCP CCP tun command
 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
 set ctsrts off
# add default HISADDR   # Add a (sticky) default route     #今までは全てでしたが条件によって分けるのでここでは指定しない
 accept PAP                                                #CHAPの方はCHAOにする
# enable dns                                               #DNSは自前のBINDを使用するので入れない

square:                                                    #フレッツ接続項目
 set authname guest@v4flets-east.jp
 set authkey guest
 add 123.107.190.0/24   HISADDR
 add 220.210.194.0/25   HISADDR
 add 220.210.198.0/26   HISADDR
 set server /var/run/square "" 0177

dion:                                                      #自分のプロバイダー設定
 set authname **********@bda.dion.ne.jp                    #ユーザー
 set authkey *******                                       #パスワード
 add default HISADDR                                       #square以外のはこちらを通る形になる、かならず後に書くこと
 set server /var/run/asahi "" 0177                         #pid指定
設定情報: ユーザーパス ルーティング

/etc/ipf.rules で以下のように700と800を追加
#################################################
# incomming (group 500) Flets Square tun1
#################################################
pass in on tun1 all head 700

   ・
   ・
  以下省略、オリジナルはグループ100を引用する
   ・
   ・

#################################################
# out going (group 600) Flets Square tun1
#################################################
pass out on tun1 all head 800

   ・
   ・
  以下省略、オリジナルはグループ200を引用する
   ・
   ・
編集したら反映させる。
# ipf -Fa -Z -f /etc/ipf.rules

/etc/ipnat.rules を下記のように修正
map tun0 192.168.0.0/24 -> 0/32 proxy port ftp ftp/tcp
map tun0 192.168.0.0/24 -> 0/32 portmap tcp/udp auto
map tun0 192.168.0.0/24 -> 0/32
map tun1 192.168.0.0/24 -> 0/32 portmap tcp/udp auto
map tun1 192.168.0.0/24 -> 0/32
反映は
# ipnat -CF -f /etc/ipnat.rules
で反映させる。

/etc/rc.conf のppp部分
ppp_enable="YES"       #もちろんYes
ppp_mode="ddial"        #ここも変らず
ppp_profile="dion"       #接続先
ppp_nat="NO"         #pppのnatではなくipnatを使用するのでここはNo

/usr/local/etc/rc.d/square.sh を新規作成
#! /bin/sh
ENTRY=square
PORT=/var/run/square
case "$1" in
start)
      /usr/sbin/ppp $ENTRY > /dev/null && echo -n " PPP"
      ;;
stop)
      /usr/sbin/pppctl $PORT quit all
      ;;
restart)
      /usr/sbin/pppctl $PORT close
      ;;
*)
      echo "Usage: `basename $0` {start|stop|restart}" >&2
      exit 64
      ;;
esac
      exit 0
これがあれば、自動で接続してくれます

あとは名前解決が必要になるのでresolv.confにflets側のDNSを追加します
/etc/resolv.conf
#search miyakoshi.mydns.jp
nameserver 127.0.0.1
nameserver プロバイダーのDNS1
nameserver プロバイダーのDNS2
nameserver 123.107.190.7
nameserver 123.107.190.8
options edns0
fletsのDNSはこちら

クライアントPCも解決できるようdhcpサーバーから伝えるDNSサーバーに追加する。
/usr/local/etc/dhcpd.conf
option domain-name-servers 192.168.0.1, プロバイダーのDNS, 123.107.190.7, 123.107.190.8;
そしてdhcpサーバーを再起動し反映しておく。

4.接続

記入ミスが無ければ再起動すれば接続します。
もしくは手動でsquare.shを実行して接続します。
接続状態をifconfigで確認して見ましょう。
# ifconfig
  中略
tun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1454
        options=80000<LINKSTATE>
        inet 114.193.***.*** --> 123.107.192.*** netmask 0xffffff00
        groups: tun
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
        Opened by PID *****
このようにtun2がフレッツ網になればOKです。

あとはルーティングがちゃんと行っているか確認する
$ netstat -rn -finet
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            ***.***.***.***    UGSc       11   448909   tun0
中略・・・
123.107.190.0/24   123.107.192.247    UGS        tun1
123.107.192.247    link#6             UHS        tun1
220.210.194.0/25   123.107.192.247    UGS        tun1
220.210.198.0/26   123.107.192.247    UGS        tun1
このようにtun2がフレッツ網の時使用されると言う形になればOKです

さて。これでうまくいくはずですので、まずはnslookupなどでwww.fletsなどを調べて見てください
ちゃんと帰って来ればあとはブラウザで開いて見れば問題無いはずです