Доступ в Интернет из контейнеров LXC в proxmox 5.1 на VirtualBox

959
Roberto

Я установил Proxmox VE 5.1 ​​на VirtualBox в macOS (10.12).

Предполагаемая ОС Debian Strech (Proxmox построен на Debian) имеет 2 «физических» сетевых интерфейса (настроенных из VirtualBox), Host-Onlyи NATя могу получить доступ к Интернету через интерфейс NAT:

root@proxmox:~# traceroute 1.1.1.1 traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets 1 10.0.3.2 (10.0.3.2) 0.792 ms 0.694 ms 0.625 ms 2 1dot1dot1dot1.cloudflare-dns.com (1.1.1.1) 2.829 ms 2.818 ms 3.318 ms 

Файл / etc / network / interfaces в хосте debian содержит:

auto lo iface lo inet loopback  auto enp0s3 iface enp0s3 inet static address 192.168.56.101 netmask 255.255.255.0  auto enp0s8 iface enp0s8 inet static address 10.0.3.15 netmask 255.255.255.0 gateway 10.0.3.2 #NAT  auto vmbr0 iface vmbr0 inet static address 172.16.1.1 netmask 255.255.255.0 bridge_ports dummy1 bridge_stp off bridge_fd 0 

«Гость», debian видит macOS («хост») с обоих интерфейсов (IP-адреса macOS: 192.168.56.1, 10.0.3.2).

vmbr0Виртуальный интерфейс был создан для Lxc контейнеров Proxmox, я добавил Iptables правила для отправки всего трафика от vmbr0 на enp0s8интерфейс (NAT в VirtualBox).

iptables -A POSTROUTING -s 172.16.1.0/24 -o enp0s8 -j MASQUERADE -t nat 

Проблема в том, что когда я создаю LXC контейнер внутри Proxmox, используя в vmbr0качестве сетевого интерфейса, контейнер LXC не имеет доступа к Интернету, я могу свистеть к Proxmox «мастер» (IP: 172.16.1.1), но ничего.

Я также пытался использовать enp0s8 в качестве bridge_portsпараметра, тот же результат.

Файл /etc/network/interfacesв контейнере LXC (Ubuntu 16.04) содержит:

auto eth0 iface eth0 inet static address 172.16.1.100 netmask 255.255.255.0 gateway 172.16.1.1 

У меня довольно похожий конфиг на другом сервере Proxmox (но на голом железе, а не на установке VirtualBox), и он работает нормально.

Может кто-нибудь сказать мне, что неправильно или отсутствует в конфигурации сети, чтобы разрешить контейнерам доступ в Интернет?

0

1 ответ на вопрос

0
Roberto

Проблема была в том, что на хосте debian («master» в proxmox) не был активирован ip_routing, поэтому выполнение следующей команды все начинает работать нормально:

echo 1 > /proc/sys/net/ipv4/ip_forward 

Итак, теперь я получаю (из контейнера lxc):

# traceroute 1.1.1.1 traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets 1 172.16.1.1 (172.16.1.1) 0.978 ms 0.931 ms 0.911 ms 2 10.0.3.2 (10.0.3.2) 0.894 ms 0.810 ms 0.757 ms 3 * * * 4 1dot1dot1dot1.cloudflare-dns.com (1.1.1.1) 5.780 ms 6.463 ms 6.909 ms