Как мне создать мостовой интерфейс на Raspberry Pi?

597
cat pants

Мне нужен мостовой интерфейс для работы в сети LXC. Обычно я просто делаю что-то вроде этого:

auto br0 iface br0 inet dhcp bridge_ports eth0 

Но Распбиан использует dhcpcd.

Как мне создать мост на RPI?

Спасибо!

0
Вы спрашиваете, как настроить новый мост без IP или с назначенным вручную IP? LawrenceC 5 лет назад 0
Какую версию raspbian вы используете? Alex 5 лет назад 0
В любом случае, я могу справиться с dhcp / static стороной вещей. Обычно предпочитают статический, но иногда dhcp. Я могу настроить dhcpcd для любого из них, просто не могу найти документы по созданию br0. cat pants 5 лет назад 0
Стретч 2018-06-27 cat pants 5 лет назад 0

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

0
Alex

В Debian Stretch вы можете настроить LXC следующим образом:

(Рекомендуется способ разделения контейнеров на собственную сеть)

1.

apt install --no-install-recommends lxc libvirt-clients debootstrap libpam-cgfs lxcfs uidmap bridge-utils dnsmasq-base 

dnsmasq будет использоваться в качестве DHCP для контейнеров / тюрем LXC в сети 10.0.55.0/24

Проверьте, все ли готово:

lxc-checkconfig 

Если некоторые записи не будут отображаться как «включены», то reboot

2.

echo 'veth' >> /etc/modules 

3.

insmod /lib/modules/$(uname -r)/kernel/drivers/net/veth.ko 

4.

echo ' ### adjust and apply echo 'USE_LXC_BRIDGE="true" LXC_BRIDGE="lxcbr0" LXC_BRIDGE_MAC="02:01:02:03:04:05" LXC_ADDR="10.0.55.1" LXC_NETMASK="255.255.255.0" LXC_NETWORK="10.0.55.0/24" LXC_DHCP_RANGE="10.0.55.100,10.0.55.199" LXC_DHCP_MAX="100" LXC_DHCP_CONFILE="" LXC_DOMAIN="" ' >> /etc/default/lxc-net 

С этой конфигурацией вы можете использовать статический IP для джейлов от 10.0.55.2-99, другие будут выбирать IP из DHCP

5.

Разрешить пересылку:

echo ' # For LXC net.ipv4.ip_forward=1 ' >> /etc/sysctl.conf sysctl -p systemctl restart lxc-net.service 

6.

##### Add to firewall rules and apply -A FORWARD -d 10.0.55.0/24 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -s 10.0.55.0/24 -j ACCEPT -A INPUT -d 224.0.0.251 -s 10.0.55.1 -j ACCEPT -A INPUT -d 10.0.10.255 -s 10.0.10.1 -j ACCEPT -A INPUT -d 10.0.10.1 -s 10.0.10.0/24 -j ACCEPT 

7.

Настроить хост

echo "kernel.unprivileged_userns_clone=1" > /etc/sysctl.d/80-lxc-userns.conf sysctl --system 

8.

Настройте subuids & subgids для пользователя, который будет запускать LXC

 USER=UserThatRunsLXC # <- change subuids=$(cat /etc/s*id|grep $USER) [ -z "$" ] && { usermod --add-subuids 1258512-1324047 $USER usermod --add-subgids 1258512-1324047 $USER }  echo "$USER veth lxcbr0 10"| tee -i /etc/lxc/lxc-usernet 

Если вы получили сообщение об ошибке: «Отказано в доступе - не удалось получить доступ к /home/$USER/.local», тогда setfacl -m u:1258512:x . .local .local/share

9.

Сконфигурируйте шаблон по умолчанию для всех будущих непривилегированных контейнеров LXC. НЕ меняйте xx.xx.xx.xx, это шаблон MAC-адреса, который будет сгенерирован автоматически

cd /var/lib/lxc mkdir -p .config/lxc  echo \ 'lxc.include = /etc/lxc/default.conf # Subuids and subgids mapping lxc.id_map = u 0 1258512 65536 lxc.id_map = g 0 1258512 65536 # Be careful with next option to avoid security issue or lost of data lxc.mount.auto = proc:mixed sys:ro cgroup:mixed   # Network configuration lxc.network.type = veth lxc.network.link = lxcbr0 lxc.network.flags = up lxc.network.hwaddr = 0A:FF:xx:xx:xx:xx' >.config/lxc/default.conf 

10.

Наконец, создайте тюрьму (приспособьтесь к вашим потребностям):

Distributive=alpine lxc-create -n NameOfyourJail -t $ -- -r sid -a amd64 

PS
Если вы хотите использовать хост-общий мост вместо NAT-ed сети для контейнеров, вы можете перейти по этой ссылке, чтобы настроить хост как мост

Я ценю это, но я не хочу использовать NAT ... Я хочу, чтобы мои контейнеры получали ips в моей сети, как это делают мои системы x86 под управлением LXC. Спасибо! cat pants 5 лет назад 0
Проверьте ссылку, которую я только что добавил в post scriptum, как настроить хост-общий мост. Alex 5 лет назад 0