ADSLルーターの作成
〜 rp-pppoeカーネルモード 〜

to home
[2003/09/23]

  1. 概 略
  2.  ちょっと前にRed Hat Linux 8.0 でADSLルーターを作成してみた。備忘録として書き留めて おこう。。
    フレッツADSLに加入したのが契機だったのだが、Pentium133MHzのPCでチャレンジ してみたくなった。あれこれと施行錯誤して結局は2ヶ月以上もかかってしまった。
     rp-pppoeをユーザーモードで動作させるだけなら数時間で完成するほど 楽チンなんだが、カーネルモードになると私には壁が高かった(笑)

  3. インストール
  4.  RHL 8.0 [サーバー]タイプでインストール。不要なものは削除。  で、必要なものは追加 .. このパッケージの選択に時間がかかる. でも結構好き。

  5. ネットワーク設定
  6. [/etc/sysconfig/network]に以下を追加
    【重要】GATEWAY は書かない

    [/etc/sysconfig/network-script/ifcfg-eth0] ... WAN側 (NTT ADSLモデムに接続)
    【重要】GATEWAY は書かない

    [/etc/sysconfig/network-script/ifcfg-eth1] ... LAN側
    【重要】GATEWAY は書かない

    [/etc/sysctl.conf]
    マシンの再起動時に IP フォワーディングが確実に有効になるように、以下の 行を /etc/sysctl.conf に追加してください。


    (*) 念のため

  7. メモリを節約
  8.  ルーターだけの機能しか持たせないのだけれど、24MBのメモリしかない マシンなんで節約します。 まずは不要なコンソールを起動しないようにします。
    [/etc/inittab]

    不要なモジュールは取り込まないようにしておきます。
    [/etc/modules.conf]
    ・usb 関連の記述を削除

  9. rp-pppoeインストール
  10.  まずはお試しということでrpmからインストールした。非常に楽でいい。
    adsl-setup では、


    [/etc/ppp/options]

    (参考まで)
    rp-pppoe の関連ファイル
    /etc/ppp/firewall-masq ファイアウォールタイプを MASUERADE を選択した時に実行される
    /etc/ppp/firewall-standalone STANDALONE
    ただし、これらは WANにつながる直前に実行されるため、 このスクリプト中でグローバルIPアドレスを獲得するのは無理なはなし。 もし、やりたければ、ppp の /etc/ppp/ip-up で行う。

    PC起動時の設定をchkconfigで行っておく。具体的には[adsl]を追加する。

    不要なデーモンがあれば off にしておく。
    sendmail, isdn, gpm ,apmd..

  11. iptables設定
    1. 簡易的にファイアーウォール
      lokkit で medium を選択.

    2. IP Masquerade 設定 (手動で)
      iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -j MASUERADE

    3. LAN内のWebサーバー(192.168.1.1)にWANからのhttpリクエストをフォワードするなら、
      iptables -t nat -A PREROUTING -p tcp -s ! 192.168.1.0/24 --dport 80 -j DNAT --to 192.168.1.1:80

    4. 保存 上記、2つを設定したら次回起動時に有効なようにしておく

                iptables-save > /etc/sysconfig/iptables
        

    (*) rp-pppoe の ユーザーモードでは MTU(Maximum Transfer Unit)の1500問題はないようだが、もし あるようなら、
    iptables -A FORWARD -o ppp+ -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

    ちなみに、カーネルモードで動作させたときは必須だ。 ifconfig で MTU 1454 とでるからといって安心してはだめ。

  12. LAN内のftpクライアントへの配慮
  13.  LAN内のftpクライアントで接続できない、または接続できても ファイル情報を獲得できない等の症状に対処するために、以下のモジュールをロード しておく

    起動時に modprobe でロードするようにすればよい。 私はちょっとカッコ悪いが、/etc/rc.d/rc.local でやっている

  14. DynamicDNSへの更新処理
  15.  DynamicDNS を使ってて、接続のたびにホストのIPアドレスを更新させたいとき /etc/ppp/ip-up.local に、そのコマンドを書く。

    ppp がグローバルと接続したときに /etc/ppp/ip-up が実行される。 ip-up の中で、ip-up.local が存在していればそれを実行するようになっている。 ユーザーでやりたいことがあれば、ip-up.local でやるべきで、ip-up 自体は 触るなと書いてある。

     で、再起動。

    2003/09/10 台風14号(気圧910hPa)という猛烈な台風の影響で、ブチブチ停電になった。 PCが7台がこの停電で無意味なブートを数回繰り返した。なかには 不幸にもブート途中に停電になったPCもいた。
    その影響で DynamicDNS への自動登録ができていないことが分かった。
    [原因]
    dyndnsupdate は 更新情報を /var/dyndnsupdate/ipchace に書き出すのだが、 どうやらかけないらしい。

    can't write to file: /var/dyndnsupdate/ipcache

    となっている。このファイルアクセスの途中で停電にやられたと推測できる。 /var を除くと ディレクトリ自体が存在していなかった。作ってやって、 /etc/ppp/ip-up.local を実行すると成功した。

  16. つづく..(カーネルモードにするためにカーネルからビルドして、rp-pppoeもビルドします)

to home

2004/01 by masu
e-mail: massun.masumoto@nifty.ne.jp
URL : http://member.nifty.ne.jp/~masumoto/