#author("2025-11-03T04:49:33+00:00","default:sysosa","sysosa") #author("2025-11-03T05:54:42+00:00","default:sysosa","sysosa") プロキシサーバを作ってみる 流れ的には rockylinux9 に2本のnicを繋げて片方はインターネットに繋がって、もう片方は内部LANに繋がる。 だけど、 -firewalldによるマスカレードははし -/proc/sys/net/ipv4/ip_forwardの値は「0」 として代わりに -squidを入れて -chronyも有効にする とします。 本家 squid様 [[https://www.squid-cache.org/>+https://www.squid-cache.org/]] ***構築 [#a43755cf] インターネット側のnicにはGWとNSを設定して 192.168.0.86/24 が割り当て、もう片方の内部の方は 10.10.0.1/24 のみ割り当てる. #code(nonumber){{ [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を入れます #code(nonumber){{ [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 --now }} squidの設定はあまり弄らずそのままを使ってます。なので、proxy先はこのマシンの3128ポートになります ***クライアント [#v19b8a39] 内側のマシンの話. 「10.10.0.2/24」なマシンで GW は付けない #code(nonumber){{ [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 ~]# }} ***windows11をプロキシサーバにしてみる [#dbab94db] 本家様の[[https://wiki.squid-cache.org/KnowledgeBase/Windows>+https://wiki.squid-cache.org/KnowledgeBase/Windows]]を参照すると [[https://squid.diladele.com/>+https://squid.diladele.com/]] から得られるみたい 得られたインストーラーは「squid.msi」(16.6MB) これを起動してインストールを進めます &ref(2025y11m03d_021300299.png,nolink,80%); &ref(2025y11m03d_021304873.png,nolink,80%); &ref(2025y11m03d_021309520.png,nolink,80%); &ref(2025y11m03d_021312704.png,nolink,80%); &ref(2025y11m03d_021322904.png,nolink,80%); &ref(2025y11m03d_021333593.png,nolink,80%); インストールが完了するとどうやら稼働しているようで タスクマネージャの「サービス」に登録されている &ref(2025y11m03d_021451913.png,nolink); 設定らはインジケーターにあるアイコンで項目が選べて &ref(2025y11m03d_022410958.png,nolink); 初期設定は下記のようになってます #code(nonumber){{ # # 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」で反映. ***windows11をプロキシサーバにしてみる - 時計サーバ [#mf46bb4f] windowsには時計合わせとして w32time が入っている. これをサーバとして稼働させる. まずは現状確認. [スタート]を右クリックして「ターミナル(管理者)」を立ち上げて、「w32tm /query /status」と実行してみる #code(nonumber){{ 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」を実施します #code(nonumber){{ 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」にします &ref(2025y11m03d_133224257.png,nolink); &ref(2025y11m03d_133439505.png,nolink); ターミナルからは「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」にします &ref(2025y11m03d_133812552.png,nolink); &ref(2025y11m03d_134053494.png,nolink); ターミナルからは「reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config /v AnnounceFlags /t REG_DWORD /d 5 /f」と実行すれば同じことになります. あとは w32time を再起動します。コマンドラインから #code(nonumber){{ 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マシンからは #code(nonumber){{ [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>+https://www.meinbergglobal.com/english/sw/ntp.htm]] とかがいいみたい.