フレッツADSLでインターネットへ接続

作成:

さて、前回の作業で、NICが使えるようになりました。 このままではLAN内での通信は可能ですが、インターネットへは接続できません。
PPPoEに対応した接続ソフトを使用して、ISPの認証を通してやっとインターネットへつなげることができます。
Yahoo!BBの場合は、そんなややこしい事をしなくてもモデムがPPPoEを搭載したブリッジで勝手に認証とかやってくれるので、 LANでつながっているように扱えるらしいです。(Yahoo!BBユーザでもないので、よく知りませんが・・・)

まあともかく、PPPoE接続ソフトですが、NTTが提供しているものもありますが、 広くLinuxで使われている、Roaring Penguin Software Inc.(吠えるペンギン?)のRP-PPPoEというソフトを使います。
http://www.roaringpenguin.com/pppoe/ にて、最新のバージョンがダウンロードできます。
VinePlus(ftpサーバの/VinePlus/2.1/RPMS/i386/) からも入手できますが、最新バージョンではありません。 (ビルドナンバーにvlの文字が入っているので、Project Vineのカスタム仕様かも知れません。 ということは、ひょっとしたら日本語化されてるのかな?とか思ったりもしますが・・・ まあ、それほど気にする必要はないでしょう、英語だって気合いを入れれば読めるし、 メジャーなソフトだからいろいろ日本語の解説サイトもあるし・・・)
最新バージョンはVine Linuxでは動かない、なんてことはありませんので、最新のものを利用します。

RP-PPPoEのインストール

とりあえず、何らかの方法でRP-PPPoEのRPMパッケージをLinux側に持っていきます。
そして、インストール

# rpm -ivh rp-pppoe-3.4-1.i386.rpm
エラー: 依存性の欠如:
        ppp >= 3.2.7は rp-pppoe-3.4-1 に必要とされています
# rpm -ivh ppp-2.4.0-2vl0.i386.rpm
ppp                    ##################################################
# rpm -ivh rp-pppoe-3.4-1.i386.rpm
rp-pppoe               ##################################################

はじめにrp-pppoeをインストールしようとすると「pppの3.2.7以上が必要じゃ、先に入れとかんかい!」と怒られました。 (RPMのメッセージもこれくらい砕けた言い方にして欲しい(笑))
どうやら、pppoeを使う上でpppの部分は既存のpppを使って処理をしているようですね。
Vine Linuxに採用さているpppツールはppxpなのでpppはインストールCDには含まれていませんが、 VinePlus(ftpサーバの/VinePlus/2.1/RPMS/i386/) においてあります。
(なんだかここの説明、pばっかり続いているから、非常に読みづらそう・・・)
とりあえず、pppをインストールしてその後rp-pppoeをインストールします。
とくに問題は起こりませんでした。

RP-PPPoEの設定

さて、RP-PPPoEをインストールすると、 /usr/sbin/に以下のようなコマンドが追加されている。
/usr/sbin/にはrootでログインするとパスが通っているので、フルパスで指定する必要はありません。

adsl-setupPPPoEの設定を行う
adsl-startPPPoEの接続の開始
adsl-connectPPPoEの接続の開始、 通常はadsl-startを使うようにmanに書かれている。違いはよく分からない(笑)
adsl-statusPPPoEの状態の表示
adsl-stopPPPoEの接続を切断

それでは、設定をしていきましょう。

# adsl-setup
Welcome to the Roaring Penguin ADSL client setup.  First, I will run
some checks on your system to make sure the PPPoE client is installed
properly...

Looks good!  Now, please enter some infomation:

USER NAME

>>> Enter your PPPoE user name (default bxxxnxnx@sympatico.ca):

はじめの方でシステムのチェックを行っています。
ここでは何もなく、チェックを通過して、ユーザー名の入力になります。
Windows版(XP以前)のPPPoEソフトでも同様ですが、このユーザ名は「ISPにもらったユーザ名@ISPドメイン」の様な形になります。
私の場合は・・・って、書くとやばいですね。
ここは特に考える必要もないので、さくっと次にいきましょう。

INTERFACE

>>> Enter the Ethernet interface connected to the ADSL modem
For Solaris, this is likely to be something like /dev/hme0.
For Linux, it will be ethn, where 'n' is a number.
(default eth1):

ここではインターネットへ接続するイーサネットデバイスの名前を指定します。
私の場合、eth0とeth1のデバイスがありますが、 eth0がインターネット側、eth1がLAN側と決めていましたので、 「eth0」と指定します。

Do you want the link to come up on demand, or stay up continuously?
If you want it to come up on demand, enter the idle time in seconds
after which the link should be dropped.  If you want the link to
stay up permanently, enter 'no' (two letters, lower-case.)
NOTE: Demand-activated links do not interact well with dynamic IP
addresses.  You may have some problems with demand-activated links.
>>> Enter the demand value (default no):

一定時間アクセスが無い場合に、接続を切るようにするかと聞いてきています。
切って欲しい場合は、アイドル時間を秒数で指定します。
サーバとして利用するのに、勝手に切られては困りますし、常時接続回線であればそんな必要はないですね。
(外に接続する時間を最小限にしてクラッカーから身を守ろうということも考えられますが、 よく考えるとこれもあんまり意味はないなぁ)
まあ、何はともあれ、特別な事情でもない限り「no」と答えておきます。

DNS

Please enter the IP address of your ISP's primary DNS server.
If your ISP claims that 'the server will provide DNS addresses',
enter 'server' (all lower-case) here.
If you just press enter, I will assume you know what you are
doing and not modify your DNS setup.
>>> Enter the DNS information here:

ISPに指定されたDNSのIPアドレスを入力します。
サーバから自動的に取得する場合は「server」と入力します。

Please enter the IP address of your ISP's secondary DNS server.
If you just press enter, I will assume there is only one DNS server.
>>> Enter the secondary DNS server address here:

IPアドレスを入力した場合は、セカンダリのDNSサーバのIPアドレスも入力するように言われます。

PASSWORD

>>> Please enter your PPPoE password:
>>> Please re-enter your PPPoE password:

アカウントのパスワードを入力します。
確認のためもう一度入力を促されます。

FIREWALLING

Please choose the firewall rules to use.  Note that these rules are
very basic.  You are strongly encouraged to use a more sophisticated
firewall setup; however, these will provide basic security.  If you
are running any servers on your machine, you must choose 'NONE' and
ser up firewalling yourself.  Otherwise, the firewall rules will deny
access to all standard servers like Web, e-mail, ftp, etc.  If you
are using SSH, the rules will block outgoing SSH connections which
allocate a privileged source port.

The firewall choices are:
0 - NONE: This script will not set any firewall rules.  You are responsible
          for ensuring the security of your machine.  You are STRONGLY
          recommended to use some kind of firewall rules.
1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation
2 - MASQUARADE: Appropriate for a machine acting as an Internet gateway
                for a LAN
>>> Choose a type of firewall (0-2):

ファイアウォールの設定です。
後で自分で設定する場合は、何もしない設定の「0 - NONE」を選択します。
スタンドアロンでサーバーを運用しない場合は、 自分からの接続要求による通信のみを通過させる設定の「1 - STANDALONE」を選択します。
IPマスカレードをする場合は、STANDALONEの設定+LAN内からの接続を通過させる設定の「2 - MASQUARADE」を選択します。
どの設定にするにしろ、後で細かい調整が必要です。
一応、この場では「2 - MASQUARADE」を選択します。

** Summary of what you entered **

Ethernet Interface:
User name:
Activate-on-demand:
Primary DNS:
Secondary DNS:
Firewalling:

>>> Accept these setting and adjust configuration files (y/n)?

最後に、これまで設定してきた情報が表示されます。
正しい場合は、設定ファイルに書き込む「yes」を選択します。

Adjusting /etc/ppp/pppoe.conf
Adjusting /etc/resolv.conf
  (But first backing it up to /etc/resolv.conf-bak)
Adjusting /etc/ppp/pap-secrets and /etc/ppp/chap-secrets
  (But first backing it up to /etc/ppp/pap-secrets-bak)
  (But first backing it up to /etc/ppp/chap-secrets-bak)

設定ファイルへ先ほどの作業内容が記録され、これで設定完了です。

接続&確認

設定が終わったところで、早速接続してみましょう。

# adsl-start
. Connected!

と、表示されれば接続成功です。
ADSLは結構不安定なので、設定がすべて正しくても接続に失敗する可能性もあります。
とりあえず、失敗したら、ケーブルはしっかり接続されているかなど、基本的な部分を見直して、 ADSLモデムを再起動してみたりしてみてください。

さて、実際に接続に成功したところで、いろいろ確認してみましょう。
まず、状態表示用のコマンド「adsl-status」を見てみましょう。

# adsl-status
adsl-status: Link is up and running on interface ppp0
ppp0 リンク方法:Point-to-Pointプロトコル
     inetアドレス:61.210.111.11 P-t-P:133.160.1334 マスク:255.255.255.255
     UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1454  Metric:1
     RXパケット:22 エラー:0 損失:0 オーバーラン:0 フレーム:0
     TXパケット:21 エラー:0 損失:0 オーバーラン:0 キャリア:0
     衝突(Collisions):0 TZキュー長:10

さてADSLの接続はeth0ではなくppp0というデバイスで行われているようです。 (当然、eth0とppp0が差す物理的なデバイスはは同じNICです)
そして、ppp0に割り当てられたIPアドレスは(一度切断すると変わってしまうのでこの場限りですが) この場合、61.210.111.11で、こいつと1対1でつながっている(ように見える)ISP側のルータのIPアドレスは133.160.133.4です。
実はこの表示は、ifconfigでppp0について表示させただけのものなのでifconfigとしても同じ情報が出てきます。

rp-pppoeの解説サイトではほとんどのところで、 接続に使うイーサネットデバイスは無効にしておかないといけないように書かれていますが、 同じ物理デバイスを異なるデバイスファイルが参照している形になっています。
また、以前設定したeth0がそのまま残っているのでこのデバイスは2つのIPアドレスを持っている事になります。 (おそらく一つのデバイスに複数のIPアドレスを割り当てられない(これはカーネルのリビルドのときに指定可能)場合は、 eth0を無効にしないといけないでしょう)

かなり前ですが(第1回までさかのぼる)NICの増設のときに、 「実はNIC1枚でもいい」みたいなことを書いたのはこういう事だったんです。
ISP側のルータとppp0が論理的に1対1で接続されているため、 LAN内部から外にアクセスするにはサーバを通らないといけないし、 当然外からはグローバルIPを持ったサーバにしかアクセスできないというわけです。 物理的にはつながっていながら、論理的に2つのネットワークが分離されているのです。
でも、物理的に分かれていないと管理する上で混乱してしまいかねないので、2枚で運用しています。 その方がカッコいいしね(笑)

次にルーティングテーブルを見てみましょう。

# netstat -r
カーネルIP経路テーブル
受信先サイト  ゲートウェイ  ネットマスク    フラグ  MSS Window  irtt インタ
ーフェース
133.160.133.4 *             255.255.255.255  UH       0 0          0 ppp0
192.168.2.0   *             255.255.255.0    U        0 0          0 eth0
192.168.1.0   *             255.255.255.0    U        0 0          0 eth1
127.0.0.0     *             255.0.0.0        U        0 0          0 lo
default       133.160.133.4 0.0.0.0          UG       0 0          0 ppp0

自動的にディフォルトゲートウェイが設定されています。

つぎに、外部のサーバにpingを送って見ましょう。(あんまりやると迷惑になるのでほどほどに)

# ping -c4  www.yahoo.co.jp
PING www.yahoo.co.jp (210.81.153.69) 送信元 61.210.111.11 : 56(84) bytes of
 data.
64 バイト応答 送信元 w09.yahoo.co.jp (210.81.153.69): icmp_seq=0 ttl=240 時
間=33.737ミリ秒
64 バイト応答 送信元 w09.yahoo.co.jp (210.81.153.69): icmp_seq=1 ttl=240 時
間=33.629ミリ秒
64 バイト応答 送信元 w09.yahoo.co.jp (210.81.153.69): icmp_seq=2 ttl=240 時
間=37.044ミリ秒
64 バイト応答 送信元 w09.yahoo.co.jp (210.81.153.69): icmp_seq=3 ttl=240 時
間=33.170ミリ秒

--- www.yahoo.co.jp ping 統計 ---
送信パケット数 4, 受信パケット数 4, パケット損失 0%
Rount-Trip 最小/平均/最大/mdev = 33.170/34.395/37.044/1.544ミリ秒

これで、インターネットへ接続できていることがはっきり分かりました。

というわけで、インターネットへの接続成功!!

補足:
起動時に自動的に実行するスクリプトを選択するのにntsysvというコマンドがあります。 rp-pppoeをインストールするとこの中にadslという項目が現れます。
これを選択すると起動時に自動的にADSL接続を行ってくれますが問題があります。 シャットダウンのときに接続を切ってくれないため、再起動すると接続ができなくなってしまうのです。

# chkconfig --del adsl
# chkconfig --add adsl

と、コマンドで直接指定すると、ちゃんとシャットダウン時に接続を切ってくれるようになります。
これはランレベルに対するON、OFFの指定の問題なようですが、よく分からないので解説しません(笑)