Articles of linux networking

HTTP DELETE在Nginx和Application之间超时

我们正在使用HTTP DELETE面对一个非常奇怪的错误,症状是偶尔用户在浏览器中得到504(超时)错误。 请求stream经下面描述的步骤: 浏览器 – > Akamai – > AWS ELB – > Nginx – > AWS Application ELB – >应用程序 我们已经完成了请求。 我们发现,当发生错误时,请求会出现在Nginx的access.log中,但不会出现在AWS Application ELB的访问日志中。 所以Nginx是一个返回的超时,它等待60秒,然后返回408.看看访问日志和debugging日志,它看起来像Nginx代理应用程序的请求,但请求不通过。 进一步失败的请求也不会出现在Nginx服务器上的TCP Dump上。 我们收集的一些事实: 这个错误在Safari中不会发生,但偶尔会在Chrome和Firefox中发生, 在Firefox中,如果我们设置network.http.max-connections-per-server 10,问题就会消失。 任何高于(> 10)的值都会反击。 在Akamai中禁用HTTP 2可以减less问题发生的次数。 看来问题只发生在删除HTTP动词。 我们试图直接将Nginx指向应用程序实例(跳过ELB),问题依然存在。 看起来在我们的堆栈中持久连接的pipe理存在一些问题。 然而,我们的设置似乎是正确的,例如保持活动超时设置正确,Akamai 300秒,第一ELB302,Nginx304等等。 我也附上了Nginxdebugging日志的请求,任何一个感兴趣的。 这个失败的请求的情况是:DELETE / api / v2 / cart / ULBlIlptUun70M3h4cPm1t7Paos / line / 122555881 […]

最大传输速率iSCSI绑定与多path

我想通过iSCSI从我的虚拟机(Linux)获得最大的传输速率到我的Linux存储主机。 我不太了解iSCSi,所以我不确定哪种方式是最好的performance。 答:只需从vmnic0创build一个iSCSI会话到存储主机的bond0接口即可。 但那我就不会超过1Gbps而且 (我不知道是否有一种方法可以让一个文件传输的速度超过1Gbps,可能不会)。 B:我应该创build更多的vmnic吗? 并configuration多path? 多path甚至在虚拟机上通过已经绑定的esxi主机是否有意义? build立: |——-| | VM | |——-| | vmnic0 (VMXNET3) | vSwitch | |——-| | ESXi | |——-| | {Route by IP Hash, Trunk 4 NIC Active} | ——————— | | | | nic0 nic1 nic2 nic3 | | | | |——-| |Switch | |——-| | | | […]

什么是“路由添加主机”在Linux中的“IP路由”相当于什么?

具体来说, route add -host允许我通过主机名来指定主机来添加路由到主机,例如, route add -host www.google.com gw 192.168.1.1 但是,我无法find一种方法来使用ip route 。 我能得到的最接近的是 ip route add <ipaddrofhost>/32 via 192.168.1.1 dev eth0 我真的只限于不使用主机名?

可以通过Linux来实现IPv6路由通告首选项吗?

最上面的底线:我不能得到一个接收RAs的Linux盒子来使用RFC4191 “Default Router Preference”值来select更高优先级的路由。 相反,它首先学到的任何默认路线都是它所使用的,这对所有人都是不利的。 我错过了一个configuration选项,还是内核升级,或者我只是注定了所有时间 ? 长版本: 我有一个HA默认网关(VRRP / keepalived)的networking。 上游ISP将/ 48路由到网关,然后切割/ 64块分配给我的基础设施中的机器(以便它们可以将全局可路由地址分配给它们运行的​​容器)。 然后,每台机器通过radvd通告其容器/ 64到networking的其余部分(使用AdvDefaultLifetime 0来显示它没有默认路由)。 网关盒子也有容器运行,所以他们有自己的/ 64并且做广告,但是有AdvDefaultLifetime 30因为网关确实有默认路由。 我希望能够在网关上进行有状态的防火墙,所以两个方向上的所有stream量都需要经过HA网关对的同一个成员。 没关系,我可以这样做 – 一个keepalived具有更高的优先级,我只是告诉radvd在该机器上也以更高优先级通告其默认路由。 这样,如果“主”机器掉下来,所有的东西都会路由到另一台机器上,我们就可以。 除了… Linux似乎没有做任何事情的路由器偏好值。 我仔细研究了内核源代码,尽pipe它仔细保留了path标记中的值,而且rt6_score_route甚至看起来像是根据首选项做了一些事情 ,但我在生产中观察到的行为(使用3.13内核的Ubuntu 14.04)是无论哪个默认路由首先被学习,哪一个都被使用,不pipe哪一个具有更高的优先级。 除了冒险改变radvdconfiguration文件(其中一个使用AdvDefaultLifetime 30 ,当MASTER和另一个使用AdvDefaultLifetime 0时, BACKUP )并且每当keepalived提升/降级时重新加载radvd,我该怎么做才能确保RA中具有更高优先级的路由首选?

静态networking设置仍然使用DHCP

我正在内部networking上configurationUbuntu 14.04LTS服务器。 一切正常,按预期运行。 它分配了一个静态IP,这里是/ etc / network / interfaces # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.10.250 netmask 255.255.0.0 dns-nameservers 192.168.10.1 gateway 192.168.10.1 但是,当我们的路由器重新启动和/或networking出现故障时,服务器将拉动一个DHCP地址并忽略静态IP。 我试图删除“auto eth0”,但它并没有改变这种情况。 如果我重新启动服务器,然后静态IP总是回来。 我如何强制它始终使用静态IP? 编辑与问题的答案: 不是虚拟机 dhclient正在运行(两次?) 这个盒子没有VPN 日志中没有关于eth0的信息,但wlan0似乎正在相当规律地重新连接到接入点。

如何将Ubuntu升级到16.04 LTS,并且不会丢失networking访问权限

当我升级我的一台服务器到16.04 LTS时,我不得不调整networkingconfiguration(使用接口文件)并使用新的networking接口名称。 我很幸运,服务器运行在一个虚拟机,我可以通过虚拟pipe理控制台访问它。 我的一些服务器是位于同一地点的物理服务器,并且没有远程pipe理界面。 升级过程结束后,机器将通过networking无法访问。 我的问题是,是否有标准/build议/首选的方式来运行LTS升级通过networking,并没有失去networking访问到服务器升级完成后,机器重新启动? 另一个问题是,是否可以在升级之前预测新的networking接口名称,并提前更新networkingconfiguration。

IPv6等价于Linux内核的多path路由工作吗?

最终目标是通过在lo接口上设置多个具有相同/ 128的服务器来获得每个分组的ipv6 udp负载均衡。 首先,试图让它与静态路由一起工作,然后开始使用Quagga或类似的软件包来探索BGP。 这必须在100%的虚拟环境中完成。 从我的search看,发行说明看起来像是在Linux Kernel 3.6中添加的。 但是我还没有能够设置这个function的成功演示。 使用ip命令,我应该可以添加多个路由到相同的IPv6子网,权重相同。 例如: ip -6 route add badd:badd:badd:1::1/128 nexthop via badd:badd:badd:2::1 nexthop via badd:badd:badd:2::2 我的服务器连接到badd:badd:badd:2 :: / 64并且可以同时达到badd:badd:badd:2 :: 1和badd:badd:badd:2 :: 2。 其他两个服务器在lo界面上都有badd:badd:1 :: 1/128。 我每次看到的情况是数据包只能通过路由表中的最后一个条目路由。 如果我用IPv4复制这个设置,我看到数据包路由通过表中的两个条目切换每隔一个数据包。 我已经尝试了多个内核3.10,4.4,4.6,但每个都收到了相同的结果。 我做错了什么,还是不支持? 谢谢!

OpenSwan IPSec日志说明

我正在尝试了解IPSec日志。 如果有人能够帮助我理解我所寻找的主要事情以及如何解决任何ipsec问题,那将是非常好的。 有人可以帮助我想象这个IPSec隧道是如何build立起来的 我非常想知道这个位:166.83.21.33 == [114.23.239.222] <4500> <—–> [210.54.48.233] == 166.83.0.0 SNAT:166.83.21.33 公开IP:114.23.239.222 公共ip的最后一个:210.54.48.233 166.83.0.0 – ?? Tunnel Id=35180 State=STATE_QUICK_R2 – ISAKMP Header, Connected Notification 166.83.21.33==[114.23.239.222]<4500><—–>[210.54.48.233]==166.83.0.0 Connection argument used: –name tun35180 –id 114.23.239.222 –host 114.23.239.222 –client 166.83.21.33/255.255.255.255 –nexthop 114.23.3.254 –updown /lib/ipsec/_updown –to –id 210.54.48.233 –host 210.54.48.233 –client 166.83.0.0/255.255.0.0 –pfs –pfsgroup=modp1024 –esp=aes128-sha1 –ipseclifetime=10800 –ikelifetime=14400 –keyingtries=5 –encrypt […]

通过额外的公共IP访问访客虚拟机

我有一个CentOS专用服务器(Hetzner): IP:aa.bb.cc. 16 网关:aa.bb.cc.1 networking掩码:255.255.255.255 和额外的IP(安装了Debian的guest虚拟机(libvirt)): IP:aa.bb.cc. 61 网关:aa.bb.cc.1 networking掩码:255.255.255.192 我使用Hetzner文档( https://wiki.hetzner.de/index.php/Netzkonfiguration_CentOS/en#Routed_.28brouter.29 )设置了路由configuration。 主机configuration: cat /etc/sysctl.conf net.ipv4.conf.all.rp_filter=1 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1 net.ipv4.conf.default.proxy_arp=1 net.ipv4.conf.all.send_redirects=0 net.ipv4.conf.eth0.send_redirects=0 net.ipv4.conf.br0.send_redirects=0 net.ipv4.conf.default.send_redirects=0 net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0 cat / etc / sysconfig / network-scripts / ifcfg-eth0 DEVICE=eth0 ONBOOT=yes HWADDR=XX:XX:XX:XX:XX:XX BOOTPROTO=none IPADDR=aa.bb.cc.16 NETMASK=255.255.255.255 SCOPE="peer aa.bb.cc.1" IPV6INIT=yes IPV6ADDR=2a01:4f8:yyy:yyyy::2/128 IPV6_DEFAULTGW=fe80::1 IPV6_DEFAULTDEV=eth0 […]

在linux中添加iptables snat或dnat规则时出错

我在Raspberry Pi 3上使用Arch Linux(32位版本)。 当我尝试添加任何-j SNAT或-j DNAT规则到iptables ,它不起作用 – 我收到一个错误 iptables: No change/target/match by that name 我通常不会遇到与iptables有关的问题。 例如,标准的INPUT , OUTPUT和FORWARD有很多规则。 此外, POSTROUTING包含一个MASQUERADE规则,它可以正常工作,允许内部LAN与Internet通话。 我在尝试允许互联网向公共IP发送stream量到达内部networking上的一台机器时遇到了SNAT问题。 当这不起作用,然后我尝试了更简单的规则,他们也没有工作。 然后我试图添加DNAT规则,并有同样的问题。 我可以将更复杂的规则添加到PREROUTING和POSTROUTING而不指定-j DNAT或-j SNAT ,然后他们将添加,计数器将递增。 以下是添加-j SNAT和-j DNAT规则和错误的最简单尝试的一些示例。 无论我尝试添加什么样的SNAT或DNAT规则,错误总是与下面显示的相同。 [root@hostname ~]# iptables -F PREROUTING -t nat [root@hostname ~]# iptables -A PREROUTING -t nat -d $public_IP -j DNAT –to-destination $internal_IP iptables: No […]