workerman通过AsyncUdpConnection给公网地址发送日志时,总是触发操作系统底层DNS-PTR解析,有何解决办法?
<?php
function send_udpData_log( $data , $host = "" , $port = ""){
$udp_connection = new AsyncUdpConnection("udp://{$host}:{$port}");
$udp_connection->onConnect = function($udp_connection) use($data) {
$udp_connection->send($data);
};
}
以向61.139.2.69发送udp报文进行举例
用例
send_udpData_log("this is log content" , "61.136.2.69" , 8000 );
通过tcpdump进行抓包, # tcpdump -i eth0 udp
老是触发操作系统底层向DNS服务器发起对公网IP地址的DNS-PTR解析请求
00:22:05.870697 IP linux.35570 > 183.221.253.100.domain: 55516+ PTR? 69.2.139.61.in-addr.arpa. (44)
00:22:05.878150 IP 183.221.253.100.domain > linux.35570: 55516 ServFail 0/0/0 (44)
我担心如果我的请求数据量太大以后会被运营商处罚。
虽然我已经暂时通过添加hosts文件得到解决
echo "61.139.2.69 69.2.139.61" >> /etc/hosts
我这种针对特定IP的场景进行规避,如果我的IP地址是随机的,那岂不是很难处理了
有没有更好的解决办法?当我向某个IP发送UDP报文时,不再执行DNS-PTR请求。
mark