Blog

GIPを節約するサーバー間フォワードの設定事例

こんにちは。cocone connectでインフラエンジニアを担当している S です。

 

先日、社内業務で使用しているオンプレミス(以降、オンプレ環境と記します)の、サーバー環境で、GIPを節約して、サーバー間ポートフォワードの運用を指向した設定を行ったので、初期設定の部分をご紹介します。

背景

オンプレ環境で使用可能なGIPが減り、新たに追加した仮想サーバー間で、ポートフォワードの設定を試してみました。クラウドサービスでは機能があって、簡易な設定で実現できたりしますが、オンプレ環境の場合は、仕組みを多少理解し、それぞれ手動設定します

インターネット上で、有用な記事をいくつか検索して参考にさせて頂きましたが、実際に試した結果をもとに要点整理をしたので、技術共有情報としてお返ししたいと思います

環境

今回使用する環境は以下の通りとなります。

  • 使用ルーター  FortiGate 60F
  • インターネット回線  USENのベストエフォートタイプ(上り/下り 1Gbps)+16GIP
  • 仮想サーバー基盤  VMware ESXi 5.5   ※ちょっと古いですが・・
  • 仮想サーバーのOS  CentOS release 6.8 (Final)  ※今回対象の仮想ノードは3台

やりたいこと

今回やりたいことは以下の3つの項目となります。

  1. DBサーバー、Webサーバー、KVS(Redis等稼働)で、3台の仮想サーバーを立てる
  2. Webサーバー(Apache等稼働)をGIP受けにする ※GIP=200.200.1.10とします
  3. DBサーバー(MySQL等稼働)をWebサーバーのGIP経由、ポートフォワード受けにする

初期設定のポイント

続いて初期設定のポイントを紹介します。ポイントは3つで

  1. カーネルで1箇所設定変更 : /etc/sysctl.conf、「net.ipv4.ip_forward」の値 0->1
  2. iptablesへ3設定追加 : PREROUTING、POSTROUTING、FORWARDの追加
  3. iptablesで1行削除 : 「-A FORWARD -j REJECT」

となります。

Webサーバーのiptablesの設定内容(事後確認)

次にiptablesの設定内容を確認します。

view /etc/sysconfig/iptables

----------

# Generated by iptables-save v1.4.7 on Wed Jan 26 14:59:29 2022

*nat

:PREROUTING ACCEPT [0:0]

:POSTROUTING ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A PREROUTING -p tcp -m tcp --dport 3356 -j DNAT --to-destination 192.168.11.57:3306

-A POSTROUTING -j MASQUERADE

COMMIT

# Completed on Wed Jan 26 14:59:29 2022

# Generated by iptables-save v1.4.7 on Wed Jan 26 14:59:29 2022

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [4:688]

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

-A FORWARD -d 192.168.11.57/32 -p tcp -m tcp --dport 3356 -j ACCEPT

COMMIT

# Completed on Wed Jan 26 14:59:29 2022

iptablesの設定内容の補足説明

上記のiptablesの設定内容について少し補足説明をしようと思います。

まず青字で書かれた部分は、ポイント2の「iptablesへ3設定追加 : PREROUTING、POSTROUTING、FORWARDの追加」により反映された部分です。

ポイント3の「iptablesで1行削除 : 「-A FORWARD -j REJECT」」は、手動で削除します。

なお、ポイント1~3は、GIP受けのWebサーバーのみ実施しました

挙動について

GIP=200.200.1.10に対して、Webサーバー受けで、ポート番号=22(SSH)、80(HTTP)、443(HTTP)は正常通信します

GIP=200.200.1.10に対して、ポート番号=3356(MySQLのポート番号を変更)は、Webサーバーを経由して、DBサーバー(192.168.11.57)に、ポート番号=3306(MySQLのデフォルトポート番号)にポートフォワードして、サーバー間で転送します

初期設定手順(振り返り)

続いて初期設定の手順について振り返りをしようと思います。

初期設定については次のようなコマンドを順番に実施しました。

1.

  • カーネルで1箇所設定変更 : /etc/sysctl.conf、「net.ipv4.ip_forward」の値 0->1
  • ssh 192.168.11.58
  • vi /etc/sysctl.conf => 9行目付近の、net.ipv4.ip_forwardの値を、0 -> 1 に変更して保存
  • sysctl -a

 

2.

  • iptablesへ3設定追加 : PREROUTING、POSTROUTING、FORWARDの追加
  • ssh 192.168.11.58
  • iptables -t nat -A PREROUTING -p tcp –dport 3356 -j DNAT –to 192.168.11.57:3306
  • iptables -t nat -A POSTROUTING  -j MASQUERADE
  • iptables -A FORWARD -p tcp -d 192.168.11.57 –dport 3356 -j ACCEPT
  • service iptables save

 

3.

  • iptablesで1行削除 : 「-A FORWARD -j REJECT」
  • ssh 192.168.11.58
  • vi /etc/sysconfig/iptables =>「-A FORWARD -j REJECT」の行を削除して保存
  • service iptables restart

終わりに

ココネコネクトでは、クラウドサービス(AWS、GCP、IDCFなど)に加えて、オンプレミスのサーバーも、一部の社内運用で、使用しています。インフラエンジニアとして、各種、たずさわれる機会がありますので、成長の機会・選択肢も多く、また興味深く、取り組むこともできます。

弊社ではチャレンジ精神をお持ちの方など歓迎です。今回の技術整理はその一例でした。

 


 

cocone connectでは一緒に働く仲間を募集中です。

ご興味のある方は、こちらのリンクからぜひご応募ください。

 

cocone connect株式会社 採用情報

https://recruit.jobcan.jp/coconeconnect

 

cocone connect株式会社 公式サイト

https://connect.cocone.co.jp/

 

また、ココネでも一緒に働く仲間を募集中です。

ご興味のある方は、ぜひこちらの採用特設サイトをご覧ください。

https://www.cocone.co.jp/recruit/contents/

 

Category

Tag

%d人のブロガーが「いいね」をつけました。