如何在树莓派上创建桥接接口?

如何在树莓派上创建桥接接口?

我需要一个桥接接口才能使 LXC 网络正常工作。通常我只是这样做:

auto br0
iface br0 inet dhcp
  bridge_ports eth0

但是 raspbian 使用 dhcpcd。

如何在 rpi 上创建桥梁?

谢谢!

答案1

在 Debian Stretch 上你可以像这样设置 LXC:

(建议将容器分离到自己的网络)

1.

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

dnsmasq将用作 10.0.55.0/24 网络中 LXC 容器/jails 的 DHCP

检查一切是否准备就绪:

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

使用此配置,你可以为 jail 使用静态 IP,范围从 10.0.55.2-99,其他将从 DHCP 中选择 IP

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.

为运行 LXC 的用户配置 subuid 和 subgid

  USER=UserThatRunsLXC  # <- change
  subuids=$(cat  /etc/s*id|grep $USER)
  [ -z "${subuids}" ] && {
    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 ${Distributive} -- -r sid -a amd64

PS:
如果你想使用主机共享桥接而不是使用 NAT 网络,你可以点击此链接主机设置为桥接

相关内容