[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:39359] <Summary> How to refresh network interfaces
柴田(あ)です。
山森さまの回答が直接の解決につながりました。
ありがとうございました。
In message <20040121035941.E765B17B946@arashi.debian.or.jp>
"[debian-users:39339] <Q> How to refresh network interfaces"
"Wed, 21 Jan 2004 12:59:44 +0900"
"SHIBATA Akira <shibata@xxxxxxxxxxxxxx>" wrote:
> ■質問
> ネットワークインターフェースをリフレッシュ?する方法は
> どうしたらよいでしょうか?
■回答
/etc/network/interfaces が適切な状態で
/sbin/ifdown -a して /sbin/ifup -a すると
リフレッシュ(再起動後と同じ状態になりました)
■当初の質問より山森さんからのメイルで
In message <20040122.005125.846931846.h-yamamo@xxxxxxxxxxxxxxxx>
"[debian-users:39341] Re: <Q> How to refresh network interfaces"
"Thu, 22 Jan 2004 00:51:35 +0900"
"Hiroyuki YAMAMORI <h-yamamo@xxxxxxxxxxxxxxxx>" wrote:
> 山森です。
-snip-
> 私ならこんな感じにすると思います。
> 通常時
> ln -sf /etc/network/interfaces.normal /etc/network/interfaces
>
> としておいて、スクリプトは、
>
> /sbin/ifdown -a
> ln -sf /etc/network/interfaces.emergency /etc/network/interfaces
> iptablesのルールの変更
> /sbin/ifup -a
といただきまして、下のようにかきかえました。
1. インターフェースを落とす
2. リンク張りなおし
3. インターフェースあげ
4. iptables 設定 ( NAT )
このうち 2 は従来よりも美しくするためで直接的に
改善されたのは 1,3 ( /sbin/ifdown と /sbin/ifup )です。
元に戻すときも同じように
1. iptables 通常用にリセット
2. インターフェース落とし
3. リンク張りなおし
4. インターフェースあげ
ということで、希望通り数秒で切り替えができるように
なりました。
# あとは接続性を監視するようにする予定
$ head -n 20 /etc/network/emergency-routing.sh <== 緊急時用スクリプト先頭
#!/bin/sh
# =======================================================================
# change default gateway
/sbin/ifdown -a
/bin/ln -sf /etc/network/interfaces.emergency /etc/network/interfaces
/sbin/ifup -a
# =======================================================================
# becoming a NAT router
IFOUTER=eth2
IFINNER=eth1
IPTABLES=/sbin/iptables
# =======================================================================
# INPUT/FORWARD チェインのポリシーの設定: DROP
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP
=============================================== 当初の質問
> ■状況
> 下記のような接続を現在構築中です。
> 規模が小さいので 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