NDW

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

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

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

関連記事

ftp, ftps, sftpの違い

開発対象システムの連携先システムとして、ftpsやらftpsサーバが指定される場合がある。 私の場合、開発標準の役割を担う場合が多く、これらの仕様を把握し、動作確認や単体テスト用のダミーのサーバを用意 …

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

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

承認欲求が強くて失敗したSEの話

愚直に成果を出すことしか知らなかったシステムエンジニアが、デスマーチなプロジェクトで心を病みそうになったが、「嫌われる勇気」を読んで逆に強くなったお話です。 モノ作りが好きだが「コミュニケーションが苦 …

TeraTermを使ったSSH鍵の作成方法

WindowsでSSH接続するためのTera Termで、SSH鍵を作成する方法を説明します。 概要 Windows10(64ビット)で動作するTera Term 4.105で動作確認しました。 クラ …

PowerPointの削除できない個人情報を消す

PowerPointで「個人情報の削除」を実行するとこで、作成者や会社名等の個人情報を削除できます。しかしながら、特定の項目に入った個人情報については、PowerPointやWindowsの標準機能で …