LinuxForum.Fans
Тема

Сетевой мост для виртуальных машин + NAT

Автор: skyfoxss 3 сообщений 3830 просмотров
#315412

Всем привет!
Есть две сетевухи:
eth1 подключена к интернету через dhcp клиент:
dhclient eth1
eth0 подключена к свичу для раздачи интернета другим машинам, для этого поднимается на хосте dhcp сервер :
/usr/sbin/dcpd eth0.
Содержательная часть dhcp.conf для создания подсети 192.168.x.x

text

subnet 192.168.0.0 netmask 255.255.255.0 {
  interface eth0;
  option subnet-mask 255.255.255.0;
  option domain-name-servers <cерверы провайдера>
  option routers 192.168.0.199, 192.168.0.1; #192.168.0.199 - адрес второй сетевухи, 192.168.0.1 - свич 
  range 192.168.0.50 192.168.0.70;
}

Между eth1 eth0 включен NAT простейшим скриптом

text

echo 1 > /proc/sys/net/ipv4/ip_forward
/usr/sbin/named
iptables -F FORWARD
iptables -F INPUT
iptables -F OUTPUT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Это работает.
Теперь самое интересное: На этом же хосте установлен гипервизор Xen, для того чтобы виртуальные машины имели доступ к интернету нужно поднять сетевой мост xenbr0.
Первое что пришло в голову - добавить интерфейс с раздающим интернетом eth1 в мост xenbr0:

text

brctl addbr xenbr0
ifconfig eth1 down
brctl addif xenbr0 eth1

Но в этом случае NAT не раздает на вторую сетевуху (у клиентов подключенных к eth0 нет инета). Если в скрипте для NAT заменить eth1 на xenbr0:

text

#Теперь xenbr0 получает IP по dhcp:
#dhclient xenbr0
echo 1 > /proc/sys/net/ipv4/ip_forward
/usr/sbin/named
iptables -F FORWARD
iptables -F INPUT
iptables -F OUTPUT
iptables -t nat -A POSTROUTING -o xenbr0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Тот же самый результат, ip-forwarding не работает между мостом и второй сетевухой.

Как быть? (заранее благодарен)

#315414

"skyfoxss⇓" написал:
Как быть?
Сделать мост на eth0
#315474

urfin написал:
[quote="skyfoxss⇓"]Как быть?
Сделать мост на eth0[/quote]
Такой вариант заработал, только при условии что DHCP сервер запускается после создания моста. Спасибо!
Войдите или зарегистрируйтесь, чтобы ответить.