環境
CentOS 7.3 minimum install + SQUID
事象
SQUIDを起動すると、ランダムに決まる1つのUDP higher port が、全インタフェースでListenになります。下記の例では、 udp : 60412 がOpenとなっています。
[root@localhost ~]# ss -natu Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 127.0.0.1:323 *:* udp UNCONN 0 0 *:60412 *:* udp ESTAB 0 0 192.168.75.131:46611 133.242.147.113:123 udp UNCONN 0 0 *:68 *:* udp UNCONN 0 0 *:34964 *:* udp UNCONN 0 0 ::1:323 :::* udp UNCONN 0 0 :::47850 :::* udp UNCONN 0 0 :::60297 :::* tcp LISTEN 0 128 *:22 *:* tcp LISTEN 0 100 127.0.0.1:25 *:* tcp LISTEN 0 128 :::22 :::* tcp LISTEN 0 128 :::3128 :::* tcp LISTEN 0 100 ::1:25 :::*
理由
Proxy サーバは名前解決を頻繁に行います (クライアントがアクセスしたい URL の名前解決を一手に引き受けています)。そのため、待ち受けポートを固定し、効率化しています。
実際に tcpdump を行うと以下のようになります。
[root@localhost ~]# tcpdump -i ens33 udp port 53 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens33, link-type EN10MB (Ethernet), capture size 65535 bytes 23:32:10.664708 IP localhost.localdomain.60412 > gateway.domain: 992+ A? detectportal.firefox.com. (42) 23:32:10.665239 IP localhost.localdomain.60412 > gateway.domain: 22057+ AAAA? detectportal.firefox.com. (42) 23:32:10.723604 IP gateway.domain > localhost.localdomain.60412: 22057 2/1/0 CNAME detectportal.firefox.com.edgesuite.net., CNAME a1089.d.akamai.net. (181) 23:32:58.383506 IP localhost.localdomain.60412 > gateway.domain: 56311+ PTR? 1.75.168.192.in-addr.arpa. (43) 23:32:58.385393 IP localhost.localdomain.60412 > gateway.domain: 42059+ A? www.yahoo.co.jp. (33) 23:32:58.386820 IP gateway.domain > localhost.localdomain.60412: 56311 NXDomain 0/0/0 (43) 23:32:58.388110 IP localhost.localdomain.60412 > gateway.domain: 1918+ AAAA? www.yahoo.co.jp. (33) 23:32:58.398340 IP localhost.localdomain.60412 > gateway.domain: 32421+ A? uib.ff.avast.com. (34) 23:32:58.399232 IP localhost.localdomain.60412 > gateway.domain: 65000+ AAAA? uib.ff.avast.com. (34) 23:32:58.444387 IP gateway.domain > localhost.localdomain.60412: 42059 2/0/0 CNAME edge.g.yimg.jp., A 182.22.24.252 (75) 23:32:58.454436 IP gateway.domain > localhost.localdomain.60412: 1918 1/0/0 CNAME edge.g.yimg.jp. (59) 23:32:58.454478 IP gateway.domain > localhost.localdomain.60412: 32421 4/0/0 CNAME urlinfo.ns1.ff.avast.com., A 77.234.41.40, A 77.234.41.43, A 77.234.41.42 (108) 23:32:58.454482 IP gateway.domain > localhost.localdomain.60412: 65000 1/1/0 CNAME urlinfo.ns1.ff.avast.com. (125) 23:32:58.762742 IP localhost.localdomain.60412 > gateway.domain: 35057+ A? ocsp.cybertrust.ne.jp. (39) 23:32:58.763044 IP localhost.localdomain.60412 > gateway.domain: 53441+ AAAA? ocsp.cybertrust.ne.jp. (39) 23:32:58.805956 IP gateway.domain > localhost.localdomain.60412: 35057 7/0/0 CNAME ocsp.managedpki.ne.jp., A 59.106.216.193, A 59.106.222.101, A 153.120.128.154, A 153.149.96.48, A 153.149.97.37, A 153.149.154.120 (165)
Listenインタフェースの限定
デフォルト設定では全インタフェースでこの UDP ポートが Listen になっていますが、絞ることは可能です。その場合以下を squid.conf に追記します。
udp_incoming_address 192.168.75.131
systemctl restart squid で再起動後は Listen ポートは以下のようになります。再起動したため、新たな UDP ポート 34531 が割り当たっていますが、IPアドレスが 192.168.75.131 に限定されています。
[root@localhost ~]# ss -natu Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 127.0.0.1:323 *:* udp UNCONN 0 0 192.168.75.131:34531 *:* udp UNCONN 0 0 *:68 *:* udp UNCONN 0 0 *:34964 *:* udp UNCONN 0 0 ::1:323 :::* udp UNCONN 0 0 :::47850 :::* tcp LISTEN 0 128 *:22 *:* tcp LISTEN 0 100 127.0.0.1:25 *:* tcp ESTAB 0 96 192.168.75.131:22 192.168.75.1:57925 tcp LISTEN 0 128 :::22 :::* tcp LISTEN 0 128 :::3128 :::* tcp LISTEN 0 100 ::1:25 :::* [root@localhost ~]#
ただし、設定する IP は、DNS 応答を受信するインタフェースの IP である必要があります。さもなければ、DNS 応答が受信できず、Proxy アクセスができなくなってしまいます。
コメント