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

[debian-users:39339] <Q> How to refresh network interfaces



柴田(あ)です。

■質問
ネットワークインターフェースをリフレッシュ?する方法は
どうしたらよいでしょうか?


■状況
下記のような接続を現在構築中です。
規模が小さいので AS 取得等は考えておりません。
したがって BGP 等も考えておりません。
それぞれの NAT の上位側までグローバルが振られてます。
インターネット側から ISP1 経由で NAT1 を含む
ネットワークへのアクセスがありますので一本に
まとめる予定はありません。
NAT1,2 及び router1 の装置は専用の装置であまり
賢くありません、というか自動で何かをさせることは
難しくたぶんできません。
router2 は NIC を 3 枚いれて Debian ( woody ) で
構築しています。


●接続図
 The Internet
 |          |
ISP1       ISP2
 |          |
router1     |
 |          | eth0
 +-------router2
 |   eth2   | eth1
NAT1       NAT2
 |          |
 +----+-----+
      |     
  社内ネット


■やりたいこと
何らかの理由で ISP2 経由でインターネットに
長時間(たとえば 5 分以上)接続不能に
なったときに「非常用として」 ISP1 経由で
通信ができるようにしたい。
ここで思い立ったのは router2 を NAT ルータに
して( IPtables 利用) ISP1 経由で利用
できるようにシェルスクリプト(下に添付)を書いて
切り替えられるようにしたい。
スクリプト中では /etc/network/interfaces を
コピーして /etc/init.d/networking restart を
一応念のため sleep2 を入れて二回繰り返してます。
ちょっと待ってから iptables に入ってます。


■できたこと
切り替えはできて通信もできるようになりました。
非常用←→通常用の切り替えもうまくいっているように
見えます。
traceroute かけると ISP1 経由(非常時想定)、
 ISP2 経由(通常時想定)の切り替えはできています。


■問題点
ルーティングテーブル?元に戻らないので気持ちわるいです。
下記のような感じでデフォルトルートが二つあります。
よくみると通常時想定と非常時想定で default の gateway の
アドレスの最後にドット「 . 」がくっついているのがわかりますが
こんなんでいいのかが検索してもわからなかったのです。
つまり、動作はほぼ期待通り(例外は下に)、ですがキモチ悪いことに
なっております。


(通常時想定の状態)
$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
211.XX.XXX.XXX  *               255.255.255.252 U        40 0          0 eth0
218.XX.XXX.XXX  *               255.255.255.224 U        40 0          0 eth2
210.XXX.XXX.XX  *               255.255.255.192 U        40 0          0 eth1
default         211.XX.XXX.XXX. 0.0.0.0         UG       40 0          0 eth0
default         218.XX.XXX.XXX  0.0.0.0         UG       40 0          0 eth2

(非常時想定の状態)
$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
211.XX.XXX.XXX  *               255.255.255.252 U        40 0          0 eth0
218.XX.XXX.XXX  *               255.255.255.224 U        40 0          0 eth2
210.XXX.XXX.XX  *               255.255.255.192 U        40 0          0 eth1
default         211.XX.XXX.XXX  0.0.0.0         UG       40 0          0 eth0
default         218.XX.XXX.XXX. 0.0.0.0         UG       40 0          0 eth2


■参考:切り替えスクリプトの先頭
$ head -n 20 emergency-routing.sh
#!/bin/sh

# =======================================================================
# =======================================================================
# change default gateway
/bin/cp ./interfaces.emergency ./interfaces
/etc/init.d/networking restart
sleep 2
/etc/init.d/networking restart
sleep 2

# =======================================================================
# becoming a NAT router
IFOUTER=eth2
IFINNER=eth1
IPTABLES=/sbin/iptables

# =======================================================================
# INPUT/FORWARD チェインのポリシーの設定: DROP
$IPTABLES -P INPUT DROP
−以下略−


■動作の例外
接続図の状態から、起動して最初の通常状態はインターネットへの
 traceroute をかけると NAT2 − router2 − ISP2 −インターネットと
いうようになります。
あるいは NAT1 のあるネットワークへ traceroute をかけると NAT2 −
− router2 − ISP2 −インターネット− ISP1 − router1 − NAT1 と
いうようになります。

非常時想定では NAT2 − router2 − router1 − ISP1 −インターネットと
いう状態で期待通りです。
このとき NAT1 のあるネットワークへ traceroute をかけると NAT2 −
− router2 − NAT1 とこれも期待通りです。

しかしいったん非常時を経験した今回の router2 (Debian router)は
通常時ルーティングに戻しても NAT1 のあるネットワークへ traceroute を
かけると NAT2 − router2 − NAT1 となり最初とは違います。

この通常状態ではインターネットへの traceroute をかけると NAT2 −
− router2 − ISP2 −インターネットというようになり、これは
期待通りといえます。



■まとめ
つまり、 netstat の結果(見たことのない状態)と、
traceroute の結果が困った状態にはなっていないものの
これでよいかどうかの確信が得られないので、
ご相談したというわけです。

再起動すれば元通りとは思いますが、実際に運用を開始
したらそうそう再起動( 3 分くらいかかります)はしたくないので、
切り替えにはいったら、できれば数秒〜十数秒程度で終えられる方法を
探しています。



-- 
SHIBATA Akira      ケーブルテレビはまちづくり
shibata@xxxxxxxxxxxxxx   phone : +81-429-74-3611