定义

定义

定义

我已经安装了 Proxmox 3.2,并且正在尝试将虚拟机配置为通信服务器,以处理所有流量并将它们转发到具有私有 IP 的节点。

我使用两个具有完全相同配置的 CentOS 虚拟机配置了 NAT 网络服务器。

我做什么

普罗克斯莫克斯wiki 上的 nat 网络文档非常有限且基础。
我发现了类似的问题() 在这里和 proxmox 论坛上。我试图了解Linux nat 网络所以我从头到尾完成了这个非常容易理解的教程。我读这篇文章是为了iptables nat 规则

问题

安装和配置后,当我从主机 ping 到虚拟机或从虚拟机 ping 到主机时,输出是:

root@testPrx:~# ping 10.0.4.2
PING 10.0.4.2 (10.0.4.2) 56(84) bytes of data.
From 10.0.4.1 icmp_seq=2 Destination Host Unreachable

当我尝试从具有互联网连接的同一网络中的服务器建立 telnet 连接到通信服务器的公共 IP 时 (192.168.0.3)

bash-4.1# telnet 192.168.0.2 2701
Trying 192.168.0.2...
telnet: connect to address 192.168.0.2: No route to host

当我尝试通过 telnet 连接到 localhost 时,192.168.0.2 的结果相同:

root@testPrx:~# telnet localhost 2701
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

问题

我的错误是什么?

配置

所有主机和虚拟机配置为:

Proxmox 服务器

Proxmox 版本

root@testPrx:~# pveversion
pve-manager/3.2-4/e24a91c1 (running kernel: 2.6.32-29-pve)

网络接口

通过 Web 界面添加的网络接口: 在此处输入图片描述

  • net0 -> vmbr0
  • 网络1->虚拟机1

    root@testPrx:~# cat /etc/network/interfaces

    auto lo
    iface lo inet loopback
    
    auto vmbr0
    iface vmbr0 inet static
            address 192.168.0.2
            netmask 255.255.255.0
            gateway 192.168.0.1
            bridge_ports eth0
            bridge_stp off
            bridge_fd 0
    auto vmbr1
    iface vmbr1 inet static
            address 10.0.4.1
            netmask 255.255.255.0
            bridge_ports none
            bridge_stp off
            bridge_fd 0
    
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '10.0.4.0/24' -o vmbr0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.0.4.0/24' -o vmbr0 -j MASQUERADE
    
    #these rules forward traffic on port 2701 to port 22 on the VM at IP 10.0.4.2
    
    post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 2701 -j DNAT --to 10.0.4.2:22
    post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 2702 -j DNAT --to 10.0.4.2:22
    

nat 的防火墙规则(没有任何过滤器)

root@testPrx:~# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  anywhere             anywhere             tcp dpt:2701 to:10.0.4.2:22

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  10.0.4.0/24          anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

路由表

root@testPrx:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.4.0        *               255.255.255.0   U     0      0        0 vmbr1
192.168.0.0     *               255.255.255.0   U     0      0        0 vmbr0
default         192.168.0.1     0.0.0.0         UG    0      0        0 vmbr0

IP 转发

root@testPrx:~# cat /proc/sys/net/ipv4/ip_forward
1

虚拟机

操作系统版本

-bash-4.1# cat /etc/redhat-release
CentOS release 6.4 (Final)

接口

eth0

-bash-4.1# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=192.168.0.3
GATEWAY=192.168.0.1
NETMASK=255.255.255.0

eth1

-bash-4.1# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=10.0.4.2
GATEWAY=10.0.4.1
NETMASK=255.255.255.0

SSH 守护进程正在运行并成功监听端口(22)

-bash-4.1# netstat -puntl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:85                  0.0.0.0:*                   LISTEN      1100/sshd

路由表

-bash-4.1# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.4.0        *               255.255.255.0   U     0      0        0 eth1
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1002   0        0 eth0
link-local      *               255.255.0.0     U     1003   0        0 eth1
default         10.0.4.1        0.0.0.0         UG    0      0        0 eth1

答案1

我在睡觉时发现了我的错误,所以我立即醒来并修复了它。进行 nat 网络的接口是 vmbr1,但是当我设置虚拟机时,我为网络设备分配了错误的桥接模式 (vmbr0)。

为了解决这个问题,我停止了虚拟机并将桥接模式从 vmbr0 改为 vmbr1。现在一切正常。

在此处输入图片描述

相关内容