Articles of networking

UDP IP分片和MTU

我试图了解在发送UDP数据包的上下文中看到的一些行为。 我有两个小Java程序:一个传输UDP数据包,另一个接收它们。 我在两台通过一台交换机连接的计算机之间的networking上本地运行它们。 两个networking适配器上的MTU设置(由/ sbin / ifconfig报告)均为1500。 如果我发送大小<1500的数据包,我收到它们。 预期。 如果我发送1500 <size <24258的数据包,我收到它们。 预期。 我已经通过wireshark确认IP层将它们分段。 如果我发送大小> 24258的数据包,则会丢失。 不期望。 当我在接收端运行wireshark时,我没有看到任何这些数据包。 我能够看到类似的行为与ping -s。 ping -s 24258 hostA可以工作 ping -s 24259 hostA失败。 有没有人了解可能发生的事情,或者有我应该寻找的想法? 这两台电脑都运行CentOS 5 64位。 我使用1.6 JDK,但我不认为这是一个编程问题,这是一个networking或操作系统的问题。

获取Linux内核中的networking设备列表

我一直在通过net / core / dev.c和其他文件来查看如何获取当前configuration的networking设备列表,这certificate有点难以find。 最终目标是能够使用dev.c中的dev_get_stats获取networking设备统计信息,但是我需要知道当前的接口,所以我可以抓取net_device结构来传入。我必须在内核中执行此操作,因为我写了一个模块,它添加了一个新的/ proc /入口,这涉及到一些来自当前networking设备的统计信息,所以从我能收集到的信息必须在内核中完成。 如果有人能指点我如何获得接口,将不胜感激。

包除了iptables的包改造工具?

我正在寻找一个Linux实用程序,可以根据一组规则来改变networking数据包的有效载荷。 理想情况下,我会使用iptables和netfilter内核模块,但是它们不支持通用的有效负载模式: iptables将会改变不同的头域(地址,端口,TOS等),并且可以匹配一个数据包中的任意字节,但它显然无法改变数据包内的任意数据。 内核模块将是一个很大的优势,因为效率是一个问题,但我很乐意探索任何可以完成工作的其他选项。 感谢您的想法! 姗姗来迟的更新: 我们select使用NFQUEUE模块,这是Robert Gamblebuild议的QUEUE模块的最新实现。 它似乎相当简单,让我们的代码在用户而不是内核空间中运行,这是一个安全奖金。 如果我们只是想改变有效载荷而不改变它的大小,那么实现将几乎是微不足道的。 在这种情况下,我们将定义一个iptables规则来为我们select“有趣的”数据包,并向它们发送一个NFQUEUE目标。 我们将编写一个callback函数来检查来自NFQUEUE的数据包,根据需要修改数据,并重新计算TCP和IP头中的校验和。 但是,我们的用例涉及在数据stream中注入更多字符。 这在TCPstream中增加了相应的SEQ / ACK号码的副作用比较明显,混淆了conntrack模块的副作用并不明显,完全打破了NAT。 经过大量的研究,头部划伤和实验,最NOTRACK解决scheme是禁用这些特定数据包的连接跟踪(在raw表中使用NOTRACK目标),并在我们的callback中处理。 保存你的西红柿和讨厌的邮件; 我一点都不骄傲让你置身事外,但在下一个冰河世纪之前,这是唯一可以获得可靠产品给客户的方法。 这是一个很好的故事。 但我真的很感激,并分享你的衷心的感受。 版本2将利用我们新发现的启示,通过用自定义NAT和/或conntrack助手来replace我们的callback和多个iptables规则。 我们相信,目前的练习已经给了我们足够的经验来创build一个内核模块,它将有机地融入到netfilter体系结构中来解决我们遇到的问题。 再次感谢您的关注和build议!

我如何使用EPOLLHUP

你们能给我提供一个很好的示例代码,使用EPOLLHUP进行死对等处理吗? 我知道这是一个信号,以检测用户断开连接,但不知道如何在代码中使用这个..预先感谢..

拉撒路:如何列出系统上所有可用的networking连接?

我正在使用Lazarus IDE在Linux系统上编写程序。 程序应该连接到Internet或Intranet。 所以,我想向用户列表显示所有可用的networking连接,如果系统上有两个活动的网卡,它们可以用来连接到Internet或Intranet,那么这个程序应该显示它们的可用连接。 目前,我不知道从哪里开始或使用什么工具。 任何提示,线索或build议将不胜感激。

如何检查C中的networking设备状态?

我想检查一个networking设备状态,例如promiscous模式。 基本上像ip显示一个命令。 也许有人能把我推向正确的方向? 我想在Linux中做这个,所以linux特定的头文件可用。

我如何接收错误的以太网帧并禁用CRC / FCS计算?

我在运行Linux的两台PC之间生成一个stream量(通过发送以太网帧),目标是捕获一些错误帧。 问题是什么时候Phy层检测到一个帧的错误(如果CRC或FCS无效)帧被丢弃,我不能在我的程序接收它。 是否有任何方法来接收错误的框架(禁用在物理层的下降,并收到一个指示,表明这个帧是错误的,例如),我怎么可以咨询统计的NIC卡(滴数…等)。

我如何使python程序检查linux服务

我想制作简单的python脚本,我可以在cron作业上运行。 我只想看看这些服务是否正在运行或停止 Httpd mysql 我应该如何检查他们与python。 我需要parsingnetstat -tlnp的输出

将PCAP跟踪转换为NetFlow格式

我想将一些PCAP跟踪转换为Netflow格式,以便使用netflow工具进一步分析。 有没有办法做到这一点? 具体来说,我想使用“stream量导出”工具来从networkingstream量跟踪中提取一些感兴趣的领域,如下所示: $ flow-export -f2 -mUNIX_SECS,SYSUPTIME,DPKTS,DOCTETS < mynetflow.trace 在这种情况下,mynetflow.trace文件是通过使用以下命令转换PCAP文件获取的: $ nfcapd -p 12345 -l ./ $ softflowd -n localhost:12345 -r mytrace.pcap 这会生成一个networkingstream量跟踪,但是由于它的格式不正确,无法正确使用stream量导出。 我也尝试pipe道输出以下命令stream出口,如下所示: $ flow-import -V1 -z0 -f0 <mynetflow.trace | flow-export -f2 -mUNIX_SECS,SYSUPTIME,DPKTS,DOCTETS 但第一个命令的输出生成零时间戳。 有任何想法吗?

Docker的macvlannetworking,无法访问互联网

我有一个具有多个IP地址的专用服务器,一些IP具有关联的MAC地址,而另一些IP地址(在子网中)没有MAC地址。 我创build了docker macvlannetworking使用: docker network create -d macvlan -o macvlan_mode=bridge –subnet=188.40.76.0/26 –gateway=188.40.76.1 -o parent=eth0 macvlan_bridge 我有IP:88.99.102.115与MAC:00:50:56:00:60:42。 创build一个容器使用: docker run –name cont1 –net=macvlan_bridge –ip=88.99.102.115 –mac-address 00:50:56:00:60:42 -itd nginx 这工作,我可以从外部访问nginx在该ip地址托pipe。 与没有MAC地址的IP和网关不在子网的情况。 子网:88.99.114.16/28,网关:88.99.102.103 无法使用以下方式创buildnetworking docker network create -d macvlan -o macvlan_mode=bridge –subnet=88.99.114.16/28 –gateway=88.99.102.103 -o parent=eth0 mynetwork 引发错误: no matching subnet for gateway 88.99.102.103 尝试增加子网范围包括网关: docker network create -d […]