自宅サーバの公開用にグローバルIPを取得して運用しています。自宅サーバではonwCloud/Zabbix/開発用サーバ等複数のサービスを複数台のサーバを使って運用してます。サービス毎にNAPTしてこのサービスは、このポートでアクセスという事は非常に手間なのでやりたくないです。公衆無線LANやイベント会場などではネットワーク上のFWが80(http)と443(https)のポートしか通さない設定になってたりするので、いつでもどこからでもはアクセス出来ないので決定的に却下。サービス毎にグローバルIPを準備する。問題の解決手法としてはナンセンス。これらのサービスをインターネット側から、いつでも、どこからでも確認できるようにするのが今回のゴールです。解決策ぱっと思いつく手段はリバースプロキシしか無かったので、まずはリバースプロキシで構成します。これなら、リバースプロキシでグローバルIP宛のhttpとhttpsのパケットを全て受け取り、リバースプロキシで「このホスト名なら、DMZネットワーク内のこのサーバの情報を返す」的な事が出来ます。今回は業務環境で使わないやつを使いたかったのでNginxを使うことに決定。今回の構成に関わる論理ネットワーク図ネットワーク構成を図にまとめるとこんな感じになります。グローバルIPアドレスに着信したHTTP/Sの通信は、DMZネットワーク内のNGINXで構成したリバースプロキシ(ホスト名:iwami35)へNATします。リバースプロキシへアクセスされたドメイン名に応じて、DMZネットワーク内のサーバへ振分けを行います。例)drive.k636174.netへアクセスしたら192.168.1.229の80へアクセス。今回は、素のCentOS7で構成。~]#nginxの設定ファイルは下記のような感じで作成。~]#11つの設定ファイルにまとめても良いですが、サブドメイン毎に設定ファイルを分けて管理した方が個人的には便利なので、サブドメイン毎にファイルを作る。例)zabbix.k636174.netに対するアクセスを処理する設定が記述されるファイル名は【zabbix.conf】にする。/etc/letsencrypt/live/zabbix.k636174.net/privkey.pem;}※全て、zabbix.k636174.net宛の通信のお話なので適時読み替えて下さい。行番号1〜5行目:80番ポートにアクセスしてきた場合の設定httpアクセスは問答無用でhttpsへリダイレクトを行う。Encrypt向けの設定(気が向いたら補足記事書きます)ルーターであるVyOS(ホスト名:hirahata32)の設定NATの設定(インターネット側からアクセスする際に必要)必要箇所のみ抜粋。'192.168.1.35'解説の必要も不要なぐらいシンプルですが、pppoe0のインターフェイス(グローバルIPが割当たっているインターフェイス)に着信した、httpとhttps(tcp)のパケットは192.168.1.35へNATされる。'192.168.1.32'DMZとパソコンやスマホを接続するネットワークを分離している。VLAN30のネットワークのプライマリDNSはVyOS(hirahata32)が提供しているのでVyOSに静的マッピングを記述。3行目を例にすると、zabbix.k636174.netの名前解決するとDMZ内のリバースプロキシのIP(iwami35)のIPアドレスが返される。VLAN30とDMZはルーティングしてあるので、VLAN30のネットワークからもリバースプロキシ越しに各サービスを利用出来る。コメントをキャンセルメールアドレスが公開されることはありません。新しい投稿をメールで受け取る【イベント】技術書展に行ってきたrpmdbが破損した場合の対処メモRECOMMENDこちらの記事も人気です。趣味でPHPとPerlとZabbixが大好きな0x18歳です。仕事はシステムの保守/開発系のエンジニア。詳細なプロフィール※このブログ内で書かれている内容は所属する組織の見解/知見ではなく個人の見解/知見です。※本ブログの内容を元に実施した作業等の結果、いかなる損失/損害/紛争等について、一切責任を負いません。