サーバ移行に便利な iptables 2 行

IT配管業の皆様こんにちは。へなちょこ鯖管の高梨です。

さて、既存のWebサービスを新サーバに移管したり、一時的に別サーバで動かしたい、なんていうときは、どうされていますか?

  • サービスを止めずに、
  • データの整合性を保たなければならず、
  • さらにDNSの設定は諸般の事情によりいじれない

という過酷な条件のもと、なんとかしなければならなくなったら、もう泣きたくなっちゃいますよね。

そんなあなたにご紹介したいのが、以下の iptables 2行。ご存じの方も多いかもしれませんが、私的に大きな収穫だったのでお知らせしたいと思います。

以下、1.1.1.1が旧サーバ、2.2.2.2 が新サーバ、HTTP(80/tcp)を移管したい、とします。1.1.1.1上で実行します。

# iptables -A PREROUTING -t nat -p tcp -d 1.1.1.1 --dport 80 -j DNAT --to-destination 2.2.2.2:80
# iptables -A POSTROUTING -t nat -p tcp -d 2.2.2.2 --dport 80 -j SNAT --to-source 1.1.1.1

 

これだけで、転送用のデーモン(プロキシ)などを立てるまでもなく、旧サーバの80/tcpへのアクセスは新サーバの同ポートに転送されるようになります。もちろん、アクセス元の制限はありません。一旦旧サーバを経由するので、若干アクセス速度は落ちますが、カーネル動作ですし、日本国内での転送であれば、そう遅くはならない、と思います。DNSのキャッシュに悩まされることもなく、大変便利。

キモは2行目の SNAT でして、これでパケットの送信元IPアドレスを旧サーバのものに書き換えています。1行目だけだと、送信元IPが書き換わらないので、帰りのパケットが正しい経路を経て帰ってきません。

私もiptablesは必要に迫られたら調べるクチなので、動作は保証しかねますし、これ以上の説明はできませんが、参考になれば。

Got Something To Say:

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

Copyright © 2024. Powered by WordPress & Romangie Theme.