hello world ! and say something say anything~
最近,我弄了个自动签到。但是,有几个网站需要扶梯。就需要让容器走单独的线路。
打开网卡的混杂模式
ip link set eth0 promisc on
这里eth0
是网卡名称,你必须改成你机器的实际网卡名称。使用ifconfig
命令可以查询当前网卡名称。这里开混杂模式是因为eth0
网卡必须接收不同 IP 的数据包,而且这个网卡下的 IP 可以固定 IP。
创建 macvlan 网络
docker network create -d macvlan --subnet=10.10.10.0/24 --gateway=10.10.10.251 --ip-range 10.10.10.230/28 -o parent=ovs_eth0 clash
这里 -d
指定网络类型为 macvlan
,--subnet
指定该网络的 CIDR,它必须和路由/主机同处于一个网段。--gateway
指定网关,指定 OpenWRT 地址即可。-o parent
指定要从哪个网卡创建 macvlan
,macvlan0
区分网络名称,这个后面创建容器的时候使用。--ip-range
通过限定 IP 范围绕开 IP 冲突。
创建容器
docker run --restart always --name qiandao-clash -p 8923:80 -d --network clash --ip 10.10.10.231 --privileged qdtoday/qd
这里 name
指定容器名称,p
指定外部端口:容器端口。network
指定之前的网络,IP
可以固定 IP。
配置容器网络
编辑 /etc/config/network
文件:
nano /etc/config/network
...
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option netmask '255.255.255.0'
option ip6assign '60'
option ipaddr '10.10.10.254'
option gateway '10.10.10.251'
option dns '10.10.10.251'
...
编辑完成后,保存并重启 network 服务 /etc/init.d/network restart
。
最后,还必须将 br-lan
网口设置成混杂模式(这一步还是在容器中执行):
ip link set br-lan promisc on
如果不行,可以 export ALL_PROXY=’socks5://10.10.10.251:7891’。
最后,我发现 macvlan
网卡不互通。所以,容器都应该在一个网卡下才能顺利访问。