アプリ開発ときどきアウトドア

主にJavaを使ったアプリ開発やトラブルシューティング等のノウハウ、キャンプや登山の紹介や体験談など。

1. システムエンジニアリング Linux ネットワーク

CentOS7のマルチホーム化

投稿日:2018年7月7日 更新日:

サイトの存在を隠しつつも、sftpサーバを公開し、後輩と1G以上のファイルのやりとりしたい。
パブリック側のIPアドレスを教えてしまうと、どこのサーバだろうかとブラウザで開いたりするとサイトの存在がわかってしまう。
このサーバをホストしているConoHaではIPアドレス1個0.5円/時間(350円/月)で、短期間なら安く済むので、IPアドレスを追加し、そのIPアドレスでsftpサーバを公開しようと思う。

ここでは、新NICを1枚追加し、それに新しいIPアドレスを割り当てる。
(NIC2枚構成、1枚には既存のIPアドレス、もう1枚には新しいIPアドレスを割り当てる。)

デフォルトゲートウェイは既存のNIC側なので、外部から新IPアドレスにアクセスがあると
その応答はデフォルトゲートウェイから送信されるので、正常に通信できない。
(送信元から見ると応答がないように見える。)

一方で、ポリシールーティングという技術があり、特定のIPアドレスやポート等を条件にして、ルーティングを制御することができる。

ここでは、ポリシールーティングを使って、既存NICから送信する場合は既存NICのゲートウェイを、新NICから送信する場合は新NICのゲートウェイを使うようにポリシーを作成してルーティングを制御する。

前提

環境

  • CentOS7を使用する。
  • これまではifconfigやnetstat等を提供するnet-toolsを使用していたが、CentOS7からはipコマンド等のiproute2が標準になっているので、それを使用する。
  • CentOS7の元になるrhel7のネタだが、ポリシールーティングの設定方法は次の内容を参考にした。rule-eth*でルーティングの条件を定義、そこで使うルート情報をroute-eth*で定義する。
    How to make routing rules persistent, when I want packets to leave the same interface they came in?
  • CentOS7から、ネットワークの管理機能は、NetworkManagerデーモンが担うとのこと。上記のrule-eth*を実行するためには、NetworkManagerのdispatcher機能を有効にする必要がある。
    RHEL7: ネットワークガイド: 1.3. NETWORKMANAGER について
    Is it possible to set up Policy Based Routing with NetworkManager in RHEL 7?
  • (参考)NetworkManagerは従来のifcfg タイプの設定ファイルもサポートするそうだが、この辺の設定ファイルを実行できるようにするためには、dispatcher機能を有効にする必要がある。ドキュメントの記載はないが、次のファイルで前述のrule-eth0/eth1を実行している。

    /etc/NetworkManager/dispatcher.d/10-ifcfg-rh-routes.sh

手順

次の環境で設定する前提で手順を説明する。
新NICの設定は、nmtui等で設定済みとする。

  • 既存NIC(eth0)
    IPアドレス: 1.1.1.10/24、ゲートウェイ: 1.1.1.254

  • 新NIC(eth1)
    IPアドレス: 2.2.2.20/24、ゲートウェイ: 2.2.2.254

NetworkManagerのdispatcherの有効化

# yum -y install NetworkManager-config-routing-rules
...
# systemctl enable NetworkManager-dispatcher.service
# systemctl start NetworkManager-dispatcher.service

ルートの定義

main_gw, sub_gwというルートを追加する。

# cd /etc/iproute2/
# cat rt_tables
#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
201     main_gw
202     sub_gw

NIC毎の設定

ポリシールーティングのルールやルートを定義する。
定義内容の意味はrhel7のマニュアルを参考にした。
RHEL7: ネットワークガイド: 2.2. ネットワーク設定ファイルの編集

# cd /etc/sysconfig/network-scripts/

# cat route-eth0
default via 1.1.1.254 table main_gw
# cat rule-eth0
from 1.1.1.10 table main_gw

# cat route-eth1
default via 2.2.2.254 table sub_gw
# cat rule-eth1
from 2.2.2.20 table sub_gw

# systemctl restart network.service

設定内容が反映されたかを確認する。

# ip route show
default via 1.1.1.254 dev eth0 proto dhcp metric 100
default via 2.2.2.254 dev eth1 proto static metric 101
1.1.1.0/24 dev eth0 proto kernel scope link src 1.1.1.10 metric 100
2.2.2.0/24 dev eth1 proto kernel scope link src 2.2.2.20 metric 101

# ip rule show
0:      from all lookup local
32764:  from 2.2.2.20 lookup sub_gw
32765:  from 1.1.1.10 lookup main_gw
32766:  from all lookup main
32767:  from all lookup default

ちなみに、NetworkManagerのdispatcherが有効になっていないと、ip rule showの表示内容に反映されない。また、次のエラーが表示される。

# cat /var/log/messages|grep NetworkManager
…
... NetworkManager[xxx]: <warn>  [xxx] ifcfg-rh:     'rule-' file is present; you will need to use a dispatcher script to apply these routes
…


(adsbygoogle = window.adsbygoogle || []).push({});


(adsbygoogle = window.adsbygoogle || []).push({});

-1. システムエンジニアリング, Linux, ネットワーク

執筆者:


  1. […] ルダウンロードのみに限定したsftpを公開したい。 このサーバの存在も隠蔽するために、以前の記事で、新しいIPアドレスを追加した。 この新しく追加したIPアドレスで、sftpを公開する。 […]

comment

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

関連記事

wildflyアップロードサイズ上限

多くのWebサーバやAPサーバでは、サーバリソースの過剰な消費やDoS攻撃に対する対処として、アップロードの最大サイズが決められている。(厳密には、ブラウザから入力値やファイル等のデータを送信するため …

Apache HttpClientの通信内容をダンプ

アプリやミドルウェの動作の正常性確認や問題発生時の問題切り分けのために、HTTPリクエストやレスポンスのヘッダやボディを確認したい場合がある。Java系のアプリではApacheのHttpClientが …

WebサイトのSSL化

次のようなGoogleウェブマスター向け公式ブログでの推奨や、リモートか管理の安全性向上の向上のためにSSL(TLS)を有効にする。 概要 Googleさんの考え 保護されたウェブの普及を目指して(2 …

開発・検証用のダミーメールサーバの構築(fakeSMTP)

アプリ開発や検証等でメールサーバを利用したい場合がある。 プロジェクトで共有の検証用メールサーバを構築できると効率が良いか、その準備が間に合わなかったり、使用者が限定的な場合は、使用者の開発環境上に構 …

jQueryによるデフォルトボタンの実装

デフォルトボタンについて Webページ上でエンターキーを押した場合、そのページ上であらかじめ決められたボタンをクリックしたかのように処理を実行する仕組みがある。何らかのデータの検索を行うようなページは …

プロフィール ゆっきーです。
都内でシステムエンジニアをやっています。
もっと詳細を見る