Build a dial up router

/ ホーム(H) / Linux(V) / AtermIT65 + ppxp + IP masquerade でダイアルアップルータを構築

About

PC 2 台で Aterm 1 個。Windows 端末から利用するときは USB、Linux 端末からは COM に繋いで利用していました。 しかし折角ある Linux 端末、今後の端末増加に備えて IP masquerade を利用してダイアルアップルータ化してみようと試みました。


PPxP version 0.99072807
前準備

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 の起動

PPxP には GUI なインターフェースもありますが、サーバー管理者たる物は CUI で設定します。

# ppxp
PPxP version 0.99072807
interface: tap0
ppxp>
ダイアルアップの初期設定

qdial を利用してダイアルアップ情報を登録します。 ppxp プロンプトに続いて qdial とタイプして設定画面を表示します。

Device Nameモデム(TA)を繋いでいるデバイス名。
Dial TypeISDN なので迷わず Isdn。
Phone Number(s)ISP から通知して貰ったダイアルアップ接続先の電話番号。
Login Nameダイアルアップユーザー名。
Login Passwordログインパスワード。
Password(again)パスワード確認用。入力ミスしたと思ったら C-u でやり直し。

More.. をクリックして詳細設定をします。

Authentication Protocol認証プロトコル。私の ISP は CHAP/MD5 を使用。
PPP ModePPP モード。よく分からないのでデフォルトの active のまま。
Modem Typeモデムの種類。こういう時に多くのユーザーを持つ Aterm を使ってて良かったなと思う。
Idle timeアイドル時間。オンデマンド接続の場合、TCP パケットが流れなくなってから自動切断するまでの秒数を指定。フレッツ・ISDN なのでここは特にいじっていない。
IP MasqueradeIP マスカレード。PPxP の IP マスカレードを利用縷々場合の範囲を入力。今回は ipchains で設定するので何もしない。
VJ compressionVJ 圧縮。不明なので OFF。
Create resolv.confresolv.conf の作成。ISP に接続した時専用の resolv.conf を作成して参照し、切断時にオリジナルに戻す。繋ぎっぱなしで自前 DNS を立てているのでココも OFF。
DNS ServersISP の 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
ipchains-1.3.9-3

カーネル 2.2.x 系では IP masquerade は ipchains を使用します。

IP フォワードの設定

まず 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)
IP masquerade の設定

以下のような転送ポリシーを持って設定します。アクセス制限は全て否定した後に許可する物を通すのが普通ですね。

# 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 などに書き加えます。


To Do

こうして書き出してみると転送ポリシーが怪しい。公開して大丈夫なのだろうか?


Reference

Linux Magazine March 2000
特集『ホームサーバを立てよう!』は随分と参考になりました。


/ ホーム(H) / Linux(V) / AtermIT65 + ppxp + IP masquerade でダイアルアップルータを構築

Copyright © Kazuhiro Yoshikawa (KaZ). All rights reserved.
Last modified .