プロキシサーバを構築する。
| 登録日 | :2024/03/20 21:08 |
|---|---|
| カテゴリ | :Linux |
RockyLinux8でプロキシサーバを構築してみる。
1 プロキシサーバ側
Linuxでプロキシサーバを構築するのは、squidをインストールするだけでサクッとできる。
[root@rpmbuild installer]# yum -y install squid 2>&1 | tee yum_install_squid
Rocky Linux 8 - AppStream 4.0 kB/s | 4.8 kB 00:01
Rocky Linux 8 - AppStream 1.3 MB/s | 11 MB 00:08
Rocky Linux 8 - BaseOS 3.7 kB/s | 4.3 kB 00:01
Rocky Linux 8 - BaseOS 1.2 MB/s | 7.1 MB 00:06
Rocky Linux 8 - Extras 2.8 kB/s | 3.1 kB 00:01
Rocky Linux 8 - Extras 9.1 kB/s | 14 kB 00:01
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン Repo サイズ
================================================================================
インストール:
squid x86_64 7:4.15-7.module+el8.9.0+1599+7025d9cc.3 appstream 3.5 M
依存関係のインストール:
libecap x86_64 1.0.1-2.module+el8.9.0+1437+df5ea8f0 appstream 28 k
perl-Digest-SHA x86_64 1:6.02-1.el8 appstream 65 k
モジュールストリームの有効化中:
squid 4
トランザクションの概要
================================================================================
インストール 3 パッケージ
ダウンロードサイズの合計: 3.6 M
インストール後のサイズ: 12 M
パッケージのダウンロード:
(1/3): libecap-1.0.1-2.module+el8.9.0+1437+df5e 41 kB/s | 28 kB 00:00
(2/3): perl-Digest-SHA-6.02-1.el8.x86_64.rpm 88 kB/s | 65 kB 00:00
(3/3): squid-4.15-7.module+el8.9.0+1599+7025d9c 1.2 MB/s | 3.5 MB 00:02
--------------------------------------------------------------------------------
合計 988 kB/s | 3.6 MB 00:03
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
scriptletの実行中: squid-7:4.15-7.module+el8.9.0+1599+7025d9cc.3.x86_64 1/1
準備 : 1/1
インストール中 : perl-Digest-SHA-1:6.02-1.el8.x86_64 1/3
インストール中 : libecap-1.0.1-2.module+el8.9.0+1437+df5ea8f0.x86_64 2/3
scriptletの実行中: libecap-1.0.1-2.module+el8.9.0+1437+df5ea8f0.x86_64 2/3
scriptletの実行中: squid-7:4.15-7.module+el8.9.0+1599+7025d9cc.3.x86_64 3/3
インストール中 : squid-7:4.15-7.module+el8.9.0+1599+7025d9cc.3.x86_64 3/3
scriptletの実行中: squid-7:4.15-7.module+el8.9.0+1599+7025d9cc.3.x86_64 3/3
検証 : libecap-1.0.1-2.module+el8.9.0+1437+df5ea8f0.x86_64 1/3
検証 : perl-Digest-SHA-1:6.02-1.el8.x86_64 2/3
検証 : squid-7:4.15-7.module+el8.9.0+1599+7025d9cc.3.x86_64 3/3
インストール済み:
libecap-1.0.1-2.module+el8.9.0+1437+df5ea8f0.x86_64
perl-Digest-SHA-1:6.02-1.el8.x86_64
squid-7:4.15-7.module+el8.9.0+1599+7025d9cc.3.x86_64
完了しました!
squidは3128番ポートを使うのでfirewalldでその穴開けをするが、今回はテストなので、firewalldを無効化しておく。
[root@rpmbuild installer]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enable>
Active: inactive (dead) since Wed 2024-03-20 19:28:54 JST; 17s ago
Docs: man:firewalld(1)
Process: 838 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, >
Main PID: 838 (code=exited, status=0/SUCCESS)
2 クライアントからの接続確認
squidを構築したサーバとは別のホストにて、プロキシサーバを経由してアクセスができるのかを確認する。
※ちなみに、このホストはインターネットに接続するポートをシャットダウンして、単独ではインターネットに接続できないようにしている。
HTTPのプロキシ設定(環境変数)
export http_proxy=http://192.168.56.110:3128
curlで応答を確認する。
[root@compute01 lib]# curl www.google.com --head
HTTP/1.1 200 OK
Content-Type: text/html; charset=ISO-8859-1
Content-Security-Policy-Report-Only: object-src 'none';base-uri 'self';script-src 'nonce-REI_DBY_evC37dr0RWZzPw' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Date: Wed, 20 Mar 2024 12:07:01 GMT
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Expires: Wed, 20 Mar 2024 12:07:01 GMT
Cache-Control: private
Set-Cookie: 1P_JAR=2024-03-20-12; expires=Fri, 19-Apr-2024 12:07:01 GMT; path=/; domain=.google.com; Secure
Set-Cookie: AEC=Ae3NU9O_NyxMnlhD8nz9W5uvKn-L1W9OExjRIAqpF5pDOUuZkH_olm1NX90; expires=Mon, 16-Sep-2024 12:07:01 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax
Set-Cookie: NID=512=DvKWDDOvDSajJVj_hXm1UbHA-_wG1oYxiHQ-Y1ZlHX7F2nA-00xUlCwJRDTcLvar6yCHKSRdCnWH4z70b7tMiD2C3-stL1pDw1mwAzhwJVZhrRaBiO70-etTegevWmWwvUMhIuBo50Omc8CZf6xZhiIsXna5YO3SF9UVO2S993w; expires=Thu, 19-Sep-2024 12:07:01 GMT; path=/; domain=.google.com; HttpOnly
X-Cache: MISS from rpmbuild
X-Cache-Lookup: MISS from rpmbuild:3128
Via: 1.1 rpmbuild (squid/4.15)
Connection: keep-alive
HTTP/1.1 200 OKが返ってきており、HTTPの応答が正常であることがわかる。
また、最後から2番目にて、Via 1.1 rpmbuild(squid/4.15)があることから、rpmbuildというホスト名のsquidを経由してアクセスしていることがわかる。
dnfでの利用を含めて恒久的な設定にする場合は、以下のように/etc/profile.d/proxy.shを作成する。
[root@compute01 profile.d]# cat /etc/profile.d/proxy.sh
MY_PROXY_URL="192.168.56.110:3128"
HTTP_PROXY=$MY_PROXY_URL
HTTPS_PROXY=$MY_PROXY_URL
FTP_PROXY=$MY_PROXY_URL
http_proxy=$MY_PROXY_URL
https_proxy=$MY_PROXY_URL
ftp_proxy=$MY_PROXY_URL
export HTTP_PROXY HTTPS_PROXY FTP_PROXY http_proxy https_proxy ftp_proxy
[root@compute01 profile.d]#
有効にするためには、再起動するかsourceコマンドで読み込む
source /etc/profile.d/proxy.sh
3 アクセスログの確認
デフォルトでは、アクセスログがUNIXタイムスタンプで醜いため、/etc/squid/squid.confに次の2行を追加する。
[root@rpmbuild squid]# cat /etc/squid/squid.conf
(省略)
logformat timefm %{%Y/%m/%d %H:%M:%S}tl %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
access_log daemon:/var/log/squid/access.log timefm
squidを再起動して、再度クライアントからHTTPへのアクセスをしてアクセスログを見ると以下のように、見やすい時間となったことがわかる。
1710951496.898 141 192.168.56.112 TCP_MISS/200 1223 HEAD http://www.google.com/ - HIER_DIRECT/172.217.25.164 text/html
2024/03/21 01:24:34 1710951874.618 286 192.168.56.112 TCP_MISS/200 1223 HEAD http://www.google.com/ - HIER_DIRECT/172.217.25.164 text/html
参考)構築手順1
参考)構築手順2
参考)lログの時刻フォーマット