AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[virtual-network](server)

Martin Hope
kriomant
Asked: 2022-03-27 03:57:23 +0800 CST

为什么流量会在不同的 veth 设备之间路由?

  • 1

我有一个问题:虚拟网络设备之间存在意外的路由路径。

让我们创建两个独立的 veth-peer 设备对:

$ sudo ip link add veth0 type veth peer name peer0
$ sudo ip link add veth1 type veth peer name peer1

为 peerX 设备分配地址:

$ sudo ip addr add ab:: dev peer0
$ sudo ip addr add cd:: dev peer1

设置所有设备:

$ sudo ip link set dev veth0 up
$ sudo ip link set dev veth1 up
$ sudo ip link set dev peer1 up
$ sudo ip link set dev peer0 up

检查设备:

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 02:82:b2:df:b0:58 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 84429sec preferred_lft 84429sec
    inet6 fe80::82:b2ff:fedf:b058/64 scope link
       valid_lft forever preferred_lft forever
3: peer0@veth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 6e:8d:c0:7c:02:9c brd ff:ff:ff:ff:ff:ff
    inet6 ab::/128 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::6c8d:c0ff:fe7c:29c/64 scope link
       valid_lft forever preferred_lft forever
4: veth0@peer0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 4e:43:26:75:10:11 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::4c43:26ff:fe75:1011/64 scope link
       valid_lft forever preferred_lft forever
5: peer1@veth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether ea:8c:82:e6:2e:a9 brd ff:ff:ff:ff:ff:ff
    inet6 cd::/128 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::e88c:82ff:fee6:2ea9/64 scope link
       valid_lft forever preferred_lft forever
6: veth1@peer1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether da:5a:68:b1:e8:43 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::d85a:68ff:feb1:e843/64 scope link
       valid_lft forever preferred_lft forever

和路线:

$ ip r
default via 10.0.2.2 dev enp0s3 proto dhcp src 10.0.2.15 metric 100
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15
10.0.2.2 dev enp0s3 proto dhcp scope link src 10.0.2.15 metric 100

现在在 UDP 端口 2000 上监听 peer0:

$ nc -u -6 -l ab:: 2000

并通过 peer1 发送数据包:

$ echo -n abc nc -u -6 -s cd:: ab:: 2000

和听nc版画abc!但是为什么?peer0并且peer1没有以任何方式连接。如果我理解正确,收听nc应该绑定到peer0,发送nc应该绑定到peer1.

networking linux-networking virtual-network
  • 1 个回答
  • 78 Views
Martin Hope
MolteNolte
Asked: 2021-05-27 03:32:46 +0800 CST

Azure:如何将 CosmosDb 正确添加到 VNET

  • 0

我有一个关于 ComsosDB 和 VNet 的问题。我想在它自己的 Vnet 中添加我的 WebApp 以及在它自己的 ComsosDB 中。但对我来说,它不确定如何将 CosmosDb 添加到 Vnet。根据这篇文章,我必须向 Cosmos 添加一个 Vnet。但由于在单选按钮(选定网络)上有“允许访问”标签,我假设我必须从我的 Webapp 添加 Vnet,以便它可以访问数据库。这也是我所做的并且连接正常......但我不确定 CosmosDb 是否在它自己的 Vnet 中(因为我从未将它添加到一个 Vnet 中)或者它是否在同一个 Vnet 中,如 WebApp。

这是我的设置

所以我的问题是:

就安全方式而言,设置是否正确?是不是不需要在自己的 VNet 中添加 ComsosDb?

azure virtual-network
  • 1 个回答
  • 652 Views
Martin Hope
farhadf
Asked: 2021-05-14 08:40:33 +0800 CST

Azure 虚拟网络位置权衡

  • 0

我只是好奇在选择虚拟网络的位置时是否需要权衡。例如,如果很多资源和现有的 v-net 在西部地区,我想部署一个新的 v-net,想必我也应该在西部地区做。但是,例如,在 West-2 中部署它会有什么缺点?

似乎我可以对我的网络进行相同的对等,因此不确定是否有能力或功能变化。是否存在延迟问题?

azure azure-networking virtual-network
  • 1 个回答
  • 18 Views
Martin Hope
Blake Simmons
Asked: 2021-03-02 13:36:34 +0800 CST

为什么我的 docker 注册表拒绝来自本地网络中的虚拟机而不是主机的连接?

  • 1

对于上下文 - 我正在尝试在气隙环境中部署 OKD,这需要镜像镜像注册表。然后,在安装过程中,网络中的其他机器会从这个私有、安全的注册表中提取。

描述环境 - 运行注册表容器的主机正在运行 Centos 7.6。其他机器都是使用 libvirt 运行 Fedora coreOS 的虚拟机。虚拟机和主机使用使用 libvirt 创建的虚拟网络连接,其中包括虚拟机的 DHCP 设置(通过 virsh net-edit 配置),为它们提供静态 IP。主机还托管 DNS 服务器(绑定),据我所知,它配置正确,因为我可以使用其完全限定的域名从其他机器 ping 每台机器并访问特定端口(例如端口主机上的 apache 服务器监听)。使用 Podman 代替 Docker 进行 OKD 的容器管理,但据我所知,命令完全相同。

我使用以下命令在气隙环境中运行注册表:

sudo podman run --name mirror-registry -p 5000:5000 -v /opt/registry/data:/var/lib/registry:z \
-v /opt/registry/auth:/auth:z -v /opt/registry/certs:/certs:z -e REGISTRY_AUTH=htpasswd \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.pem -e REGISTRY_HTTP_TLS_KEY=/certs/registry-key.pem \
-d docker.io/library/registry:latest

可以使用curl -u username:password https://host-machine.example.local:5000/v2/_catalogwhich returns访问它{"repositories":[]}。我相信这证实了我的 TLS 和授权配置是正确的。但是,如果我将 ca.pem 文件(用于签署注册表使用的 SSL 证书)传输到虚拟网络上的 VM 之一,并尝试使用相同的curl命令,我会收到错误消息:

connect to 192.168.x.x port 5000 failed: Connection refused
Failed to connect to host-machine.example.local port 5000: Connection refused
Closing connection 0

这对我来说很奇怪,因为过去我已经能够使用这种方法从 VM 与注册表进行通信,但我不确定发生了什么变化。

经过进一步挖掘,似乎端口本身存在某种问题,但我无法确定问题出在哪里。例如,如果我sudo netstat -tulpn | grep LISTEN在主机上运行,​​我会收到一条指示 podman (conmon) 正在侦听正确端口的行:

tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 48337/conmon

但是,如果我测试该端口是否可以从 VM 访问,(nc -zvw5 192.168.x.x 5000)我会收到类似的错误:Ncat: Connection refused.如果我在主机上的任何其他侦听端口上使用相同的测试,则表明与这些端口的连接成功。

请注意,我已经完全禁用了 firewalld,据我所知,所有端口都是开放的。

我不确定问题出在我的 DNS 设置、虚拟网络还是注册表本身,我不太确定如何进一步诊断问题。任何见解将不胜感激。

网络定义:

<network connections='6'>
  <name>okd</name>
  <uuid>2ce10cce-9bb6-4d5d-950f-15427172b196</uuid>
  <bridge name='virbr1' stp='on' delay='0'/>
  <mac address='52:54:00:d9:d6:95'/>
  <domain name='okd'/>
  <ip address='192.168.2.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.2.200' end='192.168.2.254'/>
      <host mac='52:54:00:45:93:07' name='okd-bootstrap' ip='192.168.2.200'/>
      <host mac='52:54:00:f0:0a:1c' name='okd-master1' ip='192.168.2.201'/>
      <host mac='52:54:00:d1:29:9e' name='okd-master2' ip='192.168.2.202'/>
      <host mac='52:54:00:c9:a4:bb' name='okd-master3' ip='192.168.2.203'/>
      <host mac='52:54:00:25:5d:48' name='okd-worker1' ip='192.168.2.204'/>
      <host mac='52:54:00:1e:90:3c' name='okd-worker2' ip='192.168.2.205'/>
    </dhcp>
  </ip>
</network>
ssl libvirt docker-registry containers virtual-network
  • 1 个回答
  • 1116 Views
Martin Hope
Kent Allard
Asked: 2020-12-03 14:28:24 +0800 CST

Azure:如何为 VM 提供 NAT 地址并使 VM 只能从特定 IP 地址访问?

  • 0

我是新的 Azure,我刚刚创建了我的第一个 VM。现在我想给虚拟机一个私有 IP 地址(10.0.0.200),并使虚拟机只能从特定的公共 IP 地址访问。我希望虚拟网络成为我们专用网络的扩展,即 10.0.0.X、255.255.254、10.0.0.1。

我阅读了这两篇文章使用 Azure 门户为 VM 配置专用 IP 地址 和什么是虚拟网络 NAT?,但我只能使用公共 IP 地址通过 RDP 连接到 VM。当我从 VM 执行 ipconfig 时,它显示 IP 地址为 10.0.0.200。

还是最好将整个虚拟网络设为私有?

谢谢!

virtual-machines azure virtual-network
  • 1 个回答
  • 262 Views
Martin Hope
Beakie
Asked: 2020-10-18 15:00:15 +0800 CST

Azure 虚拟机防火墙

  • 0

我有多个虚拟网络、一个带有站点到站点 VPN 的 VPN VN、一个 AADDS VN、一个 VN 上的虚拟机生产网站集群和一个 VN 上的虚拟机测试网站集群。我还有一系列的应用服务。

有人建议我添加一个虚拟机防火墙,这让我有点难过。

我在每个集群的 Web 服务器和 VPN 上都有一个公共 IP。

基于虚拟机的防火墙 (WatchGuard FireBox) 仅允许在不受信任端使用单个 NIC。

我可以使用应用程序网关将流量从单个 IP 路由到每个网站(生产、测试​​和应用程序服务),并使用跳转盒到 RDP 到每个 VM(跨测试/生产总共 6 个),这将允许我使用端口这个单一的 NIC 将流量路由到其目的地。这并不理想。

如何使用防火墙拦截所有外部流量并仍然使用 azure 访问多个 IP?跳箱和应用程序网关是唯一的方法吗?

老实说有点困惑。所有输入表示赞赏。

firewall azure virtual-network
  • 1 个回答
  • 118 Views
Martin Hope
Geordie
Asked: 2020-09-12 10:45:24 +0800 CST

在 Azure 中的 VNet 集线器-辐条配置中,是否需要在辐条之间创建对等连接?

  • 0

我正在 Azure 中设置 VNet 的简单中心辐射型配置。集线器包含一个 VPN 网关,然后为存储、计算等创建辐条。我主要关心的是延迟,所以我不想通过集线器 VNet 设置自定义路由。

由于存储辐条需要查看计算辐条,我是否需要在辐条之间设置对等连接,或者 Azure 是否自动通过集线器 VNet 路由?

azure virtual-network peering
  • 1 个回答
  • 118 Views
Martin Hope
Sid
Asked: 2020-08-14 07:00:27 +0800 CST

将虚拟网络中的 Container 公开给公共 Azure

  • 2

我有一个 Azure cosmos DB 实例配置为允许从专用虚拟网络访问:icy-horizo​​n。我还使用 Azure 容器实例部署了一个 API,其中端口 80 暴露在 icy-horizo​​n 网络上,因为它需要与数据库通信。

如何将 API 公开到互联网?

linux azure azure-networking virtual-network azure-container-service
  • 1 个回答
  • 511 Views
Martin Hope
VanKosiara
Asked: 2020-06-26 08:26:42 +0800 CST

如何在没有其他 VPN 的情况下将 2 个虚拟网络与本地连接?

  • 1

我对 Azure 完全陌生(对任何公共云都是新手,从未在那里做过任何事情)。

有一个通过 VPN 连接到本地资源的高效虚拟网络。
目标是创建具有新虚拟网络的新资源组,并将其与生产性虚拟网络和本地资源连接起来。但是如何实现呢?我已经通过网络对等连接了两个 VNet,它可以工作,但我仍然无法访问本地事物。

我必须创建另一个 VPN 连接吗?我读过一些关于路由的东西(这里:https ://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-udr-overview ),但对我来说它看起来很复杂。

我也试过这个:https ://docs.microsoft.com/en-us/azure/virtual-network/tutorial-create-route-table-portal但我被困在中间不知道该做什么(并且尝试不也破坏生产 VNet)。

networking azure virtual-network
  • 1 个回答
  • 1737 Views
Martin Hope
RogueKnight
Asked: 2020-03-04 21:42:26 +0800 CST

Ubuntu 服务器 - 具有 Internet 访问权限的“虚拟”网络接口

  • 1

我有一个带有一个公共网络接口 (eth0) 的 Ubuntu 18.04 服务器。我正在尝试创建其他“虚拟”网络接口,这些接口也能够通过设置 NAT 规则访问互联网。

我使用以下命令创建了一个虚拟接口:

ip link add type veth

ifconfig veth0 192.168.1.1

下面是我的 ifconfig 的输出:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 10.0.0.1  netmask 255.255.255.0  broadcast 10.0.0.255
    ether f2:3c:92:1f:2a:62  txqueuelen 1000  (Ethernet)
    RX packets 85664  bytes 111561237 (111.5 MB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 15392  bytes 2229468 (2.2 MB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    loop  txqueuelen 1000  (Local Loopback)
    RX packets 1385  bytes 213213 (213.2 KB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 1385  bytes 213213 (213.2 KB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.1.1  netmask 255.255.255.0  broadcast 192.168.1.255
    ether a6:e7:de:40:9a:28  txqueuelen 1000  (Ethernet)
    RX packets 27  bytes 2082 (2.0 KB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 1132  bytes 48520 (48.5 KB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

我已将“/proc/sys/net/ipv4/ip_forward”设置为 1:

$ cat /proc/sys/net/ipv4/ip_forward

1

我还尝试了许多 iptables MASQUERADE、FORWARD 和 NAT 规则,但无法从 veth0 访问 Internet。

当我从 veth0 接口 ping 192.168.1.1 时,一切正常:

$ ping -I veth0 192.168.1.1

PING 192.168.1.1 (192.168.1.1) from 192.168.1.1 veth0: 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.085 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.062 ms
64 bytes from 192.168.1.1: icmp_seq=5 ttl=64 time=0.061 ms
--- 192.168.1.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4097ms
rtt min/avg/max/mdev = 0.029/0.056/0.085/0.020 ms

但是,如果我尝试从 veth0 ping eth0 接口 IP 地址,我没有得到任何响应:

$ ping -I veth0 10.0.0.1

PING 10.0.0.1 (10.0.0.1) from 192.168.1.1 veth0: 56(84) bytes of data.
--- 10.0.0.1 ping statistics ---
39 packets transmitted, 0 received, 100% packet loss, time 38900ms

下面是我的路由命令的输出:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gw-li832.linode 0.0.0.0         UG    0      0        0 eth0
xx.xx.xx.xx     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 veth0

我似乎无法弄清楚我做错了什么,任何帮助将不胜感激。

ubuntu networking nat iptables virtual-network
  • 1 个回答
  • 315 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve