workerman通过AsyncUdpConnection给公网地址发送日志时,总是触发操作系统底层DNS-PTR解析,有何解决办法?

zgh419566

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请求。

935 1 0
1个回答

liziyu

mark

  • 暂无评论
年代过于久远,无法发表回答
×
🔝