mgetty+sendfax と pppd で ppp サーバを構築
(RedHat 7.3)

1998-08-?? に (Slackware で) 一度構築しましたが、
文書化してなかったのと、環境が変わったので書きました

2003-06-09 作成 福島
2003-08-12 更新 福島

mgetty のインストール・設定

$ tar xzf mgetty1.1.30-Dec16.tar.gz
$ cd mgetty-1.1.30
$ cp policy.h-dist policy.h

$ vi policy.h
#define DEVICE_GROUP          "uucp"           モデムを操作するグループ
#define DEFAULT_PORTSPEED     38400            モデムとの通信速度 (115200 等)
#define FAX_STATION_ID        "0120-110-110"   自分の FAX-ID (電話番号)
#define FAX_DIAL_PREFIX       "ATDT"           ダイヤル時の AT コマンド (ここではトーンを指定)
#define FAX_MODEM_TTYS        "ttyS2"          モデムのポート (乱暴だが、kermit で at コマンドを打てば自分が繋いだポートがわかる
※この設定は  /usr/local/etc/mgetty+sendfax/mgetty.config  /usr/local/etc/mgetty+sendfax/sendfax.config  に反映されます
$ vi logfile.c
/*extern char *sys_errlist[];*/   /* linux is comment out */  Linux では二重定義エラーを避けるためにコメントアウト
$ vi Makefile
CFLAGS=-O2 -Wall -pipe -DAUTO_PPP   PPP を有効にする
$ make $ su # useradd fax PPP なので fax は使わないが、うるさいので作成してしまう # make install # vi /etc/inittab
mg1:35:respawn:/usr/local/sbin/mgetty -a ttyS2 -n 1
mg1 は他と重ならない任意の文字列 ※ここでは、3 (マルチユーザモード) と 5 (X window モード) で有効にしている  X window は通常マルチユーザモードで動作する ※ -n 1 としているのは "RING" 1 回目でオフフックするという意味 (ベルが 1 回鳴る)   -n 0 は出来ない (RING が出ない状態で受話器を上げることは出来ない)
# init q kill -HUP 1 でも可 この時点で、ダイヤルアップは出来る。(PPP は使えない)
PPPd の設定 # vi /usr/local/etc/mgetty+sendfax/login.config 600
/AutoPPP/ -     ppp1  /usr/sbin/pppd auth -chap +pap login
# vi /etc/sysconfig/network
FORWARD_IPV4=true
# echo 1 > /proc/sys/net/ipv4/ip_forward # vi /etc/rc.d/rc.local
echo 1 > /proc/sys/net/ipv4/ip_forward
# cat /etc/pam.d/ppp
#%PAM-1.0
auth       required     pam_nologin.so
auth       required     pam_stack.so service=system-auth
account    required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth
# vi /etc/ppp/options 644 pppd のデフォルトオプション (下記の options.ttySN で個別設定が可能)
asyncmap 0
crtscts
lock
modem
ms-dns 192.168.1.1       DNS サーバとして 192.168.1.1 を指定
netmask 255.255.255.0
proxyarp
# vi /etc/ppp/options.ttyS2 644 ttyS2 で接続しに来たら 192.168.1.5 を割り当てる
192.168.1.4:192.168.1.5           serv:ppp1 でも可 (/etc/hosts に serv と ppp1 の定義がある場合)
# vi /etc/ppp/pap-secrets ユーザの認証には /etc/passwd を使用し、認証後は 192.168.1.5 を割り当てる
# Secrets for authentication using PAP
# client        server  secret                  IP addresses
#*               *       ""                      192.168.1.5
*               *       ""                      *
# vi /etc/ppp/auth-up 755 ppp 開始時にログを残す
#!/bin/sh
# $1: Interface
# $2: Peer name
# $3: user
# $4: tty
# $5: speed
echo "ppp auth-up   [$PPID]: ["`/bin/date '+%Y-%m-%d %X'`"] $1 $4 $2 $3 $5 " >> /var/log/pppauth.log
# vi /etc/ppp/auth-down 755 ppp 終了時にログを残す
#!/bin/sh
# $1: Interface
# $2: Peer name
# $3: user
# $4: tty
# $5: speed
echo "ppp auth-down [$PPID]: ["`/bin/date '+%Y-%m-%d %X'`"] $1 $4 $2 $3 $5 " >> /var/log/pppauth.log
これで ppp も動作する
・備考1
/var/log/messages に 〜 modprobe: Can't locate module ppp-compress-21 のエラーが出るが気にしない。
vi /etc/modules.conf

alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate

depmod -a
をすると良いらしいが、このままでも動作する。
・備考2
モデムカードは、必ず外付けか ISA バスのものを使用すること。 PCI バスのモデムは、ほとんどの場合 AT コマンドが使えない。 (そのためのコントローラが実装されていない) PCI バスのモデムで AT コマンドが使えても、それは Windows でのことなので当てになりません。 (CPU 速度に関係するモデムはソフトモデムを使っているので、Linux では使えません) Linmodem を参照 × AIWA PV-PC5610 PV-PC5620 (多分ソフトモデム) ?アイ・オー・データ IFML-PCI ×メルコ IGM-PCI56KH (多分ソフトモデム) ×オムロン ME5614PCI (ソフトモデムらしい) 私はオムロンの ME5614ISA を、tty2 (COM3:IRQ4) として使用しています。 DOS/V コンピュータは最初からシリアルポートが 2 ポート付属しているので、COM3 として使います。 ちなみに、Linux 用の PCI モデムもあります。 箱の左下に小さく Linux OK の文字があります。 日本レクトンのダウンロードのページへ行ってドライバをダウンロードします。(Linmodem の様ですが、ソースは非公開) すると、AT コマンドが使えるようになります。
・備考3
パケット制御ソフト (ipchains, iptables : ファイアウォールとも言う) を使用している場合、
-A input -s 192.168.1.5 -d 0/0 25 -p tcp -y -j ACCEPT
-A input -s 192.168.1.5 -d 0/0 53 -p udp -j ACCEPT
-A input -s 192.168.1.5 -d 0/0 80 -p tcp -y -j ACCEPT
-A input -s 192.168.1.5 -d 0/0 110 -p tcp -y -j ACCEPT
-A input -s 192.168.1.5 -d 0/0 123 -p udp -j ACCEPT
-A input -s 192.168.1.5 -d 0/0 143 -p tcp -y -j ACCEPT
-A input -s 192.168.1.5 -d 0/0 443 -p tcp -y -j ACCEPT
※ ipchains の例 ※ 192.168.1.5 は ppp クライアントに割り当てる IP アドレス
等として、パケットを許可してやること。
・備考4
windows 側で ipconfig を実行すると
0 Ethernet アダプタ :

        IP アドレス. . . . . . . . . : 192.168.1.5
        サブネット マスク . . . . . . . . : 255.255.255.0
        デフォルト ゲートウェイ . . . . . . : 192.168.1.5
となるが、問題ない。 ※「デフォルト ゲートウェイ」が自分のアドレスなのがちょっと変だけど、  実際には ppp サーバ (ここでは 192.168.1.4) が代行するのでうまく動作する。  (その代わり、上記備考3 でパケットを許可する)