
GIPを節約するサーバー間フォワードの設定事例
-
2022年2月24日
こんにちは。cocone connectでインフラエンジニアを担当している S です。
先日、社内業務で使用しているオンプレミス(以降、オンプレ環境と記します)の、サーバー環境で、GIPを節約して、サーバー間ポートフォワードの運用を指向した設定を行ったので、初期設定の部分をご紹介します。
背景
オンプレ環境で使用可能なGIPが減り、新たに追加した仮想サーバー間で、ポートフォワードの設定を試してみました。クラウドサービスでは機能があって、簡易な設定で実現できたりしますが、オンプレ環境の場合は、仕組みを多少理解し、それぞれ手動設定します
インターネット上で、有用な記事をいくつか検索して参考にさせて頂きましたが、実際に試した結果をもとに要点整理をしたので、技術共有情報としてお返ししたいと思います
環境
今回使用する環境は以下の通りとなります。
- 使用ルーター FortiGate 60F
- インターネット回線 USENのベストエフォートタイプ(上り/下り 1Gbps)+16GIP
- 仮想サーバー基盤 VMware ESXi 5.5 ※ちょっと古いですが・・
- 仮想サーバーのOS CentOS release 6.8 (Final) ※今回対象の仮想ノードは3台
やりたいこと
今回やりたいことは以下の3つの項目となります。
- DBサーバー、Webサーバー、KVS(Redis等稼働)で、3台の仮想サーバーを立てる
- Webサーバー(Apache等稼働)をGIP受けにする ※GIP=200.200.1.10とします
- DBサーバー(MySQL等稼働)をWebサーバーのGIP経由、ポートフォワード受けにする
初期設定のポイント
続いて初期設定のポイントを紹介します。ポイントは3つで
- カーネルで1箇所設定変更 : /etc/sysctl.conf、「net.ipv4.ip_forward」の値 0->1
- iptablesへ3設定追加 : PREROUTING、POSTROUTING、FORWARDの追加
- 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://www.cocone.co.jp/recruit/contents/