Articles of networking

在Linux上使用Python更改IP设置

我需要提供一个Python程序,允许用户dynamic改变他的设备(IP,掩码,DNS和网关)的networking参数。 例如,将他的IP从192.168.1.10/24更改为192.168.1.15/24。 我不想以root身份运行我的程序 – 但我可以给我的用户一些特定的权利(例如将用户添加到可以修改/usr/network/interfaces文件的组)。 我发现的是pynetlinux库,但它只提供IP和掩码修改,需要以root身份运行(或者我可能会误用它)。 我可以通过parsinginterfaces文件并运行一些bash / shell命令来做到这一点,但我不想重新发明轮子。 我很确定有些人已经有我的问题,做了一些伟大的事情。 我在Ubuntu 12.04上运行。 我需要我的程序在Ubuntu 14.04,CentOS和RedHat上工作

如何检测tcp客户端连接到服务器在c + +

我有一个TCP客户端/服务器,我想检测客户端的连接丢失; 因为我的客户端有多个接口,我一次连接到服务器与其中之一,我想知道如何检测客户端的连接丢失,以便我可以连接我的tcp客户端与另一个接口到服务器,如果他们全部我把我的数据存储在文本文件中。 我GOOGLE了,我已经看到保持活着,但不是我想要的。 如果这是重要的我的项目是在Linux和代码是在C + +。

沙盒公开访问GCC

我想添加一个function到一个基于Linux的Web服务,允许不可信用户上传源代码到一个小的C ++程序,并将该代码自动保存到服务器上的文件,并用gcc编译,然后执行,捕获标准输出。 (这是一个与ideone.com,或者spoj.pl,或者topcoder.com,或者codechef.com或者许多其他网站完全不同的function。) 我的问题是: Q1。 我如何沙箱的可执行文件,以防止恶意用户试图破坏文件系统或访问networking等? Q2。 是否有一个公平/准确的方法来将系统资源加速处理,如处理器时间和内存使用情况?

父和子代之间的文件描述符共享

在Unixnetworking编程中,有一个Pre-forked服务器的例子,它使用Unix域pipe道上的消息传递来指示subprocess处理一个传入的连接: for ( ; ; ) { rset = masterset; if (navail <= 0) FD_CLR(listenfd, &rset); /* turn off if no available children */ nsel = Select(maxfd + 1, &rset, NULL, NULL, NULL); /* 4check for new connections */ if (FD_ISSET(listenfd, &rset)) { clilen = addrlen; connfd = Accept(listenfd, cliaddr, &clilen); for (i = 0; […]

如何使我的Docker容器通过第二个接口与另一个节点通信?

我正在努力执行一个可悲的testing,其中涉及到sandbox01networking中的服务器与在“Docker Host”服务器中运行的Docker容器之间的通信(该计算机与sandbox01networking中的其他节点位于同一个子网中。即在10. *地址/范围内有一个名为ens34的接口,在9 *networking上还有一个eth0接口,允许它访问外部世界:下载软件包,docker图像等等。 )。 无论如何,这里有一个图来说明我有什么: 问题:无法在sandbox01子网(10. *networking)中的节点和容器之间进行通信。 例如,someserver.sandbox01→mydocker2:ens34 :: docker0 :: vethXXX→容器只有当我停止iptables,这使得事情真的很神秘! 只是想知道如果你面临任何类似的问题..任何想法将不胜感激。 谜题:经过多次testing,确认容器不能与10. *networking中的任何其他节点进行通信 – 它的行为不如预期:它应该通过其网关docker0(172.17 .0.1),并通过docker主机中的路由表find与“someserver.sandbox01”(10.1.21.59)进行通信的path。 它只在我们让它在iptables中处理MASQUARADE时才起作用。 但是,Docker会自动添加这个规则: -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -c 0 0 -j MASQUERADE -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -c 0 0 -j MASQUERADE **请注意那里的“!-o docker0”,所以Docker不希望我们掩盖发送请求的IP地址? 不知何故,这是在搞乱沟通 容器响应任何通过IP 9的通信。*(eth0) – 即,我可以从我的笔记本电脑发送请求 – 但从来没有通过10. *(ens34)。 […]

TrafficStats特定应用程序特定的networking接口

我知道我可以使用下面的trafficstats API的方法来获取任何给定的应用程序的所有networking接口的字节发送和接收。 但是,我如何才能获得移动设备的统计信息? 这样我就可以分离手机和wifi数据。 getUidTxBytes(int uid) 获取此UID通过networking发送的字节数。 getUidRxBytes(int uid) 获取通过networking接收的这个UID的字节数。 看起来像这样的东西从API中缺less。 和其他方式getUidMobileRxBytes(int uid)

主机做不必要的DNS查找本地主机

我有一个centOS系统(embedded和非常二进制文件)与下面的/ etc / hosts。 $cat /etc/hosts 127.0.0.1 localhost localhost 此外,主机被分配一个DNS服务器,返回一些无效的IP用于localhost的域名查找。 但是由于一些networking的限制,我无法避免与这个DNS的连接。 我的问题是,当我已经有一个有效的/ etc / hosts文件为什么系统查询本地 DNS的DNS? 我怎么能阻止呢? 任何帮助将不胜感激。

unix / linux套接字中的阻塞模式是如何工作的?

阻塞模式是否将该特定任务置于“进程等待”状态,因为我认为非阻塞套接字需要来自用户的“忙等待”或“自旋locking”实现。 或者阻塞模式套接字只是内核的繁忙等待的隐式实现。 在信号量/互斥/监视器之类的locking机制中,通常通过将任务推入阻塞状态来实现locking。 我认为,如果这样的事情是可能的locking,然后套接字locking也可能以同样的方式实现。 我不知道,我认为轮询不是一个有效的方法,尤其是内核,因为内核总是有他的双手充满了这么多的任务。 谢谢。

如何将一个原始的L2数据包作为传入数据包注入到Linux上的接口?

我需要在Linux中将某些L2数据包(定制的)作为传入数据包注入特定接口,以testing运行在其上的一些应用程序。 有什么库(python首选)/例子,可以帮助吗? 我正在浏览Scrapy库,但看起来它只能将数据包作为传出数据包注入networking?

链接的docker集装箱之间的通信

我有两个docker集装箱在主机上的以下设置: 容器1 – UDP端口5043映射到主机端口5043(0.0.0.0:5043:5043) 容器2 – 需要以UDP方式将数据发送到端口5043上的容器1。 情况1 我启动Container 1并获取它的IP地址。 我使用这个IP地址并configurationContainer 2并启动它。 容器2能够通过调用udp://Container_1_IP:5043发送UDP数据到容器1 一切工作! 情景2 我通过将5043 UDP端口映射到主机的5043端口( 0.0.0.0:5043:5043 )来启动Container 1 我使用“ – 链接”链接容器2和容器1。 现在,当Container 2调用URL udp://Container_1_IP:5043 ,会出现错误“ Connection refused ”。 我确实能够使用IP从容器2内部ping容器1。 任何帮助,以获得scheme2为我工作将非常感激!