Home / FMV-5333 をルーターとして使う

2004-7-14未明〜15早朝

FMV-5333 をルーターとして使う

折角、中古のNICも手に入れたので Linux によるルーターをやってみた。

 ADSL modem
 +------+
 |      | --- So-net の DHCPサーバ xxx.xxx.xx.xx から割り当てられている。
 +------+
    | 192.168.1.1
    |
    | eth1: 192.168.1.30
 +---------+
 | FMV5333 | <-- Turbolinux7 server
 +---------+
    | eth0: 192.168.0.30
    |
    |
 +------+
 |      | corega 8 port HUB
 +------+
    |
    +--- GIGA: 192.168.0.2 
    |
    +--- DELL: 192.168.0.5 
    |
    +--- ...

まぁ DMZ(DeMilitalized Zone:非武装地帯)をやってみたかったのもある。
本当は FMV-5333 の eth0, eth1 は図とは逆にしたかったのだが、今まで既に何台かのマシンをセットアップしてしまっているので面倒なので ADSL modem - FMV5333 間を 192.168.1. にする事にした。これならデフォルトゲートウェイを変更するだけで済むからである。

FMV5333 の OS は Turbolinux7 server にした。手元にある本「はじめての...」が結構良い教科書であり、すんなりいきそうな気がしたからである。Solaris も考えたが最初にしては敷居が高過ぎる...

FMV5333 - HUB 間はストレートケーブルだが、HUB の切替えSW を [PC] にした。

ipchains

ipchains をインストールし、教科書を見ながら設定する。eth0 と eth1 とが逆なので勘違いもしたが、最終的には次のようになった。

# cat /etc/sysconfig/ipchains
 1: :input ACCEPT
 2: :forward ACCEPT
 3: #:forward DENY
 4: :output ACCEPT
 5: #-A forward -s 192.168.212.0/255.255.255.0 -d 0.0.0.0/0.0.0.0 -j MASQ
 6: -A input -i eth0 -s 192.168.0.0/24 -j ACCEPT
 7: -A input -i eth1 -s xxx.xxx.95.24 53 -d 192.168.1.30 1024:65535 -p udp -j ACCEPT
 8: -A input -i eth1 -s xxx.xxx.95.26 53 -d 192.168.1.30 1024:65535 -p udp -j ACCEPT
 9: -A input -i eth1 -d 192.168.1.30 1024:65535 -p tcp ! -y -j ACCEPT
10: -A input -i eth1 -d 192.168.1.30 80         -p tcp      -j ACCEPT
11: -A input -p tcp -y -j DENY -l
12: -A input -p udp    -j DENY -l
13: -A forward -s 192.168.0.0/255.255.255.0 -j MASQ

これで

# /etc/rc.d/init.d/ipchains restart

network ファイルはゲートウェイを変更。GATEWAYDEV は複数枚NICの場合にだけ現れる設定と思う。
FORWARD_IPV4= を yes にせよ、と書かれた記事も見かけたが、元々無い行なので追加はしないでおく。

# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=fmv5333
#GATEWAY=192.168.0.1
GATEWAY=192.168.1.1
#GATEWAYDEV=eth0
GATEWAYDEV=eth1

これも再起動しておく。

# /etc/rc.d/init.d/network restart

ルーティングはこれ。

# route -n
Kernel IP routing table
Destination    Gateway        Genmask         Flags Metric Ref    Use Iface
192.168.1.0    0.0.0.0        255.255.255.0   U     0      0        0 eth1 ... 3C-905B
192.168.0.0    0.0.0.0        255.255.255.0   U     0      0        0 eth0 ... オンボード
127.0.0.0      0.0.0.0        255.0.0.0       U     0      0        0 lo
0.0.0.0        192.168.1.1    0.0.0.0         UG    0      0        0 eth1

因みにオンボードNIC は Intel 82558B だったと思う。

クライアントの変更

一方、LAN 内のクライアントマシンは

# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=dell_red72
#GATEWAY=192.168.0.1
GATEWAY=192.168.0.30

としてゲートウェイアドレスを FMV-5333 に向けただけ。
ルーティングを見て確認。

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         192.168.0.30    0.0.0.0         UG    0      0        0 eth0

Windows マシンはおなじみのTCP/IPダイアログで変更。

これでめでたくLAN 内のクライアントマシンからも WEB で http://192.168.1.1 として ADSL モデムの設定が可能になった。(´ヘ`;)ふぅ

記念撮影したので後程載せる。

これでバリバリにパケットキャプチャできるかも...


Linuxのパケットフィルタ

ipchains はカーネル2.2から使われているらしいが、カーネル2.4からはパケットフィルタが機能拡張された iptables が使われるらしい。今回は教科書の説明に従い ipchains を使った。
蛇足だがカーネル2.0と2.2とでは IPマスカレード機能に一部違いがあり、それはカーネルの一部として取り込まれているせいらしい。

なお、FMV-5333 の Turbolinux 7 server は 2.4.9-3 であり、CD-ROM には iptables が用意されている。

# ll /mnt/cdrom/turbo/RPMS/ip
ip-tools-0.1-2.i586.rpm           iptables-ipv6-1.2.2-6.i586.rpm
ipchains-1.3.9-10.i586.rpm        iputils-20001110-3.i586.rpm
iplog-2.1.1-4.i586.rpm            iputils-ipv6-20001110-3.i586.rpm
iptables-1.2.2-6.i586.rpm


-P
デフォルトポリシーを変更する

-s
送信元のIPアドレス
-A
チェーンの最後にルールを追加する

-d
宛先のIPアドレス
-I
チェーンの最初にルールを追加する
-p
プロトコル(tcp, udp, icmp等)
-D
チェーンから指定したルールを削除する
--sport
送信元のポート番号
-N
新しいチェーンを作る
--dport
宛先のポート番号
-F
チェーンから全てのルールを削除する

-i
インターフェイス(eth0, ppp0など)
-X
空のチェーンを削除する

-j
ターゲット(ACCEPT, DENY,
-L
チェーンに設定されたルールを表示する




inserted by FC2 system