[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:36107] ルーターを行なう box 上でのルーティング設定について



こんにちは。渡辺@Woody です。

フレッツ ADSL モアを導入する前に、フレッツ ISDN の環境にて 
SNAT が正常に動作するかの確認をしたいと考えています。

現在は、1 つのネットワークにすべて集まっています。
	192.168.20.20	mojo
	192.168.20.10	blossom
	192.168.20.254	comstarz(デフォルトルート)
これを次のように変えて SNAT のテストをするための環境を整えた
いと考えています。

           インターネット
 ________________|____________________
|                                     |
| ISDN ダイアルアップルータ(comstarz) (ADSL 導入時には ADSL モデム)
|________________  192.168.20.254 ____|
                 |
                 |
           ネットワーク 2 (クロスケーブルによる接続)
                 |
 ________________| eth1: 192.168.20.10 (ADSL 導入時に ppp0 に)
|                                                            |
| Host: blossom(WWW 等の各種サーバが動いている/SNATも行なう) |
|________________  eth0: 192.168.10.10_______________________|
                 |
                 |
           ネットワーク 1 (ハブを介してストレートケーブルによる接続)
		...このネットワークには他にもホストを追加する可能性がある。
		192.168.10.30 などを割り当てる予定。
                 |
 ________________| 192.168.10.20___
|                                  |
| Host: mojo(LAN 内のユーザが使う) |
|__________________________________|

この状況でホスト mojo では、デフォルトルートをホスト blossom 
にし、ホスト blossom ではデフォルトルートを comstarz(192.168.20.254)
にすれば良いと思います。

[host: blossom にて]

$ cat /etc/hosts
127.0.0.1       localhost
192.168.10.10  blossom
192.168.10.20  mojo
192.168.20.10  buttercup # この IP にも何か名前を与えないといけないのか分かりません
192.168.20.254 comstarz
(省略)

$ cat /etc/network/interfaces
(省略)
auto eth0
iface eth0 inet static
        address 192.168.10.10
        netmask 255.255.255.0
#       network 192.168.10.0
#       broadcast 192.168.10.255
#       gateway 192.168.20.254
(省略)
auto eth1
iface eth1 inet static
        address 192.168.20.10
        netmask 255.255.255.0
#       network 192.168.20.0
#       broadcast 192.168.20.255
        gateway 192.168.20.254
(省略)

$ /sbin/route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.20.0    *               255.255.255.0   U     0      0        0 eth1
localnet        *               255.255.255.0   U     0      0        0 eth0
default         comstarz        0.0.0.0         UG    0      0        0 eth1

$ grep ip_forward /etc/network/options 
ip_forward=yes

http://www.tldp.org/HOWTO/IP-Masquerade-HOWTO/ipmasq-compiling3.1.html#IPMASQ-COMPILING3.1.1
を参考にしてカーネル(2.4.19)を再構築済です。

$ grep eth /etc/modules.conf
alias eth0 eepro100
options eth0 irq=3 io=0x7800
alias eth1 3c59x
options eth1 irq=10 io=0x7000

$ cat /proc/pci
(省略)
  Bus  0, device  12, function  0:
    Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 5).
      IRQ 3.
      Master Capable.  Latency=32.  Min Gnt=8.Max Lat=56.
      Prefetchable 32 bit memory at 0x9400000 [0x9400fff].
      I/O at 0x7800 [0x781f].
      Non-prefetchable 32 bit memory at 0x9200000 [0x92fffff].
  Bus  0, device  15, function  0:
    Ethernet controller: 3Com Corporation 3c905 100BaseTX [Boomerang] (rev 0).
      IRQ 10.
      Master Capable.  Latency=32.  Min Gnt=3.Max Lat=8.
      I/O at 0x7000 [0x703f].
(省略)

これで、まず、ホスト mojo からホスト blossom にログインし、
そこから、外部にアクセスしようとしても、ホスト blossom の eth1 
からクロスケーブルで接続してあるダイアルアップルータの LAN 
ランプが点灯しません。eth1 の設定の仕方が間違っているのでしょ
うか。pppoe を設定し、eth1 が ppp0 にすり変わるときとは、ど
う違うのでしょうか。

また、次の SNAT を試そうと考えています。

============================== ホスト blossom 上で使用する iptables スクリプト(開始)
#!/bin/sh

IPTABLES=/sbin/iptables

# We use the following chains:
#	INPUT       in the 'filter' table
#	FORWARD     in the 'filter' table
#	OUTPUT      in the 'filter' table
#	POSTROUTING in the 'nat'    table

############################################################

# flushing the chains (deleting all the rules)
${IPTABLES} -F -t filter
${IPTABLES} -F -t nat

# setting policies for the built-in chains used for filtering and NATing
${IPTABLES} -t filter -P INPUT DROP
${IPTABLES} -t filter -P FORWARD DROP
${IPTABLES} -t filter -P OUTPUT ACCEPT	# normally not being used for defense
${IPTABLES} -t nat -P POSTROUTING DROP

############################################################
# ユーザ定義チェイン

# a new chain that logs and drops some packets
# eth1 -> INPUT のデフォルト処理として使う
${IPTABLES} -N log_n_drop
${IPTABLES} -A log_n_drop -m limit --limit 3/hour --limit-burst 5 -j LOG --log-level warning --log-prefix "netfilter "
${IPTABLES} -A log_n_drop -j DROP

# a new chain for: eth1 -> INPUT
${IPTABLES} -N ppp-in
# for the packets that have been communicating (nat テーブル以外では必須らしい)
${IPTABLES} -A ppp-in -m state --state ESTABLISHED,RELATED -j ACCEPT
# for the packets to WWW
${IPTABLES} -A ppp-in -p tcp --dport www -j ACCEPT
# for the packets to SMTP(メール)
${IPTABLES} -A ppp-in -p tcp --dport smtp -j ACCEPT
#${IPTABLES} -A ppp-in -p tcp --dport pop3 -j ACCEPT
# for the packets to bind
${IPTABLES} -A ppp-in -p udp --dport 53 -j ACCEPT
# for the packets to ftpd
#${IPTABLES} -A ppp-in -p tcp --dport 20 -j ACCEPT
#${IPTABLES} -A ppp-in -p tcp --dport 21 -j ACCEPT
# for the packets to sshd
#${IPTABLES} -A ppp-in -p tcp --dport ssh -j ACCEPT
# DROPping the others (ここまで落っこちて来たパケットへのデフォルト処理)
${IPTABLES} -A ppp-in -j log_n_drop

# a new chain for: eth1 -> FORWARD
${IPTABLES} -N ppp-forward
# for packets that have been communicating (nat テーブル以外では必須らしい)
${IPTABLES} -A ppp-forward -m state --state ESTABLISHED,RELATED -j ACCEPT
# for pachets that try to create a new connection to the private hosts
#${IPTABLES} -A ppp-forward -p tcp --syn -j DROP #基本ポリシーが DROP なので不要
# back to the FORWARD chain (ここまで落っこちて来たパケットへのデフォルト処理)

# a new chain for: {OUTPUT,FORWARD} -> eth1
${IPTABLES} -N ppp-out
# Windows の共有ファイルをしているときのパケットとかは外へ漏曳しないようにする。
${IPTABLES} -A ppp-out -p udp --dport 135:139 -j DROP
${IPTABLES} -A ppp-out -p tcp --dport 135:139 -j DROP
${IPTABLES} -A ppp-out -p udp --dport 137:139 -j DROP
${IPTABLES} -A ppp-out -p tcp --dport 137:139 -j DROP
${IPTABLES} -A ppp-out -p udp --dport 445 -j DROP
${IPTABLES} -A ppp-out -p tcp --dport 445 -j DROP
# (外部へ出て行くはずなのに) ローカル IP の範囲へ出て行くパケットも破棄
${IPTABLES} -A ppp-out -d 10.0.0.0/8 -j DROP
${IPTABLES} -A ppp-out -d 172.16.0.0/12 -j DROP
${IPTABLES} -A ppp-out -d 192.168.0.0/16 -j DROP
# ACCEPTing the others

############################################################
# ここから本設定

# for INPUT
${IPTABLES} -t filter -A INPUT -i eth0 -j ACCEPT
${IPTABLES} -t filter -A INPUT -i lo -j ACCEPT
${IPTABLES} -t filter -A INPUT -i eth1 -j ppp-in

# for FORWARD
${IPTABLES} -t filter -A FORWARD -i eth1 -j ppp-forward
${IPTABLES} -t filter -A FORWARD -o eth1 -j ppp-out
${IPTABLES} -t filter -A FORWARD -i lo -j ACCEPT
${IPTABLES} -t filter -A FORWARD -i eth0 -j ACCEPT

# for OUTPUT
${IPTABLES} -A OUTPUT -o eth1 -j ppp-out

# for SNAT(or IP Masquerading)
${IPTABLES} -t nat -A POSTROUTING -s 127.0.0.1 -o eth1 -j SNAT --to 192.168.20.10
${IPTABLES} -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j SNAT --to 192.168.20.10
${IPTABLES} -t nat -A POSTROUTING -s 127.0.0.1 -j ACCEPT
${IPTABLES} -t nat -A POSTROUTING -s 192.168.10.0/24 -j ACCEPT
${IPTABLES} -t nat -A POSTROUTING -o eth1 -j ACCEPT
============================== ホスト blossom 上で使用する iptables スクリプト(終了)

これがフレッツ ADSL になったら、eth1 を ppp0 に、-j SNAT --to 
192.168.20.10 のアドレスを ISP から借りる固定のグローバルア
ドレスにすれば良いと推定しています。

以上、もし良ければ、よろしくお願いいたします。

---
渡辺 崇史
lieuml@xxxxxxxxxxx