サーバソフトウェア

SQUID の UDP higher port について (udp_incoming_address)

環境

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 アクセスができなくなってしまいます

コメント

タイトルとURLをコピーしました