Articles of networking

为什么数据位于Send-Q? TCP会话冻结

问题 我为20-50个用户运行一个IRC服务器。 我们有时会遇到邮件没有及时到达的问题。 在一些数据包捕获之后,我们确定消息位于服务器的“Send-Q”中。 当一个消息没有到达时,我会看看“netstat -ct”输出,看到这样的东西: Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 1756 ubuntu:ircd 10.8.1.7:63602 ESTABLISHED 有时如果等待几分钟,Send-Q将变为0,并且消息将被传递,有时客户端超时。 我的问题是,为什么不传递信息? 是什么让他们坐在Send-Q这么久? sshd也performance出类似的行为,我的ssh会话有时会冻结,有时会退出。 背景 不知道这里的基础设施是否可能与问题有关,所以这里是这样的:这些客户端在Windows 7上与OpenVPN连接。 OpenVPN服务器在PFSense上,IRC服务器在连接到PFSense的本地(NAT'd)LAN上。 我有一个防火墙规则,允许客户端与服务器上的6667通话。 调查… 延迟/损失 – 看起来不错。 不是有史以来最好的链接,但我认为这将适用于IRC和SSH。 这是从我的客户端到服务器的一个ping,这是我的IRC和SSH间歇悬挂: Ping statistics for 10.8.5.2: Packets: Sent = 4478, Received = 4460, Lost = 18 (0% loss) 以毫秒为单位的近似往返时间:最小= 17.2毫秒,最大= 273.4毫秒,平均= 32.3毫秒 […]

用Ansible添加静态路由

如何在Ansible中添加和删除路由表中的路由? 我似乎无法find任何networking或系统模块。

Windows 2008 R2共享在重新启动时消失

每当我重新启动Windows 2008 R2服务器,共享文件夹不再共享。 每次重新启动后,我需要RDC到服务器,右键单击每个我想分享的文件夹,然后点击“属性”和“共享”。 所需共享名称始终保持不变,所有者(始终是pipe理员)的适当权限以及我以前为组和用户设置的相应R / W访问权限也是如此。 但状态显示为“不共享”。 如果按下“分享”button,会想到“这可能需要几分钟”的消息,然后报告完成,并且可以从networking客户端再次访问共享。 但在每次重新启动时,我必须为每个共享文件夹执行此操作。 我已经阅读了关于iSCSI驱动器的类似问题,但是所有的共享都是通过FireWire连接到服务器的Drobo,并且作为本地驱动器(不是iSCSI)出现在服务器上。 我怀疑股票是在Drobo这个事实是造成这个问题,但我很难从哪里开始寻找一个长期的修复,而不是一个解决办法。 提前致谢!

Nginx的位置索引麻烦

我有nginx位置块的麻烦。 location /myApp/api/account/tutorialPage { alias /data/www/; index tutorial.html; } 如果有严格的匹配 – 一切正常,可以访问我的tutorial.html。 但是我想每个包含/ tutorialPage的链接都会导致tutorial.html。 所以我做了下一个位置: location ~ /tutorialPage { alias /data/www/; index tutorial.html; } 它一定是像“如果链接包含/ tutorialPage比去tutorial.html”。 但是我有403错误。 [错误] 10148#0:* 65346“/ data / www”目录索引被禁止,客户端:194.183.181.44,server:,request:“GET / myApp / api / account / tutorialPage / HTTP / 1.1” “my.domain.com”,推荐人:“ https://my.domain.com/ ” 我有双重检查,数据/ www dir是有chmod 755(例如可以通过enyone读取) —- UPD 工作地点的例子 […]

pfSense中的端口转发不起作用

我最近设置了一个pfSense路由器,并且不能从我自己的局域网外部获得任何端口转发。 我有以下转发规则到位于10.0.1.2的本地服务器: 请注意,如果我为此规则启用了NATreflection,那么ssh -p 993 user@my-wan-ip从我的局域网工作,所以这个规则是有一定效果的。 但是,它不会从我的局域网外部工作。 这是非常奇怪的,因为我有一个ICMP数据包的规则可以工作: 如果我禁用上面的图像中的第一个规则,ping将从networking外部开始失败,所以我知道防火墙正在工作。 但是第二个规则(创build端口转发时创build的NAT防火墙规则)似乎没有效果。 这工作正常使用我的旧路由器。 有什么我可以在这里俯瞰?

HTTP服务器被请求一个它不托pipe的域。 要回复什么?

我试图创build一个使用node.js的web服务器,(只是作为一个学习项目,不用于生产,我知道expressjs),我不知道如何在我提到的情况下标题? 我试图find一个HTTP代码来表明这个错误(4XX?),但似乎没有任何? 生产服务器如何回复这个问题? 如果我问服务器托pipegoogle.com为asdasdas.com,它回答与404,但一些其他服务器只是redirect到他们托pipe的域名,所以我真的不太确定我应该实现哪个选项! 非常感谢! 🙂

-Pinput接受对于iptables来说意味着什么?

我对iptables相当陌生,正试图弄清楚我是否已经适当地configuration了我的规则集。 关于我的问题的-P INPUT ACCEPT部分,我正试图确定这是否适用于我想要应用的规则。 请参阅下面的进一步细节。 我已经使用包含以下规则的文件使用iptables-restore 。 本质上,我试图允许回送stream量,build立/相关的连接,SSH和HTTP。 所有其他stream量应该被拒绝。 *filter :fail2ban-ssh – [0:0] # Input chain rules -A INPUT -i lo -j ACCEPT -A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT -A INPUT -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT -A INPUT -p tcp -m tcp –dport 22 -m conntrack –ctstate NEW,ESTABLISHED -j ACCEPT -A […]

基于标题值的HAProxydynamic服务器地址

你好我试图路由stream量回到用户机器为了在本地运行一个站点,但拿起HAProxy提供的其他来源的标头/ cookies /路由逻辑。 到目前为止,我还没有弄清楚如何做到这一点。 该文档说使用环境variables是可用的https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#4-server 地址string的任何部分都可以引用任意数量的环境variables,方法是使用美元符号('$')在名称前加上括号('{}'),类似于Bourne shell中所做的。 但我会想象有一种使用acl或样本获取的方式,但对于我来说,我无法弄清楚如何去做。 下面是我尝试过的一个例子。 我通过删除$ {hdr(originalIp)}并使用我的IP做了一个概念validation,但是我希望它能dynamic地使用请求者IP(如果存在的话) ### Sample config acl has_local_cookie cook_sub(local) -i true use_backend local if has_local_cookie backend local server local-origin ${hdr(originalIp)}:443 ssl verify none

如何优化Linux NAT /路由器的吞吐量?

我试图使用旧的富士通RX300S2,四核英特尔®至强®CPU @ 2.80GHz作为Gitabit NAT路由器,它具有通过PCI-X的双千兆网卡。 路由器也会将来自外部接口的组播stream量转发到内部networking。 组播路由由上游Cisco路由器处理,所以NAT路由器只需要“泄漏”eth1(上游)和eth0(内部)之间的组播stream量。 这已经使用igmpproxy正确设置,基本上使L3路由器根据组播stream量作为L2桥。 在testing吞吐量时,在200个组/stream(大约80,000 p / s)上接收大约850-900Mbit的组播stream量给用户空间中的本地进程是没有问题的,它也实时分析200个stream而不丢包。 本地进程最高可达100%。 这些stream由封装在IP UDP数据包中的IPTV mpeg传输stream组成。 7×188 = 1316字节的有效载荷。 但是当在转发模式下testing吞吐量时,例如,组播stream量进入eth1,并在内核级别路由到eth0并发送到本地networking时,NAT路由器不能转发所有收到的stream量。 外部接口eth1接收所有组播stream量〜900Mbit,但出接口只发送〜600Mbit,并且根据eth0附接的接收testing机,所有stream受到丢包的影响。 当分析负载ksoftirqd / 3在100%的CPU上达到最大值,而其他3个核心在10%以下时,看起来不是所有4个内核都参与负载。 / proc / interrupts也显示eth0和eth1共享irq16: CPU0 CPU1 CPU2 CPU3 16: 0 0 92155 208280892 IO-APIC 16-fasteoi uhci_hcd:usb2, uhci_hcd:usb5, eth1, eth0 可以看出,CPU3处理不成比例的中断。 我已阅读了有关cpu_affinity的各种文本,并尝试将CPU内核固定到networking队列中。 不幸的是,这个来自Broadcom的NIC tg3不支持多个队列,但是仍然应该可以在这个四核系统上的更多核心之间共享负载。 或者是PCI-X总线是瓶颈,但是如果是这样的话,那么在传入的eth1和传出的eth0上的吞吐量应该被减less,并且数据包应该被eth1丢弃, 但是看起来在eth1和eth0之间丢失了数据包。 不正确,因为在路由器中丢失数据包时,/ sys / class / net / […]

覆盖AWS实例启动后自动分配公共IP设置

每个AWS账户有5个公共IP地址(弹性IP)的限制,我已达到此限制。 现在我有许多EC2实例创build没有“自动分配公共IP”属性,在启动时分配一个公共IP地址。 这是好事,因为我们不支付和消耗宝贵的资源。 另一方面,我不能通过SSH直接访问,但只能在具有公共IP地址的实例之间进行桥接。 我想在实例启动期间覆盖“Auto-assign Public IP”参数集,以便在需要时重新启动实例并分配一个公有IP地址。 而且,当维护任务完成时,重置参数并重新启动实例。 有没有机会改变这种行为或应该假设是不可能的?