标签: linux-networking

qemu 与 tun 虚拟网络问题

我正在尝试使用 open-wrt ​​qemu 和 vde2 设置虚拟网络环境启动两个 qemu 实例并将它们连接在一起的脚本如下

IMAGE=/home/northpole/openwrt/trunk/bin/x86/openwrt-x86-generic-combined-jffs2-128k.img

sudo killall -q qemu
sudo killall -q wirefilter
sudo killall -q vde_switch

vde_switch -d --hub --sock num1.ctl -f colourful.rc
vde_switch -d --hub --sock num2.ctl -f colourful.rc
cp ${IMAGE} num1.image
cp ${IMAGE} num2.image

sudo qemu \
    -no-acpi -m 32M \
    -net vde,sock=num1.ctl,port=1 -net nic,macaddr=fe:fe:00:00:01:01 \
    -net nic -net tap,ifname=tapwrt1 \
    num1.image&

sudo qemu \
   -no-acpi -m 32M \
   -net vde,sock=num2.ctl,port=2 -net nic,macaddr=fe:fe:00:00:02:01 \
  -net nic -net tap,ifname=tapwrt2 \
 num2.image&

sudo ifconfig tapwrt1 …
Run Code Online (Sandbox Code Playgroud)

openwrt linux-networking qemu

5
推荐指数
1
解决办法
1374
查看次数

Linux & IPv6:如何绑定到任意 IPv6 地址?

可能的重复:
我可以将(大)地址块绑定到接口吗?

我有一个 /48 IPv6 块。我希望能够做到这一点:

$ wget --bind-address=<1st-ipv6> http://www.some-url.com
$ wget --bind-address=<2nd-ipv6> http://www.some-url.com
$ wget --bind-address=<3rd-ipv6> http://www.some-url.com
etc...
Run Code Online (Sandbox Code Playgroud)

对于我的 /48 块中的任何 2^80 个可用 IP。

根据我的测试,为接口分配大量 IP 会使速度变慢(就每秒 HTTP 请求而言)。显然,我无法将数十亿个 IP 分配给一个接口。有没有办法告诉Linux接受属于我的/48块的任何IP,或者修改wget以便可以完成?


2013 年 1 月 17 日编辑: 我找到了怎么做。您的内核版本必须至少为 3.3,因为从该版本开始,将应用此补丁:http ://lists.openwall.net/netdev/2011/11/08/8

然后你必须以 root 身份运行(正如 David Schwartz 所说):

# ip -6 route add local your_ipv6_block/48 dev lo
Run Code Online (Sandbox Code Playgroud)

您必须将此路由分配给 lo 接口,即使它不是到达 Internet 的传出接口。

然后你必须修改wget的源代码。在 src/connect.c 的 connect_to_ip() 函数中,创建套接字后,添加以下内容:

setsockopt(sock, SOL_IP, IP_FREEBIND, &v, sizeof(v));
Run Code Online (Sandbox Code Playgroud)

然后编译 wget (编译器可能会抱怨 IP_FREEBIND 没有被定义,如何解决这个问题超出了这里的范围)并安装它。

然后你就可以成功地做到:

$ wget …
Run Code Online (Sandbox Code Playgroud)

ipv6 linux-networking

5
推荐指数
1
解决办法
3870
查看次数

将 docker 容器连接到本地网络

我想做什么

我正在尝试使我的容器可用于所有设备的网络,而不仅仅是 docker 主机。

信息

  • 我的网络子网是 9.158.143.0/24
  • 我的网关是 9.1158.143.254
  • 我的 docker 主机 IP 是 9.158.143.52 主接口 (ens160)
  • 我的容器 IP 是 9.158.143.65
  • docker-pid 是 docker 进程 ID
  • docker id 是 docker ip

我想做什么

我正在尝试使我的容器可用于所有设备的网络,而不仅仅是 docker 主机。

我想制作 docker 配置,以便可以从我的网络中的任何地方访问 docker(在我的情况下是 ssh)。

到目前为止的步骤

  1. 首先创建一个新的桥接设备。

    • brctl addbr br-em1

    • ip 链接设置 br-em1

  2. 将此设备添加到您的网桥

    • brctl addif br-em1 ens160
  3. 使用曾经属于 ens160 的地址配置网桥

    • ip 地址 del 9.158.143.52/24 dev ens160

    • ip 地址添加 9.158.143.52/24 dev br-em1

  4. 将默认路由移动到网桥

    • ip route del 默认
    • ip route 通过 9.158.143.254 dev br-em1 添加默认值

到目前为止一切正常。docker …

networking ssh linux-networking docker

5
推荐指数
1
解决办法
5697
查看次数

将流量路由到同一网络上的两个 NIC

我在 Scaleway 上有几个 linux 测试盒,每个都有 2 个 NIC,它们都连接到同一个网络,10.0.0.0/8但每个都有自己的网关。

我希望能够同时使用 NIC(eth0/eth1)及其 IP 进行通信。因此,如果应用程序绑定到 IP .187,则应使用 dev eth0。如果应用程序绑定到 IP .189,则应使用 eth1。

现在只有 IP 为 .187 的接口 eth0 正在响应请求。任何请求。(这就是我使用 ping 和 ssh 进行测试的原因)。但是,如果我将默认路由从 eth0 更改为 eth1(ip .189),则传出流量将通过 eth1 正确路由,在这种情况下,eth0 将不可用。

那么如何配置盒子,这样两个接口都可以使用。

给定的

Box 1:
eth0_ip = 10.5.68.187/31
eth0_gw = 10.5.68.186

eth1_ip = 10.5.68.189/31
eth1_gw = 10.5.68.188
Run Code Online (Sandbox Code Playgroud)

方法

根据我的研究,herehere我创建了一个 bash 脚本,该脚本应该添加带有表的静态路由,以便可以同时使用两个网卡。

#/bin/bash
# My Vars with IP and GW for eth0
eth0_ip=$(ip -o -4 addr list eth0 | …
Run Code Online (Sandbox Code Playgroud)

networking routing ip-routing linux-networking iproute

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

禁用 NIC 接收端缩放散列

在运行 Fedora Core 27 的基准实验室系统上,我有 Intel X710 10GE 卡和 12 核 Xeon 处理器,配置了 12 个 NIC 队列和基于 IP 地址和端口号的 RX Flow Hashing。

这会导致内核之间的平衡不平衡,以及不一致的性能结果。我已经irqbalance禁用了,从 NIC 队列到 CPU 核心配置的 1:1 映射通过/proc.

我的应用程序是基于 UDP 的,所以我并不担心散列。我无法在散列函数的输入中生成足够的熵来获得均匀的输出分布,所以我很想尝试使用普通循环法。

有没有办法禁用 RSS 的 UDP 并获得循环,同时仍保持单独的队列?我发现的所有讨论禁用 RSS 的链接似乎也禁用了多个队列。

performance udp linux-networking

5
推荐指数
0
解决办法
638
查看次数

Samba 配置,状态[NT_STATUS_ACCESS_DENIED],

我正在尝试使用 centos7 配置 samba,以便从 Windows 10 客户端访问。

日志级别 = 1我在重新安装 centos 后使用了来自同一服务器的以前工作的 smb.conf。

log level = 10 您实际上可以跳过阅读此内容,其级别为 10 的详细信息。

开始

我对配置 linux 服务器很陌生,我熟悉基本的 linux 命令ls chmod chown ...

我按照这篇文章在 wlan 网络上配置了一个安全共享,然后和同事一起测试,一切正常,除了他没有共享的执行权限,路径是/home/CompanyFiles/All

所以我执行了 cd /home/

然后 chmod -R 777 /

然后我成功更改了整个centos文件的权限并破坏了centos安装。

经过一番谷歌搜索后,我决定重新安装 centos 比尝试从 chmod 命令中恢复要好,这是可行的,因为我只在其上安装了 samba,所以我将 smb.conf 复制到另一台机器上,重新安装了 centos 并重新安装了 samba,然后我使用了旧的 smb.conf。

结尾

smb.conf:

[global]
        workgroup = WORKGROUP
        security = user
        map to guest = Bad User
        printing = cups
        printcap name = …
Run Code Online (Sandbox Code Playgroud)

linux samba linux-networking centos7

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

从 StrongSwan VPN 中排除本地子网

我有一台带有额外的、仅限本地的以太网接口和私有子网的计算机。建立 StrongSwan VPN 后,我无法访问该子网。

这是本地“左”配置(由algo建立):

conn ikev2-<rightip>
    fragmentation=yes
    rekey=no
    dpdaction=clear
    keyexchange=ikev2
    compress=no
    dpddelay=35s

    ike=aes128gcm16-prfsha512-ecp256!
    esp=aes128gcm16-ecp256!

    right=<rightip>
    rightid=<rightip>
    rightsubnet=0.0.0.0/0
    rightauth=pubkey

    leftsourceip=%config
    leftauth=pubkey
    leftcert=daves.crt
    leftfirewall=yes
    left=%defaultroute

    auto=add
Run Code Online (Sandbox Code Playgroud)

有问题的子网是 10.0.0.0/24。%defaultroute 解析为 192.168.0.0/24 中的地址。

'left' 和 'leftsubnet' 看起来不像是正确的选项,但我认为没有什么比这更好的了。我试过将 leftsubnet 设置为 10.0.0.0/24 和 !10.0.0.0/24。

如何从 StronSwan VPN 连接中排除本地子网?

如何检查连接的路由配置?

vpn linux-networking strongswan

5
推荐指数
1
解决办法
5209
查看次数

linux htb中多余的带宽是如何分配的?

假设我有 100kbps 的带宽

                - Root - 100kbps
                /       \
               /         \
              /           \
             /             \
            /               \
           /                 \
Assured  30kbps             10kbps
Run Code Online (Sandbox Code Playgroud)

我保证 A 类 30kbps,B 类 10kbps。60kbps 是保留带宽还是多余带宽

HTB 手册中它说

任何需要它的类都可以使用任何未使用的带宽(按其分配份额的比例)。

但是,当我运行以下测试时,如上述 ascii 艺术所示:

tc qdisc add dev eno1 root handle 1: htb
tc class add dev eno1 parent 1: classid 1:1 htb rate 100kbps ceil 100kbps
tc class add dev eno1 parent 1:1 classid 1:10 htb rate 10kbps ceil 100kbps
tc class add dev eno1 …
Run Code Online (Sandbox Code Playgroud)

networking linux traffic-shaping linux-networking

5
推荐指数
1
解决办法
244
查看次数

OpenBSD 不响应 arp 查询

我正在设置一个 OpenBSD 系统作为路由器,我有一个接口作为上游,然后另一个配置了 vlan:

上游(em0):

inet 10.0.2.20 255.255.255.0 NONE description upstream
Run Code Online (Sandbox Code Playgroud)

下游(em1):

up
Run Code Online (Sandbox Code Playgroud)

VLAN10:

inet 172.18.10.1 255.255.255.0 NONE vlan 10 vlandev em1
Run Code Online (Sandbox Code Playgroud)

当我从静态 IP 为 172.18.10.10 的客户端 ping 172.18.10.1 并在我的 OpenBSD 机器上运行 tcpdump 时,我得到了 ARP 查询:

Jun 20 16:40:16.170853 08:00:27:9c:0c:38 ff:ff:ff:ff:ff:ff 0806 60: arp who-has 172.18.10.1 tell 172.18.10.10
Run Code Online (Sandbox Code Playgroud)

所以它显然正在接收arps,但没有响应。

有人有任何想法吗?

编辑: 这是路由表

networking openbsd linux-networking

5
推荐指数
1
解决办法
155
查看次数

如何提高我的虚拟机之间的数据传输率

我看了很多文章,但没有回答我的问题。

我的服务器使用 VMware vSphere Hypervisor。我的服务器中有 20 台虚拟机。

虚拟机操作系统:centos7

我已经将我的vSwitchVM 网络带宽更改为 1000000000 KB/s

所以其他虚拟机不会影响我的 dtr(数据传输率)。

现在我的 dtr 是 170 ~ 200 MB/s

我如何将我的 dtr 增加到 500 MB/s,以便我可以更快地将 20 GB 的文件从 A vm 传输到 B vm。

VM A : nc -l 20000 > /dev/null

VM B : time dd if=/dev/zero bs=100M count=200 | nc <VM A> 20000

200+0 records in
200+0 records out
20971520000 bytes (21 GB) copied, 122.466 s, 171 MB/s

real    2m2.479s
user    0m2.148s
sys     3m10.841s …
Run Code Online (Sandbox Code Playgroud)

bandwidth file-transfer linux-networking vmware-esxi

5
推荐指数
1
解决办法
5008
查看次数