标签: linux-networking

Docker 端口似乎无法从外部服务器访问

我在 SUSE Linux Enterprise Server 12 SP1 中遇到了 Docker 的奇怪情况。

我使用 SSH 连接到服务器。首先,我尝试运行一个简单的 nginx 服务器来测试:

docker run -d -p 8081:80 nginx:alpine --name nginxtest
Run Code Online (Sandbox Code Playgroud)

容器启动成功。然后,跑步curl http://localhost:8081就可以了!

<!-- [...] -->
<title>Welcome to nginx!</title>
<!-- [...] -->
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试从我的计算机上的浏览器访问它时,http://10.etc.etc.etc:8081请求超时。

但令人惊讶的是,如果我暂时忘记 docker,并直接从服务器使用简单的 HTTP 服务器,例如python3 -m http.server,我会得到:

Serving HTTP on 0.0.0.0 port 8000 ...
Run Code Online (Sandbox Code Playgroud)

当我从计算机上的浏览器访问它时,http://10.etc.etc.etc:8000它就可以工作了!

所以这一定是关于 docker 如何公开其端口的,但这很奇怪,因为它curl http://localhost:8081有效......

我该如何进一步排除故障并解决此问题?

注意:直到昨天我跑步时一切都运行良好systemctl restart wicked(我试图调查另一个不相关的问题)。我也尝试重新启动服务器,但没有帮助。


这是一些可能相关的更多输出......

  • ifconfig docker0
docker0   Link encap:Ethernet  HWaddr 02:49:68:4D:40:9B
          inet addr:172.17.0.1 …
Run Code Online (Sandbox Code Playgroud)

networking sles linux-networking docker sles12

9
推荐指数
1
解决办法
1万
查看次数

IPv6 仅在 ping 默认网关后工作。

我们现在有 2013 年,我认为在我的服务器上激活 IPv6 早就应该了。但不幸的是,我遇到了一些问题。老实说,我对 IPv6 的经验很少,所以我希望你能帮助我解决我的“小”问题。

一个小说明:以下地址被混淆了,这不是我在配置中使用的地址;)

我正在运行 Debian 压缩(Debian 2.6.32-46)并且我从我的提供商那里得到了一个 /64 IPv6 块:2a01:4f8:a0:aaaa::/64

所以我改变了/etc/network/interfaces文件如下(这也是我的供应商推荐的方式):

# Loopback device:
auto lo
iface lo inet loopback

# device: eth0
auto  eth0
iface eth0 inet static
  address   85.10.xxx.zz
  broadcast 85.10.xxx.yy
  netmask   255.255.255.224
  gateway   85.10.xxx.1


iface eth0 inet6 static
  # Main IPv6 Address of the server
  address 2a01:4f8:a0:aaaa::2
  netmask 64
  gateway fe80::1


auto eth0:1
iface eth0:1 inet static
        address 85.10.xxxx.uu
        netmask 255.255.255.224

# default route to access subnet
up route …
Run Code Online (Sandbox Code Playgroud)

networking linux ipv6 linux-networking debian-squeeze

8
推荐指数
1
解决办法
3万
查看次数

dig 输出中的“net.c:577:sendmsg() 失败:不允许操作”

我在 CentOS 6.6 机器上运行 Bind 9.10.2 版本。在运行 dig 命令时,我收到“net.c:577: sendmsg() failed: Operation not permitted"通知。

dig 实用程序正在给我一个答案,但在顶部,它显示了此通知。

$dig nkn.in +short   
**net.c:577: sendmsg() failed: Operation not permitted**  
164.100.129.98

System Information :-  
cat /etc/*-release   
CentOS release 6.6 (Final)   
LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch    
CentOS release 6.6 (Final)   
CentOS release 6.6 (Final)
Run Code Online (Sandbox Code Playgroud)

有人可以帮我弄清楚为什么我会收到此通知吗?

IPv6 防火墙规则集:-

*filter  
:INPUT DROP [0:0]  
:FORWARD DROP [0:0]  
:OUTPUT DROP [0:0]  
:LOGGING - [0:0]  
-A INPUT -i lo -j ACCEPT  
-A INPUT -p icmpv6 -j ACCEPT   
-A INPUT -p udp --dport 5353 …
Run Code Online (Sandbox Code Playgroud)

domain-name-system linux linux-networking

8
推荐指数
1
解决办法
5890
查看次数

如何在内核级别诊断 Linux LACP 问题?

Linux 绑定驱动程序是否有一个底层的管理或诊断接口来确定内部发生了什么?

多年来,我一直在 Linux 机器和 Cisco 交换机之间使用链路聚合。在设置 Linux 端根本不响应 Cisco LACP 数据包的新机器时,我会定期遇到死胡同。我对每台服务器都严格遵循一套严格的说明,但结果似乎各不相同。

无论绑定包含一个从属设备还是八个从属设备,tcpdump 都会显示来自所有绑定接口上的交换机的 LACP 数据包,并且没有数据包被传回。事实上,没有数据包是传输周期。 rx_packets为接口显示可观的流量,但tx_packets为零。日志中没有关于 MII 或绑定的有趣内容。甚至没有任何错误。

目前,我正在处理一个只有两个网卡的盒子。目前,我的债券中只有 eth1。显然,这是一个退化的配置。这种情况不会随着 eth0 和 eth1 在债券中而改变;当网络堆栈完全关闭时,它只会使机器更难工作。如有必要,我可以为两个 nic 重新配置它并通过管理界面 (DRAC),但我无法通过这种方式从框中复制粘贴。

一些预习:

  • 我测试了网卡、端口和电缆。当接口未绑定时,一切都按预期工作。
  • 我已经重新启动并确认模块加载正确。
  • 我已经尝试过使用和不使用 vlan 中继;这应该无关紧要,因为链路聚合发生在堆栈中该点下方。
  • 该交换机具有通向其他 Linux 机器的工作中继通道组。即使 Linux 机器的发行版、内核和硬件不同,配置也或多或少相同。

这是今天下载的 debian 8.6。

Linux box 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2
    (2016-10-19) x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

一个简写的配置:

iface eth1 inet manual

auto bond0
iface bond0 inet manual
        slaves eth1
        address 10.10.10.10
        netmask 255.255.255.0
        bond_mode 4
        bond_miimon 100
        bond_downdelay 200
        bond_updelay 200 …
Run Code Online (Sandbox Code Playgroud)

linux bonding linux-networking linux-kernel lacp

8
推荐指数
2
解决办法
2万
查看次数

RHEL7 中的 DEFROUTE 与 GATEWAY

我已禁用网络管理器,并且正在使用 ifcfg- 脚本进行网络配置。我试图找出 DEFROUTE="yes" 和 GATEWAY 选项之间的区别。

我理解“ifcfg 文件按数字升序解析,最后一个要读取的 GATEWAY 指令用于在路由表中组成默认路由。” 根据 RHEL 文档。但是 DEFROUTE 是如何使用的呢?

例如 ifcfg-em1 具有 DEFROUTE="yes" 和指定的 GATEWAY 选项。而 ifcfg-em2 只有 GATEWAY 选项。我看到 ifcfg-em2 GATEWAY 作为默认网关被添加到路由表中。完全有 DEFROUTE 的原因是什么?

谢谢,
最好的问候,
罗马

redhat routing linux-networking rhel7

8
推荐指数
2
解决办法
3万
查看次数

用于检索以太网接口名称的 Bash 脚本

在 Ubuntu 16.04 中,我编写了一个脚本来根据某些参数动态配置有线以太网接口的 IP 地址。现在的问题是,在我的脚本中,我假设名称是 eth0,但这并不总是正确的。检索它的名字(只是有线的)?

使用ifconfig命令我得到:

enp7s0    Link encap:Ethernet  HWaddr fc:3f:db:a2:6d:46  
          inet addr:192.168.0.101  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::149f:3103:af2f:1ec5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6784 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7493 errors:1 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4565079 (4.5 MB)  TX bytes:827825 (827.8 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:8037 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8037 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 …
Run Code Online (Sandbox Code Playgroud)

networking scripting ubuntu bash linux-networking

8
推荐指数
3
解决办法
2万
查看次数

在 docker 中运行 vpnc 时,得到 'Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system'

我正在尝试Cisco VPN client在 Docker 中运行控制台。我这样启动容器:

docker run -it -v /srv/vpn/keys/:/root/keys/ --network=host --cap-add=NET_ADMIN  --device=/dev/net/tun -v /dev/net/tun:/dev/net/tun vpn-vpnc-client_img
Run Code Online (Sandbox Code Playgroud)

然后vpnc在 Docker 容器内运行客户端

vpnc-connect /root/keys/vpnc.conf --local-port 0
Run Code Online (Sandbox Code Playgroud)

它产生以下输出:

Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only file system
Cannot open "/proc/sys/net/ipv4/route/flush": Read-only …
Run Code Online (Sandbox Code Playgroud)

permissions routing linux-networking docker vpn-client

8
推荐指数
1
解决办法
2000
查看次数

Linux 在真正长时间停机后自我恢复 DHCP?

我有几个 CentOS 6/7 系统(非生产、实验用途)已配置为使用 DHCP 作为其 IP 地址。上周发生了一次严重的网络中断,我发现这些系统丢失了 IP 地址并且 DHCP 客户端已终止。我想经过太多/太长时间的重试。

让它尝试永远恢复的正确方法是什么?是否有可以执行此操作的 dhcp 客户端设置?或者我应该添加一个 cron 条目,它每小时执行一次“ifup eth0”之类的操作?或者有没有更好的方法来做到这一点?

我知道 CentOS 6 和 CentOS 7 做这些事情的方式不同,我正在为这两种情况寻找答案。


更新:

现在我已经创建了这个脚本(我把它放在 /etc/cron.hourly/ 中),它似乎在 CentOS 6 的特定情况下工作。这可能不是最好的解决方案,但它“在我的机器上工作”。

#!/bin/bash

IF=eth0

ifconfig ${IF} | fgrep 'inet addr' > /dev/null

if [ $? -ne 0 ];
then
    echo "Network is dead, trying restart"
    ifup ${IF}
fi
Run Code Online (Sandbox Code Playgroud)

仍在寻找正确的方法来做到这一点,所以我认为这不是我问题的正确答案。

dhcp networkmanager linux-networking centos6 centos7

8
推荐指数
1
解决办法
1141
查看次数

sysctl 与直接写入 /proc/*

在典型的 Linux 机器上,您可以通过修改位于 的文件来更改内核配置/proc/*。

例如,对于accept_dad特定网络接口(例如eth0)的 IPv6 参数,您需要修改以下文件:

/proc/sys/net/ipv6/conf/eth0/accept_dad
Run Code Online (Sandbox Code Playgroud)

但是,正如我最近发现的,有一个广泛传播的工具,sysctl它具有相同的目的,并且工作原理如下:

sysctl -w net.ipv6.conf.eth0.accept_dad=1
Run Code Online (Sandbox Code Playgroud)

我的问题是,我们什么时候应该使用哪种工具?我的直觉告诉我,如果您知道自己在做什么,则应该直接写入文件,但是,如果您想要验证而不需要什么,则应该使用sysctl.

由于sysctl是我们可以直接控制的东西的另一层,我认为通过使用它,我们将自己暴露在潜在的错误中,而这些错误是通过直接写入文件来避免的。

linux linux-networking sysctl proc

8
推荐指数
1
解决办法
1697
查看次数

将 SR-IOV I350 嵌入式交换机用于 KVM 虚拟网络——是否需要外部交换机?

我将几个 KVM 虚拟机连接到路由到 1Gbit 物理网络的虚拟网络。路由器使用 netfilter/iptables 来过滤真实和虚拟网络之间的流量。对于虚拟网络交换机,我使用带有 PCI 直通的 SR-IOV。与使用 Linux 桥接器相比,这种设置允许更高的吞吐量(受 PCIe 带宽限制)和更低的 CPU 开销(参考:Toshiaki Makita 在 2014 年 LinuxCon Japan 上的演讲的第 22-23 页。

我已为每个 VM 和 KVM 主机分配了一个 Intel I350 NIC 相同端口的 VF。(每个 I350 端口最多有 7 个 VF,所以 6 个 VM + 主机是这个虚拟网络的最大大小)。除了一个恼人的怪癖外,此设置按预期工作:I350 的嵌入式交换机仅在我使用物理跳线将关联的 I350 物理端口连接到物理外部交换机(所有其他端口都为空)时起作用。打开外部开关后,虚拟网络工作正常;但是当外部交换机断电时,PF 链路状态更改为“NO-CARRIER”并且虚拟网络不再传递数据包。

有谁知道如何让 I350 的嵌入式交换机在物理端口上没有活动链接的情况下正常工作?

如果重要的话,VM 主机运行 Debian 10 (Buster)。

感谢您提供的任何光线!

补充说明:

  • 像Smartronix SuperLooper这样的环回插头不会像外部开关那样笨重,并且可能会起作用。然而,根据制造商的说法,它“仅用于测试可以禁用近端串扰 (NEXT) 功能的系统”——而 I350 数据表并未提及此类功能。

  • I350 数据表的第 3.7.6 节描述了 …

networking virtualization debian linux-networking kvm-virtualization

8
推荐指数
1
解决办法
821
查看次数