出于分析目的,我想对大量 IP 执行反向 DNS 查找。“大”的意思,每小时至少几万。我正在寻找提高处理速度的方法,即降低每批的处理时间。
将Dns.GetHostEntry的异步版本包装到可等待任务中已经有很大帮助(与顺序请求相比),导致吞吐量约为。100-200 IPs/秒:
static async Task DoReverseDnsLookups()
{
// in reality, thousands of IPs
var ips = new[] { "173.194.121.9", "173.252.110.27", "98.138.253.109" };
var hosts = new Dictionary<string, string>();
var tasks =
ips.Select(
ip =>
Task.Factory.FromAsync(Dns.BeginGetHostEntry,
(Func<IAsyncResult, IPHostEntry>) Dns.EndGetHostEntry,
ip, null)
.ContinueWith(t =>
hosts[ip] = ((t.Exception == null) && (t.Result != null))
? t.Result.HostName : null));
var start = DateTime.UtcNow;
await Task.WhenAll(tasks);
var end = DateTime.UtcNow;
Console.WriteLine("Resolved {0} IPs in {1}, that's {2}/sec.",
ips.Count(), …Run Code Online (Sandbox Code Playgroud) 我们在沙盒 Java Applet 中遇到问题,因为 SecurityManager 执行反向 DNS 查找。见其他问题。
但潜在的问题是,反向 DNS 查找需要大约 4.5 秒(没有域结果)。问题不是丢失的结果(在这种情况下它返回 IP),只是它需要很长时间。
这个问题也与 SecurityManager 无关,它只会在那里成为一个问题,因为 Permissions 类在运行到这个时持有一个锁,因此冻结了许多其他线程 4.5(或更多)秒。
还有一些域没有域名结果(即返回 IP),不需要 4.5 秒。例如“staminus.net”。
SSCCE:
String host = "random.org";
// "random.org" - IP result, takes 4.5 seconds
// "cdn.knuddelscom.de" - IP result, takes 4.5 seconds
// "staminus.net" - IP result, fast
// "google.com" - domain result: fra15s11-in-f14.1e100.net, fast
InetAddress addr = Inet4Address.getByName(host);
for (int i = 0; i < 100; i++)
{
long start = System.currentTimeMillis();
String hostName …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来更改反向DNS在Docker中解析的内容。
如果将容器的FQDN设置为,foo.bar我希望对其IP解析为反向DNS查找foo.bar,但它始终解析为<container_name>.<network_name>。
有办法改变吗?
在开发发送通知电子邮件消息的应用程序时,有哪些最佳实践
附加要求:此应用程序将根据事件向单个收件人发送单个邮件.因此,向多个收件人发送相同邮件的技术将不适用.
如何scapy在Python中使用反向DNS查找?我在谷歌寻找它,但我找不到与此主题相关的内容.
Spamassasin在我的电子邮件中给出以下标志:
*
0.8 RDNS_NONE由没有rDNS的主机传送到内部网络
"此测试检查最后一个不可信中继是否存在反向DNS条目.请注意,这可以通过解释相关Received头中的信息来完成 - 如果第一个可信中继不执行反向DNS检查,或者它们是如果没有记录在Received标题中,将触发此测试(无论实际的rDNS状态如何)."
*
我可以在我的电子邮件中看到的唯一的IP是94.143.11.2 - >你可以将dns转换为trophymanager.com.Google和Hotmail对此没有任何问题 - 但Spamassassin给它一个标志 - 我在这里缺少什么?
我收到了AWS发来的电子邮件
我们有关于您的帐户的重要新闻(AWS账户ID:XXXXX).EC2已检测到eu-west-1区域中托管Amazon EC2实例(实例ID:i-XXXX)的底层硬件的性能下降.由于这种降级,您的实例可能已无法访问.在2017-05-25 10:00 UTC之后,您的实例(具有EBS卷作为根设备)将被停止.
我实际上正在使用带有弹性IP地址的负载均衡器的Elastic Beanstalk,这是当前唯一运行的实例(手动关联).另外,我有一个反向DNS用于电子邮件目的.
电子邮件继续说下面......
您仍然可以访问该实例.我们建议您通过创建实例的AMI来替换实例,并从AMI启动新实例.有关详细信息,请参阅EC2用户指南中的Amazon Machine Images(http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html).如果在停止EBS支持的实例时遇到困难,请参阅实例常见问题解答(http://aws.amazon.com/instance-help/#ebs-stuck-stopping).
那么如何让Elastic Beanstalk重新配置到新硬件?
一些选择似乎是......
重建环境
保存配置 - >终止 - >加载配置
克隆环境 - >手动更改DNS - >终止旧环境
'终止'环境 - >'恢复终止环境'?
我不确定哪种变体会恢复环境,特别是如果我没有丢失为电子邮件(SNS?)配置完成的主机名/反向DNS内容,那将是理想的.
如果我保留所有这些(我不关心EC2实例或数据 - 将数据保存在所有这些外部的MongoDb中)会很好...
我们将不胜感激! - 令人遗憾的是,他们的电子邮件/文档只讨论了EC2而不是beanstalk配置.
reverse-dns amazon-ec2 amazon-web-services amazon-elastic-beanstalk
我gethostbyaddr在Python中知道,这对我有用.我希望得到更多关于IP地址的信息,就像人们可以在各种网站上找到的那样,例如谁拥有该IP地址,原籍国,......等等.我需要以编程方式完成此操作.
是否有用于Python的内置命令,或者我是否需要访问包含此类信息的某个数据库,或者是否有任何Python API?Python不是我的母语,所以我不熟悉如何在Python中解决这样的问题.
我根本不理解这个"反向dns"的事情.
所以,我有一个网站 - www.someurl.com,我有一个IP地址 - http://180.160.160.190(假的).现在,我想设置一个"反向dns"的东西,这样我发出的电子邮件就不会被标记为垃圾邮件.
问题!
欢呼,安德鲁
我根据本文在EC2实例上设置了PTR记录:https : //aws.amazon.com/premiumsupport/knowledge-center/route-53-reverse-dns/。但是,当我使用dig这样的工具测试rDNS时,其结果始终为我提供xxx.compute.amazonaws.com域。我已经等待了几次刷新时间,并多次执行了本文中的步骤,但是记录没有改变。我还为“ in-addr.arpa”托管区域设置了NS记录,以匹配我域的NS记录。
我的设置是:
Hosted zone 1: "domain.com."
Hosted zone 1 A record: name "domain.com." value "1.2.3.4"
Hosted zone 2: "3.2.1.in-addr.arpa."
Hosted zone 2 PTR record: name "4.3.2.1.in-addr.arpa." value "domain.com"
Run Code Online (Sandbox Code Playgroud)
我在这里想念什么吗?我还有其他步骤应该采取吗?或者您对如何进一步调试有任何建议?
好像outlook.com一直将我的邮件标记为垃圾邮件,因为rDNS不正确。
很感谢任何形式的帮助。
socket.gethostbyaddr(ip_addr)我在特定站点上使用时获取主机名时遇到问题。
我不会详细说明这不适用于哪个网站。
因此,通过名称获取主机对于到目前为止我尝试过的每个站点都可以正常工作,但是当我尝试从中获取站点名称时,我收到一条错误消息 ing host not found。
修复或替代方案对于拥有完整的数据来说是很好的。如果没有解决办法,我只能省略主机名。没什么大不了的。谢谢您的帮助。
# not full code
hostip = socket.gethostbyname(hostname)
print socket.gethostbyaddr(hostip)
Error: socket.herror: [Errno 11004] host not found
Run Code Online (Sandbox Code Playgroud) 我非常清楚Azure Cloud Services上可以使用反向DNS.那不是我要问的.我需要知道在使用Azure资源管理器时是否可行.我在网上看了很多,虽然我发现了一些(2年以上)的老问题,但我找不到任何答案.
谢谢!
reverse-dns ×12
email ×3
python ×3
amazon-ec2 ×2
.net ×1
async-await ×1
azure ×1
c# ×1
dns ×1
docker ×1
domain-name ×1
freeze ×1
hostname ×1
java ×1
php ×1
phpmailer ×1
pywhois ×1
scapy ×1
smtp ×1
sockets ×1
spamassassin ×1
spf ×1
timeout ×1
url ×1