Articles of linux networking

无法发现局域网中的其他系统6.4

我有4个服务器,3旧和1新,他们每个通过eth0通过vlan连接和eth1用于互联网。 三台服务器工作正常,能够相互通信。 但是,我刚刚得到的第四台服务器似乎无法发现vlan中的其他系统,与其他3系统无法看到新安装的服务器相同。 主机确认它连接到同一个vlan。 例如,如果我从工作服务器(如原始3中的一个)执行arp ,则会显示: # arp Address HWtype HWaddress Flags Mask Iface 169.34.255.149.static.s ether 00:18:74:92:39:00 C eth1 192.168.1.1 ether 00:25:90:66:24:fa C eth0 192.168.1.2 ether 00:25:90:50:1e:f3 C eth0 但从新的第四台服务器,它只显示一个条目: # arp Address HWtype HWaddress Flags Mask Iface 169.34.255.149.static.s ether 00:18:74:92:39:00 C eth1 从ifconfig的所有输出似乎相同的其他服务器,我不觉得有什么不妥。 # ifconfig eth0 Link encap:Ethernet HWaddr 00:25:90:26:38:59 inet addr:192.168.1.4 Bcast:192.168.1.255 Mask:255.255.255.0 […]

UDP最大段大小

环境:我正在编写一个UDP客户端 – 服务器应用程序。 客户端和服务器之间的pathMTU是1500字节(只有它们之间的无线链路,所以这个值非常稳定)。 我的系统集默认不分片,在客户端和服务器上,SO_SENDBUF是16384,SO_RECVBUF = 87380。 问题:客户端使用sendto向服务器发送8192个字节。我使用Wireshark来查看这些8192字节将如何发送多个数据包,并发现每个数据包只能保存1023字节的UDP数据。 但给定pathMTU = 1500,我不应该能够发送每个数据包中1500-20(IP标头)-8(UDP标头)= 1472字节的数据? 当我用TCP做同样的事情时,结果就是我所期望的。 每个TCP数据包最多可以容纳1448字节,即1500-20(IP头)-32(带有时间戳选项的TCP头)。我的问题是:为什么dosn't UDP在每个数据包中放置了1472个字节,而不是1023个字节? 这只是次要的实现细节吗? 还是我忽略了一些系统限制? 备注:即使在同一台机器上进行实验(在回送接口上使用127.0.0.1),也可以观察到相同的结果。

虚拟机的ethx mac地址是否与对应的tap接口的mac地址相同?

我在一台Ubuntu机器上安装了一个单独的节点openstack。 出于某种原因,我无法弄清楚,linuxbridge正在丢弃来自这个虚拟机的数据包。 我的iptables似乎没有问题(至less据我所知),没有configurationebtables链规则。 我冲我的iptables,并尝试相同的testing,包仍然被丢弃。 在试图debugginglinuxbridge的时候,我发现下面这个让我困惑: port no mac addr is local? ageing timer 2 52:54:00:88:a3:cd no 51.68 2 52:54:00:95:96:8d no 51.92 2 52:54:00:b0:01:97 no 51.85 2 52:54:00:dc:48:fe no 43.01 2 52:54:00:e5:fd:45 no 0.95 2 52:54:00:e9:47:79 no 51.74 2 52:54:00:f5:a4:d7 no 52.11 2 54:26:96:33:20:5d no 9.22 2 60:c5:47:0a:2d:64 no 0.00 2 64:70:02:c8:dc:fc no 2.16 2 6c:88:14:86:7e:38 […]

IPsec – 奇怪的行为

我已经build立了linux(debian)和mikrotik路由器之间的站点到站点ipsec连接。 隧道已经到了 linuxconfiguration: config setup interfaces=%defaultroute keep_alive=60 plutodebug=all plutostderrlog=/var/log/pluto.log nat_traversal=yes protostack=netkey oe=off conn sitetosite left=10.0.0.249 #local gateway leftsubnets=10.0.0.0/24 leftid=xxx.xxx.xxx.xxx #linux external IP leftsourceip=10.0.0.249 right=yyy.yyy.yyy.yyy #mikrotik external IP rightsubnets=10.111.11.0/24 rightid=yyy.yyy.yyy.yyy pfs=yes type=tunnel forceencaps=yes authby=secret auto=start Linux防火墙规则不能在这两个子网之间伪装: iptables -t nat -A -s 10.0.0.0/24 ! -d 10.111.11.0/24 -j MASQUERADE 在mikrotik我有类似的规则。 问题是我无法从Mikrotik LAN客户端ping 10.0.0.249(Linux局域网网关) 有任何想法吗 ?

在IRQ合并之前,NAPI有哪些优势?

众所周知,有两种方法可以避免在高负载networking中出现硬件中断的一些开销,当硬件中断太多时,切换到它们需要很多时间。 程序风格的performance和select方法是非常重要的。 NAPI与自适应中断 NAPI(新API) – 不使用硬件中断 ,每隔一段时间轮询以太网设备。 Linux内核默认使用中断驱动模式,当进入的数据包stream量超过一定的阈值时,只能切换到轮询模式。 http://en.wikipedia.org/wiki/New_API内核可以定期检查传入networking数据包的到达而不中断 ,从而消除了中断处理的开销。 中断合并 – 使用硬件中断 ,但是如果发生中断,则禁止中断并在一段时间内开始轮询 ,之后轮询终止并且中断被激活。 https://en.wikipedia.org/wiki/Interrupt_coalescing一种技术,其中通常会触发硬件中断的事件被阻止 , 直到一定数量的工作挂起,或超时计时器触发。 两种方法都没有明显的中断成本 – 这对于默认的中断驱动模式是有利的。 但是第二种方法 – 中断合并更合理,因为它: 延迟较小 – 一旦包到达,立即尝试立即处理中断,或在最近发生中断时轮询。 对面的NAPI将不会立即处理该帧,而是会等待下一轮的一定时间。 较less的CPU使用率 – 仅在至less有一个数据包已经到达的情况下才开始轮询。 但是,即使帧没有收到,也不是徒劳地进行民意调查,就像做了NAPI一样。 在IRQ合并之前,NAPI有哪些优势?

ModSecurity规则不扫描URI

我很难创build一个新的安全2.5规则。 我的部署:Apache服务器,安装程序作为反向代理。 (所以apache的web服务器__并不承载网站,而是将请求代理给另一个服务器来回应networking请求。) Web服务器使用authentication令牌将网站URL重写为安全的URL。 75.75.75.75 – – [01/May/2015:10:55:14 -0400] "GET /record/example.svc/js HTTP/1.1" 200 1786 "https://example.org/example.aspx?XOW%5eLdz%3c2%2f1%2f42%2527kbmhtbffJfx%3e0%2527qpkf%5ejc%3e2%2527Cfruho%60uhpmXOW%5eLdz%3c2%2f1%2f42%2527RptsbfVQU%60Jfx%3e193%2527qpkf%5ejc%3e2%2527RptsbfVQU%60Ejqts%60Bihmc%60Mblf%3cSdrtfru%1fTbpqjmh" 问题: Modsecurity当前扫描URI。 由于随机URI的性质,已经产生了很多误报。 为了防止这种情况,我想豁免所有的URIs扫描。 由于重写,redirect和身份validation令牌都在Web服务器上生成(我们如何保留它),所以如何通知mod安全性这些头文件是合法的,而不是扫描它们? 75.75.75.75 – – [01/May/2015:10:55:52 -0400] "GET /thing.aspx?XOW%5eLdz%3c375%25cddnnd%60ttds%5ebt%60he%3c5%2f58328 HTTP/1.1" 200 15100 "https://example.org/example.aspx?XOW%5eLdz%3c2%2f1%2f42%2527kbmhtbffJfx%3e0%2527qpkf%5ejc%3e2%2527Cfruho%60uhpmXOW%5eLdz%3c2%2f1%2f42%2527RptsbfVQU%60Jfx%3e193%2527qpkf%5ejc%3e2%2527RptsbfVQU%60Ejqts%60Bihmc%60Mblf%3cSdrtfru%1fTbpqjmh" 75.75.75.75 – – [01/May/2015:10:55:52 -0400] "GET /example/example.svc/js HTTP/1.1" 200 1786 "https://example.org/example.aspx?XOW%5eLdz%3c375%25cddnnd%60ttds%5ebt%60he%3c5%2f58328"

在同一个networking中模拟2个集群

我有4个pc和另一个pc,它们将作为代理,全部在同一个networking中:172.16.96.0/20。 我可以彼此之间ping。 但是,我想把它们分成两组。 那是: pc1 is directly connected to pc2 pc3 is directly connected to pc4 但是,从pc1或pc2到pc3或pc4的所有通信必须经过代理,并且从pc3或pc4到pc1或pc2的所有通信必须经过代理。 就像是: pc1 pc3 | -proxy- | pc2 pc4 pc1 IP: 172.16.97.24 pc3 IP: 172.16.97.27 proxy IP: 172.16.97.2 要在pc1上做到这一点,我补充道: ip route add 172.16.97.27 via 172.16.97.2 但是,当我做traceroute 172.16.97.27不会显示为一跳。我不知道是否应该.. 在代理上,路由表如下所示: default via 172.16.111.254 dev eth0 172.16.96.0/20 dev eth0 proto kernel scope […]

在OpenVZ容器中如何处理内核networking设置?

我对容器如何处理networking有点困惑。 对于我们的常规系统,我们正在强制执行诸如禁用源路由数据包接受,禁用发送数据包redirect等。我们通常通过/etc/sysctl.conf来强制执行,尽pipe它们通常在/ proc / sys / net / 。 设置这样的networking设置(影响/ proc / sys / net的东西)是否对单个容器有影响? 有关系吗? 在一个容器中更改它是否会改变在该主机上运行的其他容器?

如何configuration双宿主服务器以便两个网段进行通信?

我们想要添加一个额外的网段(LAN2),并且需要LAN1上的一些机器来访问LAN2上的资源。 LAN2上的某些机器也需要访问LAN1和WAN网段上的资源。 LAN1和LAN2之间的网关称为“SRV-01”,一个双归属的Linux服务器。 我无法从LAN2访问LAN2或从LAN2访问LAN1,也不能从LAN2访问WAN。 我想知道如何使LAN1主机和LAN2一起通话,以及如何允许从LAN2机器访问WAN。 故障排除 我使用ping获得以下回复: IP(来源)—> IP(目标):Ping回复 ————————————————– ————————- 192.168.5.33(LAN1上的客户端)—> 192.168.5.8(SRV-01:eth0):OK 192.168.5.33(LAN1上的客户端)—> 10.0.2.1(SRV-01:eth1):NO 192.168.5.33(LAN1上的客户端)—> 10.0.2.2(SRV-02:eth0):NO *。*。*。*。*(SRV-01)—> 192.168.5.33(LAN1上的客户端):OK *。*。*。*。*(SRV-01) – > 10.0.2.2(SRV-02:eth0):OK 10.0.2.2(SRV-02)—> 10.0.2.1(SRV-01:eth1):OK 10.0.2.2(SRV-02) – > 192.168.5.8(SRV-01:eth0):OK 10.0.2.2(SRV-02)—> 192.168.5.33(LAN1上的客户端):NO networking拓扑结构 WAN —(ISP路由器)— LAN1 —(SRV-01)— LAN2 —(SRV-02) ISP路由器 Internet服务提供商(ISP)路由器提供NAT(两个networking适配器),并充当LAN1的DHCP服务器。 我们没有shell / admin访问这个设备。 xxx.xx.xx.xx / xx(eth0,WAN) 192.168.5.4/24(eth1,LAN1) SRV-01服务器 SRV-01是双宿主Ubuntu Server 14.04(两个networking适配器),它将充当LAN1子网和LAN2子网之间的网关。 192.168.5.8/24(eth0,LAN1) 10.0.2.1/24(eth1,LAN2) 的/ etc […]

nmcli静态路由被忽略

我怀疑NetworkManager是如何通过nmclipipe理静态路由的。 我有一个有三个networking接口的CentOS 7.1.1503服务器: [root@brick ~ ]# nmcli con show NOMBRE UUID TIPO DISPOSITIVO int-ofi-nueva 3646ca3f-42b7-4bef-a677-6f92a5d55ee7 802-3-ethernet enp4s0 tvcable-ext e4dce451-6cc1-4a32-a8d6-394905f6a024 802-3-ethernet enp2s0 int-ofi-vieja ecbb8828-cd46-4b18-8b5e-61291a051553 802-3-ethernet enp5s0 接口enp2s0是我的WAN接口,并且是默认路由的接口。 我已经在接口enp5s0上configuration了一个通过nmcli的静态路由,但是这个路由并没有添加到路由表中,即使在我重新启动NetworkManager之后。 只添加与连接到每个接口的networking对应的路由。 以下是详细信息: [root@brick ~ ]# ifconfig enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet xxx.xxx.xxx.xxx netmask 255.255.255.248 broadcast xxx.xxx.xxx.xxx inet6 fe80::feaa:14ff:fe76:fc7b prefixlen 64 scopeid 0x20<link> ether fc:aa:14:76:fc:7b txqueuelen 1000 (Ethernet) RX […]