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 / 问题 / 807871
Accepted
Alexander Dyuzhev
Alexander Dyuzhev
Asked: 2016-10-09 05:22:26 +0800 CST2016-10-09 05:22:26 +0800 CST 2016-10-09 05:22:26 +0800 CST

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

  • 772

我有一个 CentOS 专用服务器(Hetzner):
IP:aa.bb.cc。16
网关:aa.bb.cc.1 网络
掩码:255.255.255.255

和附加 IP(安装了 Debian 的来宾 VM(libvirt)):
IP:aa.bb.cc。61
网关:aa.bb.cc.1 网络
掩码:255.255.255.192

我已经使用 Hetzner 文档( https://wiki.hetzner.de/index.php/Netzkonfiguration_CentOS/en#Routed_.28brouter.29 )设置了路由配置。

主机配置:
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  

猫 /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

猫 /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
ONBOOT=yes
TYPE="Bridge"
BOOTPROTO=static
IPADDR=aa.bb.cc.16
NETMASK=255.255.255.255
IPV6INIT=yes
IPV6ADDR=2a01:4f8:yyy:yyyy::2/64
STP=off
DELAY=0

猫 /etc/sysconfig/network-scripts/route-br0

ADDRESS0=aa.bb.cc.61
NETMASK0=255.255.255.255

访客配置:
cat /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
    iface eth0 inet static
    address aa.bb.cc.61
    netmask 255.255.255.255
    pointopoint aa.bb.cc.16
    gateway aa.bb.cc.16
    dns-nameservers 212.133.98.98 212.133.99.99 212.133.100.100

iface eth0 inet6 static
    address 2a01:4f8:yyy:yyyy::4
    netmask 64
    address 2a01:4f8:yyy:yyyy::2

对于从访客 VM 到 Internet 的 Internet 访问,我添加了一条规则:

iptables -t nat -A POSTROUTING -o eth0 -s aa.bb.cc.61 -j SNAT --to-source aa.bb.cc.16

问题:可以通过访客 IP aa.bb.cc 从 Internet 访问访客 VM。61在路由模式下?当我从外部(互联网)ping 到 aa.bb.cc 时。61我收到“请求超时”。但是 aa.bb.cc.16(主机)ping 正常。我必须添加什么规则?

谢谢你。

centos iptables libvirt linux-networking hetzner
  • 2 2 个回答
  • 873 Views

2 个回答

  • Voted
  1. Spooler
    2016-10-09T08:26:12+08:002016-10-09T08:26:12+08:00

    首先,有几点需要明确。

    您使用的指南是指“路由器模式”和“桥接模式”。

    所描述的路由器模式几乎完全没有意义。它涉及创建一个空的“仅主机”网桥,将您的 VM 连接到该网桥,然后将 IP 级别的流量从该网桥路由到您的出站接口。这忽略了 libvirt 可以创建自己的 NAT 虚拟接口(带有可选路由、DHCP 和 DNS)并将 VM 接口连接到该接口的事实。事实上,libvirt 默认创建并启用了这个网络。它被称为“默认”网络。

    在您的情况下,您有两个子网(我假设它们位于单独的第 2 层域上 - 几乎所有情况都是如此)。一个地址将用于访问您的管理程序“aa.bb.cc.16/32”(这是一个无效的子网 - 稍后会详细介绍)该地址可以直接放置在接口上。

    然后你在另一个子网上有第二个 IP (aa.bb.cc.61/26)。此地址需要在来宾内的 VM 接口上进行。这可以直接使用网桥来完成,虽然您最初发布的指南为“路由模式”提供了糟糕的解决方案,但直接使用网桥的建议配置实际上是正确的处理方式。但是,它也提供了完全不正确的配置。

    如果您更新值以反映您的方案,则以下网络配置将适用于所述网桥:

    # /etc/sysconfig/network-scripts/ifcfg-eth0
    # device: eth0
    DEVICE=eth0
    BOOTPROTO=static
    ONBOOT=yes
    BRIDGE=br0
    
    # /etc/sysconfig/network-scripts/ifcfg-br0
    DEVICE=br0
    TYPE="Bridge"
    BOOTPROTO=static
    ONBOOT=yes
    

    完成此操作后,使用此网桥作为连接 VM NIC 的设备。如果需要,您可以在网桥本身上放置一个 IP 地址,从而允许主机和来宾之间进行通信。但是,这将在您申请公共访问的子网上。如果您确实需要主机到来宾通信,我建议通过“默认”NAT 接口或通过在主机和来宾上都具有专用 IP 空间的空桥(这将在虚拟机)。

    附带说明一下,您为管理程序 IP (255.255.255.255) 发布的网络掩码是 32 位。这将不允许在其网络上使用单个地址,我假设这只是一个错字。如果不是错字,您需要使用实际上允许主机的地址空间,即使它只是 31 位网络掩码。

    这涵盖了一般意义上的事物。希望这些信息足以让您做出决定并正确配置。

    • 0
  2. Best Answer
    Alexander Dyuzhev
    2016-10-13T08:50:08+08:002016-10-13T08:50:08+08:00

    这是工作解决方案:

    猫 /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"
    BRIDGE=br0
    

    猫 /etc/sysconfig/network-scripts/ifcfg-br0

    DEVICE=br0
    TYPE=Bridge
    BOOTPROTO=static
    IPADDR=aa.bb.cc.16
    NETMASK=255.255.255.255
    SCOPE="peer  aa.bb.cc.1"
    ONBOOT=yes
    DELAY=0
    

    mv /etc/sysconfig/network-scripts/route-eth0 /etc/sysconfig/network-scripts/route-br0 cat cat /etc/sysconfig/network-scripts/route-br0

    ### Hetzner Online GmbH - installimage
    # routing for eth0
    ADDRESS0=0.0.0.0
    NETMASK0=0.0.0.0
    GATEWAY0=aa.bb.cc.1
    

    访客配置:
    cat /etc/network/interfaces

    auto lo
    iface lo inet loopback
    
    auto eth0
        iface eth0 inet static
        address aa.bb.cc.61
        netmask 255.255.255.255
        pointopoint aa.bb.cc.16
        gateway aa.bb.cc.16
        dns-nameservers 212.133.98.98 212.133.99.99 212.133.100.100
        hwaddress ether 00:01:02:ab:cd:de # MAC Address for additional IP
    
    • 0

相关问题

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • 持续监控许多服务器运行状况的简单方法?

  • Hudson 无法在 tomcat5 中启动

  • CentOS 的依赖挑战

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