RHES3盒子有一个奇怪的套接字问题: Python 2.4.1 (#1, Jul 5 2005, 19:17:11) [GCC 3.2.3 20030502 (Red Hat Linux 3.2.3-52)] Type "help", "copyright", "credits" or "license" for more information. >>> import socket >>> s = socket.socket() >>> s.bind(('localhost',12351)) Traceback (most recent call last): File "<stdin>", line 1, in ? File "<string>", line 1, in bind socket.error: (98, 'Address already in […]
我有4个其他服务器机器前面的2个负载均衡器,每秒处理约5-6000个请求。 我注意到,每隔几分钟,负载平衡器就会连接到其中一台服务器。 作为连接总数的百分比,这当然是一个非常低的故障率,但是,他们是在同一个数据中心,我不明白为什么我会得到连接超时(60秒,fwiw)。 我设法得到一个数据包捕获其中一台服务器机器时,它看起来像SYN-ACK数据包没有到达负载平衡器。 19:33:51.023518 IP 10.36.213.2.58011 > 10.36.213.36.8005: Flags [S], seq 1726133855, win 5840, options [mss 1460,sackOK,TS val 14377140 ecr 0,nop,wscale 7], length 0 19:33:51.023534 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15334821 ecr 14377140,nop,wscale 7], length 0 19:33:54.026705 IP 10.36.213.2.58011 > 10.36.213.36.8005: Flags [S], […]
我可能正在做一些令人难以置信的愚蠢的事情,但我似乎无法弄清楚什么。 以下是我想要完成的工作:我希望远程用户能够login到我们的networking,因此我在XenCenter中将一台Windows 2008 Server作为一个VPN服务器设置为一个虚拟机。 我们叫他本杰明吧。 他也是一个文件服务器。 到目前为止,什么工作: 使用Mac,Windows和iOS客户端进行远程VPNlogin 访问Benjamin上的文件共享 Ping到本地networking和互联网上的所有主机,即使是大包(> 1000字节) 什么不:除了本杰明本身,我不能build立任何TCP连接(SSH,HTTP,…)到本地networking上的主机。 在Wireshark中,我可以在客户端和计算机上看到SYN和SYN-ACK,但是没有确认。 (有趣的是,在我准备的Wireshark日志中,出于某种原因,有一些DUP确认 – 而且它们确实是错误的方式,我不知道为什么)。 之前甚至还有一个问题,除了Benjamin之外,还有其他方法,但是我通过在Benjamin上禁用了IP校验和卸载来解决这个问题(不知何故,它不起作用,然后数据包就会被丢弃)。 我尝试在客户端设置非常小的MTU,在内部networking的计算机上设置了Benjamin的网关,但没有任何帮助。 我怀疑这是某种路由问题,但这些ACK无处可寻。 有任何想法吗? 我应该在哪里进一步调查? 提前致谢! 更新 :我刚刚发现的奇怪的事情:当我尝试从内部networkingssh到VPN客户端,客户端获得SYN(我看到它在Wireshark中),但他再也没有回应。 我觉得客户端应该是一些configuration问题,但是所有这些问题呢? 它会是什么? 没有防火墙,根据Wireshark,数据包看起来有效(校验和全部)。 有没有人知道为什么它不会响应一个SYN或SYN-ACK,当没有防火墙可以扔掉这些数据包? 更新2 :为了增加混淆,我刚刚证实,使用netcat和UDP ,一切工作正常,在两个方向(nc监听内部networking主机和VPN客户端)。 也许TCP只是不喜欢我了? 以下是更多信息: Local net: 172.17.0.0/16 Router: 172.17.0.1 (Port Forwarding TCP 1701, UDP 500 and 4500) XenServer: 172.17.0.10 Benjamin: 172.17.1.1 VPN DHCP range: 172.17.7.1..240 Wiresharklogin客户端(172.17.7.2在VPN中): […]
我在10GBEnetworking(网卡是英特尔82599EB 10GBE SFI / SFP +)上连接了几台机器的集群,运行在Debian 6.0下,并且遇到挂起TCP连接的问题,处于CLOSE_WAIT状态。 我知道在理论上CLOSE_WAIT状态下的连接应该被应用程序明确地closures,但是在我的情况下,至less有两个不同的应用程序会产生这些挂起的连接,我认为这个问题是另一回事。 起初,这个问题是由Cassandra在“jsvc”进程下作为守护进程运行的。 Cassandra的一个节点(“服务器”)并没有closures连接,而是closures了连接的另一个节点(“客户端”)的一端。 之后,我运行“netperf”TCP_CRRtesting,并得到错误消息: netperf -H 172.15.2.166 -t TCP_CRR -l -5 -D TCP连接/请求/响应testing从0.0.0.0(0.0.0.0)端口0 AF_INET到172.15.2.166(172.15.2.166)端口0 AF_INET:demo send_tcp_conn_rr:数据recv错误:连接重置由对等 在172.15.2.166机器上,TCP连接挂在CLOSE_WAIT状态,在Recv-Q中有奇怪的1个字节。 tcp 1 0 172.15.2.166:12865 172.15.2.161:42863 CLOSE_WAIT 我更新了'ixgbe'驱动程序到最新的3.9-NAPI,但是这个问题仍然存在,现在我想知道还有什么会导致这个问题呢?
我试图使用Cisco Packet Tracer(版本5.3.2)在实验室中观察ICMPredirect,但是我没有看到它们,这导致我相信我的实验室configuration不正确,或者我对ICMPredirect的理解是不正确的不正确,或者Packet Tracer不支持/使用ICMPredirect。 以下是我相信ICMPredirect的真实情况: 当满足所有这些条件时,路由器发送ICMPredirect: 数据包进入路由器的接口是数据包被路由出去的接口。 源IP地址的子网或networking位于路由包的下一跳IP地址的同一子网或networking上。 数据报不是源路由的。 路由器内核configuration为发送redirect。 我已经在Cisco Packet Tracer中设置了实验室,并显示在图像中,当从PC1 ping到PC3时,期望看到来自Router1的ICMPredirect。 我没有看到ICMPredirect,看起来Router1实际上是通过Router2路由所有的数据包。 我在路由器1(和路由器2)上启用了IP ICMPdebugging,并且在任一控制台中都没有看到任何ICMPredirect活动。 我也没有看到PC1路由表中PC3networking的路由,我认为这确认了ICMPredirect没有发生。 我在路由器1和2上只使用静态路由。我对ICMPredirect的理解是否不正确,或者实验室configuration有问题,或者Packet Tracer不支持/使用ICMPredirect?
经过适当的SYN,SYN + ACK和ACK TCP-Handshake之后,服务器立即发送一个FIN + ACK,指示正常连接closures。 客户端的HTTP请求导致来自服务器的RST数据包。 这发生在一次100个并发呼叫中。 我已经调查到SynAttackProtect参数和Backlog Queue,这些都与连接重置有关,所以与我的问题无关。 那么在一个成功的TCP握手之后,Windows服务器会在什么情况下突然发出一个FIN?
我们有一些奇怪的问题,当外部服务器试图连接到端口443(TCP),这是一个Apache2 +乘客和Rails应用程序的我们的网站。 这个问题很less发生。 我开始调查,通过启用iptableslogging使用iptables -I INPUT -m state –state NEW,INVALID -j LOG –log-prefix "iptables [INPUT]: " (这也为FORWARD(通常不使用)和OUTPUT)。 现在每个新的连接都被logging到syslog中。 现在我在这个系统日志上看到了正常的连接,并且经过了与Vhost的连接(正常工作请求),但是有时(在大约100个连接中),我只能看到iptables日志中的新连接,但连接似乎没有达到apache2或乘客实例)(没有apache日志条目,没有连接的结果)。 当用curl来做这件事时,我们会得到一个超时或一个空string。 我们刚刚发送了一个启用debugging的curl请求代码片段,用于增强日志loggingcurl错误的样子。 我们正在使用Debian Squeeze(稳定),在具有E1000网卡(虚拟化)的桥接以太网的VMWare ESXi环境中运行。 但是,当数据包到达VM-OS本身时,我不认为这会导致问题。 我也检查了有40到50个连接的ip_conntrack,挤压极限是65k,所以没问题。 另外,我们没有任何丢弃的网卡的本身。 内核版本 :Linux servername 2.6.32-5-amd64#1 SMP Sun Sep 23 10:07:46 UTC 2012 x86_64 GNU / Linux Apache2 :服务器版本:Apache / 2.2.16(Debian) – 服务器版本:Nov 30 2012 08:58:38 乘客 :Phusion Passenger版本3.0.12 Ruby […]
我试图在Debian Wheezy下使用tcp / 111作为rpcbind而不是udp / 111。 Squeeze中的portmap使用tcp / 111,没有任何特殊configuration,但是Wheezy失败。 甚至很多网站(以及RFC)都说TCP或UDP是dynamicselect的,或者有时在UDP失败的情况下使用TCP … – 当我用rpcbind在Wheezy客户机上拒绝udp / 111(使用iptables )时,出现错误。 .. # showmount -e server Export list for server: …. # iptables -I OUTPUT -j REJECT -d server -p udp –dport 111 –reject-with icmp-port-unreachable # showmount -e server clnt_create: RPC: Port mapper failure – Unable to send: errno 1 […]
我试图在centOS中启用md5 checksum / signature for tcp数据包(主要用例是停止tcp RST攻击等)。 看来我可能能够使用netcat或通过iptables的个人端口。 启用这个选项的首选方法是什么?有没有比我列出的更好的方法? 谢谢
我有一个应用程序(在Win2k12上运行)通过TCP下载stream。 问题是连接被发送者closures,因为它超时。 我使用wireshark来查看2个不同服务器上发生了什么(在一台服务器上工作正常,另一台服务器超时)。 我已经注意到两者上的相同的行为: 当下载开始时,一切似乎确定,窗口大小是64K,并保持相同的一段时间,段得到确认。 然后在某个时候,窗口大小开始减less,直到它为0(据我所知,这是好的,接收方不能跟上发送方。)但是,没有从接收方的ACK或窗口更新消息,直到整个缓冲区被应用程序读取,然后一个窗口更新再次宣传64k窗口大小。 然后重新开始。 窗口大小减小到零。 这对我来说并不合适。 当应用程序从缓冲区中读取时,它应该有空闲空间,并且应该发送一个Window更新,所以发送者可以发送下一个段。 另一件我不明白的是失败的服务器上的行为。 这个服务器在每个这样的周期中通告越来越大的窗口大小,在超时之前的最后一个周期中,窗口大小是〜800 000。超时发生,因为缓冲区未被清空足够快。 但我不知道为什么在这台服务器上的窗口大小增加? 有没有在服务器上设置,以防止这种情况? 我的假设是正确的,还是我误解了TCP协议? 任何想法来解决这个问题表示赞赏。 谢谢。