用ovs让bitcomet容器连接上ipv6

需求:

  • 运营商有提供ipv6
    
  • 设备支持ipv6
    
  • linux主机
    
  • 安装好docker
    
  • 拉好bitcomet镜像
    

以下步骤都是以root身份进行。
步骤:
首先得知道要给ovs的物理网口叫什么名字。我的叫ens32。
ip a

安装openvswitch-switch,我不知道你们用的是哪个linux的版本,我用debian。
apt install openvswitch-switch -y
然后新建个叫ovsbr0的bridge。
ovs-vsctl add-br ovsbr0
为了ovsbr0可以连上网,需要接上个物理网口。温馨提示,进行以下命令会让这物理网口ens32的网络断开!!!
ovs-vsctl add-port ovsbr0 ens32

如果有2个及以上端口,忽略/* 到*/的内容。
/*
如果是只有这物理网口的话,用以下命令创建个叫host的虚拟网口让宿主机连上网络。
ovs-vsctl add-port ovsbr0 host – set Interface host type=internal
当然现在是没网络的,必须得设置,当然设置网络得看用的是什么网络管理器,我没用NetworkManager和Systemd,所以直接编辑/etc/network/interfaces。

auto ens32
allow-hotplug ens32
iface eno1 inet manual

auto host
allow-hotplug host
iface host inet dhcp
iface host inet6 auto

然后重启下网络。方法和网络管理器有关。
service networking restart
*/

新建个bitcomet容器,网络必须为none.

services:
    sandbox:
        container_name: bitcomet
        image: wxhere/bitcomet:latest
        volumes:
            - /mnt/docker/appdata/BitComet:/home/sandbox/.config/BitComet:rw
            - /mnt/Downloads:/home/sandbox/Downloads:rw
        network_mode: none
        environment:
            - VNC_PASSWORD=123456
            - HTTP_PASSWORD=123456
            - USER=sandbox
            - PASSWORD=123456

然后手动给容器分配ip。ovsbr0是前面建的bridge,eth0好像是所有容器的默认网口,bitcomet是容器名称,192.168.0.80/24是我给容器设的ipv4的ip,192.168.0.1是我的网关。至于ipv6,SLACC会通过RA自己获得,只要路由器设置好就行了。
ovs-docker add-port ovsbr0 eth0 bitcomet –ipaddress=192.168.0.80/24 –gateway=192.168.0.1
成品图长这样,TCP和UDP在路由器上端口映射就绿灯了。截图完,我就重新拨号了,不用担心我的ip。这容器也会删除。