プロキシサーバを作ってみる
流れ的には rockylinux9 に2本のnicを繋げて片方はインターネットに繋がって、もう片方は内部LANに繋がる。
だけど、
として代わりに
とします。
本家 squid様 https://www.squid-cache.org/
インターネット側のnicにはGWとNSを設定して 192.168.0.86/24 が割り当て、もう片方の内部の方は 10.10.0.1/24 のみ割り当てる.
[root@bridge-router ~]# cat /etc/redhat-release
Rocky Linux release 9.6 (Blue Onyx)
[root@bridge-router ~]# systemctl disable firewalld
[root@bridge-router ~]# systemctl stop firewalld
[root@bridge-router ~]# reboot
[root@bridge-router ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp6s18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether bc:24:11:ac:33:9b brd ff:ff:ff:ff:ff:ff
inet 192.168.0.86/24 brd 192.168.0.255 scope global dynamic noprefixroute enp6s18
valid_lft 43195sec preferred_lft 43195sec
inet6 fe80::be24:11ff:feac:339b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: enp6s19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether bc:24:11:d3:ec:86 brd ff:ff:ff:ff:ff:ff
inet 10.10.0.1/24 brd 10.10.0.255 scope global noprefixroute enp6s19
valid_lft forever preferred_lft forever
[root@bridge-router ~]# ip route
default via 192.168.0.1 dev enp6s18 proto dhcp src 192.168.0.86 metric 100
10.10.0.0/24 dev enp6s19 proto kernel scope link src 10.10.0.1 metric 101
192.168.0.0/24 dev enp6s18 proto kernel scope link src 192.168.0.86 metric 100
[root@bridge-router ~]# systemctl status firewalld
○ firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@bridge-router ~]# cat /proc/sys/net/ipv4/ip_forward
0
[root@bridge-router ~]#そしてsquidを入れます
[root@bridge-router ~]# dnf install squid
[root@bridge-router ~]# systemctl enable squid --now
(chronyの設定)
[root@bridge-router ~]# vi /etc/chrony.conf
server c.sybyl.local iburst
allow 10.10.0.0/24
[root@bridge-router ~]# systemctl enable chronyd --nowsquidの設定はあまり弄らずそのままを使ってます。なので、proxy先はこのマシンの3128ポートになります
内側のマシンの話.
「10.10.0.2/24」なマシンで GW は付けない
[root@r9 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp6s18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether bc:24:11:bf:25:df brd ff:ff:ff:ff:ff:ff
inet 10.10.0.2/24 brd 10.10.0.255 scope global noprefixroute enp6s18
valid_lft forever preferred_lft forever
[root@r9 ~]# ip route
10.10.0.0/24 dev enp6s18 proto kernel scope link src 10.10.0.2 metric 100
[root@r9 ~]# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 10.10.0.1 3 6 377 59 +4601ns[ +15us] +/- 3480us
[root@r9 ~]# cat /etc/yum.conf
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
proxy=http://10.10.0.1:3128
[root@r9 ~]#本家様のhttps://wiki.squid-cache.org/KnowledgeBase/Windows
を参照すると https://squid.diladele.com/
から得られるみたい
得られたインストーラーは「squid.msi」(16.6MB)
これを起動してインストールを進めます

インストールが完了するとどうやら稼働しているようで
タスクマネージャの「サービス」に登録されている

設定らはインジケーターにあるアイコンで項目が選べて

初期設定は下記のようになってます
#
# Recommended minimum configuration:
#
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
#
# Recommended minimum Access Permission configuration:
#
# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager
# Deny requests to certain unsafe ports
http_access deny !Safe_ports
# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports
# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all
# Squid normally listens to port 3128
http_port 3128
# Uncomment the line below to enable disk caching - path format is /cygdrive/<full path to cache folder>, i.e.
#cache_dir aufs /cygdrive/d/squid/cache 3000 16 256 <--- squidのキャッシュ機能. 「/cygdrive/d」はD:ドライブを意図するみたい
# Leave coredumps in the first cache dir
coredump_dir /var/cache/squid
# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
dns_nameservers 8.8.8.8 208.67.222.222 <--- squidサーバ自身が参照するDNS, 指定しないと squidサーバの /etc/resolv.conf が使われる.
max_filedescriptors 3200変更箇所としては「dns_nameservers」位でしょうか。
値を修正したらsquidのメニューにある「Stop Squid Service」->「Start Squid Service」で反映.
windowsには時計合わせとして w32time が入っている. これをサーバとして稼働させる.
まずは現状確認. [スタート]を右クリックして「ターミナル(管理者)」を立ち上げて、「w32tm /query /status」と実行してみる
PS C:\Users\supervisor> w32tm /query /status
閏インジケーター: 3 (同期未実行)
階層: 0 (未指定)
精度: -23 (ティックごとに 119.209ns)
ルート遅延: 0.0000000s
ルート分散: 0.0000000s
参照 ID: 0x00000000 (未指定)
最終正常同期時刻: 未指定
ソース: Local CMOS Clock
ポーリング間隔: 10 (1024s)
PS C:\Users\supervisor>windowsPCの内部時計に依存して時計合わせを行っている模様. これを外部の時計サーバを参照して時計合わせするようにします.
使用するコマンドは「w32tm /config /manualpeerlist:"192.168.0.3" /syncfromflags:manual /update」
その後に「w32tm /resync」を実施します
PS C:\Users\supervisor> w32tm /config /manualpeerlist:"192.168.0.3" /syncfromflags:manual /update
コマンドは正しく完了しました。
PS C:\Users\supervisor> w32tm /resync
再同期コマンドをローカル コンピューターに送信しています
コマンドは正しく完了しました。
(確認)
PS C:\Users\supervisor> w32tm /query /status
閏インジケーター: 0 (警告なし)
階層: 3 (二次参照 - (S)NTP で同期)
精度: -23 (ティックごとに 119.209ns)
ルート遅延: 0.0061856s
ルート分散: 7.7825708s
参照 ID: 0xC0A80003 (ソース IP: 192.168.0.3)
最終正常同期時刻: 2025/11/03 13:19:36
ソース: 192.168.0.3
ポーリング間隔: 10 (1024s)
PS C:\Users\supervisor>これで外部のntpサーバを利用できる形になりました. 次に windowsPC がntpサーバとして動くようにします.
レジストリエディタ「regedit」を起動させ、「コンピューター\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer」に行き
そこにある名前「Enabled」を「0」から「1」にします

ターミナルからは「reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer /v Enabled /t REG_DWORD /d 1 /f」と実行すれば同じことになります.
次に「コンピューター\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config」に行き
そこにある「AnnounceFlags」を「10」から「5」にします

ターミナルからは「reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config /v AnnounceFlags /t REG_DWORD /d 5 /f」と実行すれば同じことになります.
あとは w32time を再起動します。コマンドラインから
net stop w32time
net start w32timeこれでwindowsPCがntpサーバになります.
最後にサービスを提供するので相手からの受信を許容するように windows ファイアウォール を修正します。
GUIでの操作もできますが、面倒なのでコマンドラインで下記を実行してください。これで完了となります
「netsh advfirewall firewall add rule name="NTP Server" dir=in action=allow protocol=UDP localport=123」
っで実際内部のlinuxマシンからは
[root@r9 ~]# cat /etc/chrony.conf
server 10.10.0.1 iburst
[root@r9 ~]#で繋げたけど、10min位でconnectionが叶いました. より高性能なwindows向け ntp サーバを作るなら「Meinberg NTP for Windows」https://www.meinbergglobal.com/english/sw/ntp.htm
とかがいいみたい.