PC 2 台で Aterm 1 個。Windows 端末から利用するときは USB、Linux 端末からは COM に繋いで利用していました。 しかし折角ある Linux 端末、今後の端末増加に備えて IP masquerade を利用してダイアルアップルータ化してみようと試みました。
PPxP もそれに付随する ethertap も Vine Linux 2.0(FTP) をインストールした状態のままを利用しています。 まずはダイアルアップできる環境を作らねばなりません。
PPxP を実行するユーザー(yoshikaw)がモデム(TA)を接続するシリアルポートにアクセスできるように、 実行ユーザーを uucp グループに加え、デバイスファイル(/dev/ttyS*)の属性を uucp に変更します。
# vigr (略) uucp::14:uucp,yoshikaw ←ユーザー yoshikaw を uucp グループに追加 (略)
次にデバイスファイルの所有者を変更します。
# chmod 0660 /dev/ttyS* # chgrp uucp /dev/ttyS*
デバイス名でモデムにアクセスできるようにシンボリックリンクを張ります。 (モデムが COM1 に繋がっている場合。COM2 であれば ttyS1。)
# ln -s /dev/ttyS0 /dev/modem
PPxP には GUI なインターフェースもありますが、サーバー管理者たる物は CUI で設定します。
# ppxp PPxP version 0.99072807 interface: tap0 ppxp>
qdial を利用してダイアルアップ情報を登録します。 ppxp プロンプトに続いて qdial とタイプして設定画面を表示します。
Device Name | モデム(TA)を繋いでいるデバイス名。 |
---|---|
Dial Type | ISDN なので迷わず Isdn。 |
Phone Number(s) | ISP から通知して貰ったダイアルアップ接続先の電話番号。 |
Login Name | ダイアルアップユーザー名。 |
Login Password | ログインパスワード。 |
Password(again) | パスワード確認用。入力ミスしたと思ったら C-u でやり直し。 |
More.. をクリックして詳細設定をします。
Authentication Protocol | 認証プロトコル。私の ISP は CHAP/MD5 を使用。 |
---|---|
PPP Mode | PPP モード。よく分からないのでデフォルトの active のまま。 |
Modem Type | モデムの種類。こういう時に多くのユーザーを持つ Aterm を使ってて良かったなと思う。 |
Idle time | アイドル時間。オンデマンド接続の場合、TCP パケットが流れなくなってから自動切断するまでの秒数を指定。フレッツ・ISDN なのでここは特にいじっていない。 |
IP Masquerade | IP マスカレード。PPxP の IP マスカレードを利用縷々場合の範囲を入力。今回は ipchains で設定するので何もしない。 |
VJ compression | VJ 圧縮。不明なので OFF。 |
Create resolv.conf | resolv.conf の作成。ISP に接続した時専用の resolv.conf を作成して参照し、切断時にオリジナルに戻す。繋ぎっぱなしで自前 DNS を立てているのでココも OFF。 |
DNS Servers | ISP の DNS サーバを入力。 |
一通りの設定が完了したら <Back> を押して前の画面に戻り、<Save...> を押して設定を保存します。 設定ファイルは分かり易い名前にしましょう。私の場合は win-ip。
先の設定で接続できるか確認します。qdial の画面から <Dial> をクリックします。 画面は先ほどの ppxp> プロンプトに戻り、ダイアルアップ処理が開始されます。 プロンプトが PPXP> と全て大文字になれば接続成功です。
接続を切断するには disconnect、PPxP を終了するには quit、 PPxP プロンプトを抜けるには bye コマンドを使用します。
ちなみにプロンプト各文字はそれぞれ以下のような意味があり、 接続できない場合の手がかりになります。 それにしても小文字→大文字、で状況を表すなんてすごいセンスだなぁと思います。
p | ダイヤリング中(Dial) |
---|---|
p | 接続中(Chat) |
x | ユーザー認証中(Auth) |
p | ネットワーク設定中(Network) |
今回はダイアルアップルータとして利用したいので、 要求があったら接続し、暇になったら切断するように設定します。 PPxP のターミナルで次のように設定します。
ppxp> auto on
ここまでの設定が完了すれば、以降 ppxp 起動時に設定ファイルを読み込んでオンデマンド接続をするようにコマンドラインで PPxP を実行します。
(書式: ppxp <設定ファイル名> -C <任意のコマンド>)
このコマンドを rc.local などに記述しておくと楽です。
$ ppxp win-ip -C auto on
カーネル 2.2.x 系では IP masquerade は ipchains を使用します。
まず IP masquerade を使用するには IP フォワード機能をオンにしなければなりません。 /etc/sysconfig/network の FORWARD_IPV4 の値を yes に変えます。
NETWORKING=yes FORWARD_IPV4=yes HOSTNAME=netvine
変更したらネットワークを再起動します。
# /etc/rc.d/init.d/network restart
再起動したら、IP フォワードが機能しているか確認します。
# cat /proc/sys/net/ipv4/ip_forward 1
1 が表示されれば機能しています。0 が表示される場合は設定を見直して下さい。 以下のように強制的に変更することもできますが...
# echo 1 > /proc/sys/net/ipv4/ip_forward
FTP、IRC、RealAudio などのアプリケーションが使用するパケットはそのままでは IP masquerade 越しに利用することが出来ません。 これらのアプリケーションを利用するために、それぞれ必要なモジュールを読み込みます。 FTP、CU-SeeMe、IRC、RealAudio、VDO Live についてのモジュールはデフォルトでインストールされていますのでこれらモジュールを読み込みます。
# /sbin/depmod -a # /sbin/modprobe ip_masq_ftp.o # /sbin/modprobe ip_masq_irc.o # /sbin/modprobe ip_masq_raudio.o # /sbin/modprobe ip_masq_cuseeme.o # /sbin/modprobe ip_masq_vdolive.o
モジュールが読み込まれたか確認します。
# lsmod
Module Size Used by
smbfs 25784 1 (autoclean)
ethertap 2124 1 (autoclean)
ip_masq_vdolive 1072 0 (unused)
ip_masq_cuseeme 816 0 (unused)
ip_masq_raudio 2736 0 (unused)
ip_masq_irc 1360 0 (unused)
ip_masq_ftp 3984 0
eepro100 12112 1 (autoclean)
以下のような転送ポリシーを持って設定します。アクセス制限は全て否定した後に許可する物を通すのが普通ですね。
# ipchains -A forward -s 192.168.1.0/24 -d 0.0.0.0 -j MASQ # ipchains -P forward DENY
tap0 は外部ネットワークへと繋がっているデバイス名。
# ipchains -A forward -i tap0 -p tcp -s 192.168.1.0/0 137:139 -d 0/0 1024:65535 -j DENY # ipchains -A forward -i tap0 -p udp -s 192.168.1.0/0 137:139 -d 0/0 1024:65535 -j DENY
最後に modprobe と ipchains の設定を /etc/rc.d/rc.local などに書き加えます。
こうして書き出してみると転送ポリシーが怪しい。公開して大丈夫なのだろうか?
Linux Magazine March 2000
特集『ホームサーバを立てよう!』は随分と参考になりました。