2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azureの仮想マシンで行うプロキシサーバー検証

Last updated at Posted at 2024-01-31

こんにちは、バクソクキャッチアップニキことdessinです。
ネットワークスペシャリストの勉強を始めました。
プロキシサーバーがよく出題されてますよね。それだけ実務では登場するのでしょう。
検証してみて、実務経験を補おう!というのがこの記事のテーマです。
プロキシの機能などの説明はありません。

概要

Azureの仮想ネットワーク上に、Linuxマシン(プロキシサーバー)とWindowsマシン(クライアント)を作成し、Windowsからインターネットへつなぎます。Linuxにはsquidを入れます。最後にログを見て終了。

ネットワーク環境構築は、親愛なるyamapanさんの力をお借りしました。
デプロイがあっという間にできてびっくりです(後述)。

作業

全体の流れは次の通りです。

  1. ネットワーク構築
  2. Linuxマシンにsquidインストール、各種設定
  3. windowsマシンからでインターネット接続
  4. ログをとってみる

1.ネットワーク構築

普段通りAzure Portalでポチポチやってもいいですが、そんな作業はもはや時間の無駄。。。。とはyamapanさんの弁。
氏の力を借りて、IaCでデプロイする方法を試させてもらいました。まじすげえっすパイセン。俺もこれ書けるようになりてぇっす。

方法を紹介します。
まずはyamapanさんのgithubにアクセス。
Deploy to Azureをクリックするとカスタムデプロイ画面に行きますが、ここのパラメーターの編集に・・・image.png

yamapanさんのフォルダにある"parameters.json"のコードを全部上書きコピぺします。そして保存。
あとはカスタムデプロイ画面で、ユーザーネームとパスワードは自分で適当に変えてください。それだけでgithubに説明されている環境ができます。image.png

起動された状態でデプロイされます。マシンは結構なサイズなので、費用が気になるようなら適宜停止(割り当て解除)してください。ケチをつけているのではなく、私がケチなだけです。

前準備として、ネットワークセキュリティグループの設定をします。
今はSSHとRDPの許可だけしておきます。
あとは、各マシンのIPアドレスを控えておきましょう。

2-1. Linuxマシンにsquidインストール

以下の作業はこちらのサイトを大いに参考にしました。
必須だと思う操作だけ書いていきます。

sudo apt update
sudo apt upgrade
sudo apt install squid
squid -v

squidのバージョンは4.10でした。
squidは3128ポートを使用するらしいですが、単純化するためにFWを無効のまま進めてみたいので開放せずに行きます。

認証機能のためにapache2-utilsが必要らしいです。

sudo apt install apache2-utils

2-2. squidの各種設定

WinSCPなる便利ツールを使ってconfigを変更します。
ホスト名にパブリックIPアドレスを入れて、認証します。image.png
あとはエクスプローラーみたいにUbuntuの中が見られるので直感的に操作できると思います。
/etc/squid/squid.confファイルを探して、編集します。
ファイルはダブルクリックで開けて、Ctrl+fで文字列の検索もできます。viエディタより楽ですね。
"acl CONNECT method CONNECT"を検索して、それの下の行から追記します。

auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/.htpasswd
auth_param basic children 3
auth_param basic realm Proxy Authentication
auth_param basic credentialsttl 24 hours
acl basic_user proxy_auth REQUIRED
http_access allow basic_user

ファイルの権限を変更しておくのを忘れました。
Ubuntuで、

chmod 777 /etc/squid/squid.conf

これをやっても、confファイルの保存時に次のような警告が出ますが、保存できるようです。image.png

2-3. ユーザーの登録

ユーザー登録します。

sudo htpasswd -c /etc/squid/.htpasswd testuser
New password:
Re-type new password:
Adding password for user testuser

適当にパスワードを設定してください。
最後に変更した設定を反映します。

sudo systemctl reload squid

いったん、Ubuntu側での操作は完了。間違ってたら戻ってきます。

3. Windowsからインターネットに接続

Windowsを積んだ仮想マシンにRDPします。
早速、例のごとくLocal Serverの設定から IE Enhanced Security ConfigurationをOffにします。
そのあとWindows SettingsからNetwork & Internetに行き、
image.png
Proxyの設定をします。AddressにはUbuntuマシンのプライベートIPアドレスを、Portにはsquidが使用する3128を入力しましょう。
image.png

4. インターネットに接続

さてこれでプロキシを介してインターネットに出られるか確認します。
WindowsマシンでIEを開き、yahooのページでも検索してみます。
image.png
プロキシが応答していない、とのことなので、やはりOSレベルで3128ポートの許可が必要なのかしら。

sudo ufw allow 3128

その後再度接続。
私の環境ではもう一度同じエラーがでました。
※aclに追記する設定が誤っていたのがエラーの原因でした。squidを再起動するときに、
Job for squid.service failed because the control process exited with error code.
See "systemctl status squid.service" and "journalctl -xe" for details.
と出たのですが、これはconfファイルの誤りが原因だそうです。

confを修正して(本文では修正済みです!)、

sudo systemctl restart squid

これでうまくいったようです。
image.png
IPアドレスを確認するサイトに行ってみましょう。
UbuntuのグローバルIPアドレスになっていれば成功です。

5. ログの確認

squidでは、ログファイルが/var/log/squid/access.logにあります。
次のようにコマンドを打つと、リアルタイムに見られます。LPICの勉強にもなる、うひょー

tail -f /var/log/squid/access.log

これでみるに、10.100.1.4(WindowsマシンのプライベートIPアドレス)から要求が来ています。
メソッドはCONNECTですね。ネスぺで出たやつやって思いました。
image.png
詳しくは説明しませんが、HTTPSのときはプロキシにCONNECTメソッドで通信要求するよ、という問題だったような。
実際、Windowsマシンのブラウザではhttpsがついていました。image.png

これにて今回の検証はおしまい。お疲れさまでした。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?