Windowsのバックアップや、PlamoLinuxのインストールのお話は、戻って確認してください。
私は以下のように変更しました。
/etc/pcmcia/network の30行目くらい 変更前 . $0.opts 変更後 . $0.$DEVICE.opts # cd /etc/pcmcia/ # ln -s network.opts network.eth0.opts # cp network.opts network.eth1.opts # vi network.eth1.opts (編集する。DHCPの場合は次を参照) ここで eth0 をシンボリックリンクにしているのは、netconfigを無駄にしないためです。
PlamoLinuxのCDに入っている contrib/Networking/dhcpcd.tgzをインストールします。
# installpkg dhcpcd.tgz
もしかしたら次のファイルが更新されてしまうので注意してください。
リブレットの場合、PCカード側で処理するのでこれらは書き変わる必要がないです。(たぶん)
インストール後に元に戻しましょう。
/etc/rc.d/rc.M
/etc/rc.d/rc.inet1
/etc/rc.d/rc.inet2
/etc/rc.d/rc.dhcp
/etc/pcmcia/network.opts
こっちは変更されてないとまずい場合もある。DHCPの定義が入ってることを確認。
変更されている場合、上でやった修正を反映するのを忘れずに。
/etc/pcmcia/network
DHCPがうまくいかない場合、/etc/pcmcia/network の dhcpcd の起動のところを dhcpcd -r と、-r オプションをつけてみてください。
DHCPのサーバによっては -r が必要な場合があります。
・PlamoLinux1.3の場合
/etc/pcmcia/network.eth1.optsから既存の設定を全て "" に変更して、そこに以下の2つを追加。
DHCP="Y"
DHCPSTF="/etc/pcmcia/network.eth1.dhcp"
DHCPでホスト名の通知が必要な場合は /sbin/dhcpcd に "-h ホスト名" という引数を追加。
/etc/pcmcia/network.eth1.dhcp を以下のようにする。
シェルなので実行権もつけて置いてください。(chmod 755 network.eth1.dhcp)
/lib/modules/2.0.35/ipv4/*.o がモジュールです。
実際試した訳じゃなくてこんな感じだったかなぁってだけで書いてます。間違ってるかも。
#!/bin/sh /sbin/modprobe ip_masq_cuseeme /sbin/modprobe ip_masq_ftp /sbin/modprobe ip_masq_irc /sbin/modprobe ip_masq_quake /sbin/modprobe ip_masq_raudio /sbin/modprobe ip_masq_vdolive echo "1" > /proc/sys/net/ipv4/ip_forward echo "1" > /proc/sys/net/ipv4/ip_dynaddr /sbin/ipfwadm -F -f /sbin/ipfwadm -F -p deny /sbin/ipfwadm -F -a m -S 192.168.0.0/24 -D 0.0.0.0/0
・PlamoLinux1.4の場合
/etc/pcmcia/network.eth1.optsから既存の設定を全て "" に変更して、そこに以下の1つを追加。
DHCP="Y"
DHCPでホスト名の通知が必要な場合は /sbin/dhcpcd に "-h ホスト名" という引数を追加。
/etc/network の 'start')の最後の処理に以下を入れる。
/lib/modules/2.0.36/ipv4/*.o モジュールです。
if [ "$DEVICE" = "eth1" ]; then /sbin/modprobe ip_masq_autofw.o /sbin/modprobe ip_masq_cuseeme /sbin/modprobe ip_masq_ftp /sbin/modprobe ip_masq_irc /sbin/modprobe ip_masq_mfw /sbin/modprobe ip_masq_portfw /sbin/modprobe ip_masq_quake /sbin/modprobe ip_masq_raudio /sbin/modprobe ip_masq_user /sbin/modprobe ip_masq_vdolive echo "1" > /proc/sys/net/ipv4/ip_forward echo "1" > /proc/sys/net/ipv4/ip_dynaddr /sbin/ipchains -F /sbin/ipchains -P forward DENY /sbin/ipchains -A forward -j MASQ -s 192.168.0.0/24 -d 0.0.0.0/0 fi start_fn $DEVICE ;;
・PlamoLinux2.0の場合
/etc/pcmcia/network.eth1.optsから既存の設定を全て "" に変更して、そこに以下の1つを追加。
DHCP="Y"
DHCPでホスト名の通知が必要な場合は /sbin/dhcpcd に "-h ホスト名" という引数を追加。
/etc/network の 'start')の最後の処理に以下を入れる。
/lib/modules/2.2.14/ipv4/*.o がモジュールです。
if [ "$DEVICE" = "eth1" ]; then /sbin/modprobe ip_masq_autofw.o /sbin/modprobe ip_masq_cuseeme /sbin/modprobe ip_masq_ftp /sbin/modprobe ip_masq_irc /sbin/modprobe ip_masq_mfw /sbin/modprobe ip_masq_portfw /sbin/modprobe ip_masq_quake /sbin/modprobe ip_masq_raudio /sbin/modprobe ip_masq_user /sbin/modprobe ip_masq_vdolive echo "1" > /proc/sys/net/ipv4/ip_forward echo "1" > /proc/sys/net/ipv4/ip_dynaddr /sbin/ipchains -F /sbin/ipchains -P forward DENY /sbin/ipchains -A forward -j MASQ -s 192.168.0.0/24 -d 0.0.0.0/0 fi start_fn $DEVICE ;;
/proc/sys/net/ipv4/ip_foward に 1 を書き込んでいますが、これをやらないとIP転送をしてくれません。
また、DHCPによりWAN側アドレスをもらう場合は、/proc/sys/net/ipv4/ip_dynaddr にも 1 を書き込みます。
なお、ネットワーク対応ゲームなどで、特定のポートをあける必要があるときは下記のような感じです。
※「192.168.0.xxx」はゲームをするマシンのプライベートIPアドレス
Masq Appicationsが参考になります。# Age of Empires ipmasqadm autofw -A -r upd 1100 7000 -h 192.168.0.xxx ipmasqadm autofw -A -r tcp 1100 5000 -h 192.168.0.xxx ipmasqadm autofw -A -r udp 47624 47624 -h 192.168.0.xxx
とにかく作る。
# tar zxvf dhcp-2.0.tar.Z # cd dhcp-2.0 # ./configure # make
PlamoLinux 2.0 標準のカーネルだと、setsockoptのSO_ATTACH_FILTERでエラーとなるようである。
よくわかんないから(^^;)コメントアウトしたら動くようになった。
だってカーネル作り直すの遅いし容量ギリギリだし面倒なんだもん。
いいんかなぁ、、、セキュリティとか問題なりそうだな。。。試すなら自己責任ってことで。
コメントアウトしたのはcommon/lpf.cの195〜204行目と224〜233行目のsetsockoptんとこ。
これ何やってる処理なんだろう。まあいいや。
でも /var/log/messages にうるさいくらいエラーがでてますなぁ。。。これもコメントアウトしちゃお(ぉぃ
マニュアルのインストール先が PlamoLinux2.0 で都合悪いので変更する。
# vi server/Makefile 修正前 FFMANDIR = /usr/share/man/man5 修正後 FFMANDIR = /usr/man/man5
必要なのは dhcpd だけなので、インストールはそれだけでよい。
# cd server # make install # touch /var/state/dhcp/dhcpd.leases
定義ファイルを設定する。
最低限の設定ならこんな感じかな。# vi /etc/dhcpd.conf
---dhcpd.conf--- option domain-name "ドメイン名:無し("")でもいい"; option domain-name-servers プライマリDNSのIPアドレス, セカンダリDNSのIPアドレス; option subnet-mask 255.255.255.0; default-lease-time 86400; max-lease-time 86400; subnet 192.168.0.0 netmask 255.255.255.0 { ←割り当てるネットワーク range 192.168.0.100 192.168.0.199; ←割り当てる範囲 option broadcast-address 192.168.0.255; ←ブロードキャストアドレス option routers 192.168.0.1; ←ルータマシン自身のIPを書く } ---これで準備は完了。
# /usr/sbin/dhcpd eth0
/etc/pcmcia/network に追加しておけば自動化できる。
カード抜いたときに対応しないなら、'stop')処理に改造が必要です。if [ "$DEVICE" = "eth0" ]; then /usr/sbin/dhcpd $DEVICE fi if [ "$DEVICE" = "eth1" ]; then (中略) fi start_fn $DEVICE ;;