2022-02-03 · 2분
サーバー構築 4
前回のトポロジを拡張する VMware 実習 — router2・Vmnet2・client-server を追加(既存 VM をクローン)、Vmnet/IP と netplan の再設定、ゾーン間の静的ルーティング、sunrin.com / skills.com / cs.com の DNS ゾーンまで。
2022-01-27 · 7분
この記事は公開から2年以上経過しています。
知っておくべき内容:
もっと見る
**[機能班学習/ネットワーク] - [ネットワーク] NAT について**](https://nabomhalang.tistory.com/entry/네트워크-NAT에-대해서) [[ネットワーク] NAT について — NAT は内部ネットワークから外部へ出るとき、内部 ip アドレスを別の ip に変換して外部へ出られるようにします。① NAT Static:送信元と宛先の ip を事前にマッピングして固定した NAT ② NAT Dynamic:送信元や宛先 — nabomhalang.tistory.com
Client が外部サーバー main_srv、slave_srv とは通信可能で、外部サーバーが client とは通信できないように設定しますが、これに NAT を使います。masquerade という機能を使います。

vim /etc/sysctl.conf
28 行目の net.ipv4.ip_forward=1 がコメントアウトされているはずなので、# を消してコメントを外し、:wq で出ます。
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ip4.ip_forward = 1
上の 2 つのコマンドのうち通るものでやります。
iptables -A FORWARD -o ens33 -j ACCEPT
iptables -A FORWARD -o ens37 -j ACCEPT
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
ens33(内部)ens37(外部)で接続できるよう全部 ACCEPT します。そして上の 3 つのコマンドを順に入力します。すると今度は Windows Client から main_server へ ping が送られます。

windows Client → main-server
次に Windows Client から ssh が接続できるよう設定します。main-server で行います。
apt install openssh-server
sudo systemctl status ssh
install openssh-server で ssh をインストールします。
※ openssh がインストールされない場合は ifconfig を打ってみて、ens33 がオフか、ens37 がオンかを確認しましょう。 ens33 は仮想ネットワークなのでパッケージをダウンロードするときはオフでなければならず、パッケージを受け取るには ens37 がオンでなければなりません。
インストール後、2 番目のコマンドを入力して実行中か確認しましょう。

実行中なのが確認できます。これで windows client から ssh で接続できるはずです。main で作ったので、私の場合は main-server の hostname が main なので ssh [email protected] で接続可能です。

windows terminal から main-server に接続した状況
次に root で一度に接続できるようにします。もし ssh [email protected] でいけると思うなら、一度やってみてください。たぶんダメです。では root で接続できるよう設定してみましょう。
※ もし Windows Client から ssh で接続できない場合、main-server で 22 番ポートが開いていない場合があります。その場合は main-server で ufw allow ssh または ufw allow 22 を入力してポートを再度開けてみましょう。

vim /etc/ssh/sshd_config
上のパスに vim で入って変えればよいです。
Port 22
- ssh が使う基本ポートを指定します。
AllowUsers user1 root
- ログインを許可するアカウントを記録します。
LoginGraceTime 600
- ユーザーのログインが正常に完了しなかったとき、この時間の後にサーバーが接続を切る時間です。
- デフォルト値は 600 秒です。
PermitRootLogin no
- root ログインの許可可否を決めるものです。 yes、no、without-password を使えます。
PasswordAuthentication yes
- パスワード認証を許可する。 このオプションはプロトコルバージョン 1 と 2 の両方に適用されます。
認証時にパスワードベースの認証方法を使うかどうかを決めます。
強力なセキュリティのため、このオプションは常に no に設定されているべきです。
ここで root ログインを許可するには PermitRootLogin を yes に変えれば ssh [email protected] で接続可能になります。ポート番号も変えたいなら Port 22 の 22 を好きなポートに変えればよいです。その場合は ssh [email protected] -p [ポート] で接続します。

設定
上の例では 22000 ポートで開き、RootLogin を許可しました。

ssh [email protected] -p 22000
上のように root できちんと接続できるのが分かります。次は apache で Web サービスをやってみます。
apt install apache2
上のコマンドを入力すると apache2 がインストールされます。
※ これ以降、ens33 と ens37 をオフ・オンする類のことは自分でやる必要があります。
apache が正常にインストールされたら、windows client に行ってブラウザ窓を開き、main-server の IP を入力してみましょう。すると apache2 の基本的なサイト画面が出ます。では基本テンプレートを消して "Hello World" を入力してみましょう。すると下のような画面が出ます。

22.1.24.10
きちんと出るのが確認できます。次に slave-server には nginx をインストールして、apache で設定したのと同様に設定します。
apt install nginx
vim /var/www/html/index.nginx-debian.html
これもインストールが完了すれば、apache と同様に IP で接続できるようになります。

vim /var/www/html/index.nginx-debian.html
上のようにきちんと変えたら、再び windows client に移動して今度は slave-server の IP をブラウザ窓に入れると、apache で設定したのと同様に画面に表示されるのが確認できます。

apache2
apache2 は合計 2 つのファイルを変える必要があります。まず /var/www/html/ が基本ディレクトリですが、これを /home/main/server/ に変えてみましょう。
vim /etc/apache2/apache2.conf
vim /etc/apache2/sites-available/000-default.conf
上の 2 ファイルで修正する必要があります。

vim /etc/apache2/apache2.conf
164 行目にある /var/www/html/ と書かれた所を /home/main/server/ に変えます。

vim /etc/apache2/sites-available/000-default.conf
DocumentRoot に書かれた /var/www/html/ ファイルを /home/main/server/ に変えます。その後 /home/main/server ディレクトリ内に index.html を作成して基本的な html ファイルを作ります。その後 apache2 を再起動します。
systemctl restart apache2
service apache2 restart
2 つのうち 1 つだけできればよいです。

適用後
適用後、とてもよく変わったのが分かります。
nginx
nginx は非常に簡単です。たった 1 つのファイルを変えればよいです。
vim /etc/nginx/sites-enabled/default

vim /etc/nginx/sites-enabled/default
server で root にある /var/www/html/ を /home/slave-server/server/ に変えます。その後再起動すると正常に動作するのが分かります。

適用後
テーブル(Table)
アクション(Action)
チェイン(Chain)
マッチ(Match)
ターゲット(target)
上のものをうまく活用すれば、ほとんどすべてのポリシーを設定できるはずです。簡単な問題です。ルーターで main-server から来る 80port を遮断してみましょう。遮断に成功すれば、windows client から 22.1.24.10 の apache サーバーで開いたものが入れなくなりますよね?
全部やりましたか… 正解を公開します。
iptables -I FORWARD -d 22.1.24.10 -p tcp --dport 80 -j DROP
上のコードをルーターに入力した後、windows client から 22.1.24.10 に接続してみると

では再び iptables -F を入力した後、もう一度接続してみましょう。

再びきちんと接続される様子が確認できます。もしルーターではなく main-server 自体で 80 ポートを塞ぎたいなら
iptables -I INPUT -p tcp --dport 80 -j DROP
のように書けば、同様に windows client からは接続できません。
今日はここまでです。
原文(韓国語): tistory — 2022-01-27 公開、当ブログへ移行。この翻訳は AI の協力で作成されました。
…