[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