Я новичок в NAT и iptables, у меня есть физический сервер под управлением CentOS 6 с установленным KVM, еще 2 Linux-бокса запущены как VM - VM2 и VM3, и их IP-адреса 192.168.122.2 и 192.168.122.3 соответственно. Поскольку у меня есть только один реальный IP-адрес, NAT используется для переадресации внешних запросов на приложение VM, например, порт 30022 на ssh VM3 (порт 22). После настройки все работает отлично, уже месяц, но затем, после того как я сделал обновление RAM и перезагрузил сервер, NAT/переадресация портов снова не работает.
Больше информации:
- Iptables работает на хостовой ОС, но НЕ на гостевых ОС.
- Хостовая ОС iptables настроила NAT следующим образом:
целевой prot opt источник назначение DNAT tcp -- везде и всюду tcp dpt:30022 to:192.168.122.3:22 DNAT tcp -- везде и всюду tcp dpt:20022 to:192.168.122.2:22(22)
- Результат команды iptables -t nat -L -v -n:
pkts байт цель prot opt in out источник назначение 6 304 LOG tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30022 Флаги LOG 0 уровень 4 префикс ROUTE APP3 6 304 DNAT tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30022 to:192.168.122.3:22 3 152 DNAT tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20022 to:192.168.122.2:22
- Это означает, что пакет обрабатывается правилом NAT, пока я пытаюсь подключиться по telnet к порту 30022 с моего локального ПК (отдельная сеть).
Несколько дней мучаюсь. Есть ли помощь?
решение1
Вам следует проверить, включена ли переадресация IP на вашем хосте с помощью cat /proc/sys/net/ipv4/ip_forward
. Эта команда должна вывести 1
. Если она не включена, вам следует включить ее с помощью echo 1 > /proc/sys/net/ipv4/ip_forward
.