Назад | Перейти на главную страницу

Проблема с сетью Proxmox Nat

Определение

Я установил Proxmox 3.2 и пытаюсь настроить виртуальную машину в качестве коммуникационного сервера, который обрабатывает весь трафик и перенаправляет его на узлы с частным IP.

Я настроил сервер для сети NAT с двумя виртуальными машинами CentOS, которые имеют точно такую ​​же конфигурацию.

Что я делаю

Proxmox wiki имеет очень ограниченную базовую сетевую документацию nat.
Обнаружил похожие проблемы (этот, этот) здесь и на форумах proxmox. Я пытался понять основы Linux nat сеть поэтому я завершаю это очень понятное руководство от начала до конца. Я прочитал эту статью для iptables nat правила

Проблемы

После установки и настройки, когда я пингую с хоста на виртуальную машину или с виртуальной машины на хост, вывод будет:

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)

Сетевые интерфейсы

Сетевые интерфейсы, добавленные через веб-интерфейс:

Правила фаервола нат (нет никаких фильтров)

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

Я обнаружил свою ошибку, когда спал, поэтому сразу же проснулся и исправил ее. Интерфейс, который выполняет сетевое соединение, - vmbr1, но когда я настраивал виртуальную машину, я назначал неправильный режим моста (vmbr0) для сетевого устройства.

Чтобы исправить это, я остановил виртуальную машину и отредактировал режим моста с vmbr0 на vmbr1. Теперь все работает нормально.