docker容器使用旁路由
### hello world ! and say something say anything~
最近弄了个自动签到.但是有几个网站需要扶梯.
就需要让容器走单独的线路.
打开网卡的混杂模式
1 | ip link set eth0 promisc on |
这里开混杂模式是因为eth0网卡必须接收不同ip的数据包
而且这个网卡下的IP可以固定IP.
### 创建macvlan网络
1 | 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冲突.
创建容器
1 | 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文件
1 | # nano /etc/config/network |
编辑完成后,保存并重启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网卡不互通.所以容器都应该在一个网卡下才能顺利访问.