【笔记】iKuai通过Docker安装OpenWRT旁路由

前言

iKuai通过Docker安装OpenWRT旁路由

准备工作

  • iKuai可以使用Docker的特权模式

传送门

  • 通过Web控制台进入Ubuntu容器,安装vim编辑器

通过vim编辑文件

1
apt update && apt install -y vim
  • 通过Web控制台进入Ubuntu容器,安装ssh,并允许远程访问

如果不通过ssh而是直接通过Web控制台进入终端,当使用vim编辑器时会无法跳转,所以必须通过ssh进入Ubuntu容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
apt update && apt install -y openssh-server
# 备份ssh配置
mv /etc/ssh/sshd_config /etc/ssh/sshd_config.default
# 创建ssh配置
echo "Include /etc/ssh/sshd_config.d/*.conf" > /etc/ssh/sshd_config
echo "Port 22" >> /etc/ssh/sshd_config
echo "ListenAddress 0.0.0.0" >> /etc/ssh/sshd_config
echo "ListenAddress ::" >> /etc/ssh/sshd_config
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo "ChallengeResponseAuthentication no" >> /etc/ssh/sshd_config
echo "UsePAM yes" >> /etc/ssh/sshd_config
echo "X11Forwarding yes" >> /etc/ssh/sshd_config
echo "PrintMotd no" >> /etc/ssh/sshd_config
echo "AcceptEnv LANG LC_*" >> /etc/ssh/sshd_config
echo "Subsystem sftp /usr/lib/openssh/sftp-server" >> /etc/ssh/sshd_config

开启网卡的混杂模式(混淆模式)

  • Docker容器正常情况下不能和宿主机在相同的网段,但是如果配置双路由最好是在同一网段,所以必须通过开启网卡的混杂模式(混淆模式)来创建macvlan
1
ip link set lan1 promisc on
  • 由于不能通过ssh直接进入iKuai的shell,所以需要使用小技巧绕过

  • 通过ssh访问Ubuntu容器,进入挂载的iKuai系统内部目录,修改iKuai预装脚本文件

iKuai系统内部的/usr/ikuai/script/目录下存放了所有iKuai的预装脚本,可以选择一个无害的脚本就行修改,通过Web管理平台间接执行脚本,经测试,iKuai的Web管理平台在执行脚本时,使用的是root用户
我这里选择备份脚本进行修改,在Web页面点击备份按钮就能执行脚本中的shell代码

/media/:挂载的iKuai系统根目录

1
vim /media/usr/ikuai/script/backup.sh
  • backup.sh文件的119行处新加一条命令,开启lan1的混杂模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#导出当前配置
create_tmpfile()
{
ip link set lan1 promisc on # 开启lan1网卡的混杂模式
local KEY=""
if [ ! -f "$IK_DIR_CONF" ];then
cd /etc/mnt/
local filename="$BACKUP_TMPFILE_NAME"
rm -f $IK_DIR_EXPORT/$filename
if tar -zcf $IK_DIR_EXPORT/$filename.tmp ikuai >/dev/null 2>&1 ;then
openssl aes-128-cbc -in $IK_DIR_EXPORT/$filename.tmp -out $IK_DIR_EXPORT/$filename.tmp.ssl -k $KEY >/dev/null 2>&1
mv $IK_DIR_EXPORT/$filename.tmp.ssl $IK_DIR_EXPORT/$filename
rm -f $IK_DIR_EXPORT/$filename.tmp
return 0
else
Autoiecho backup write_disk_fail
return 1
fi
else
Autoiecho backup already_is_default
return 1
fi
}
  • 在Web管理页面,调用能执行自定义命令

我这里选择到处当前配置功能来执行命令,实现开启网卡混杂模式

通过混杂模式创建macvlan

--subnet=:设置和宿主机相同的网段
--gateway=:设置和宿主机相同的网段的网关
parent:设置已经设置为混杂模式的网卡
doc_macvlan:docker网络名称

1
docker network create -d macvlan --subnet=192.168.200.0/24 --gateway=192.168.200.1 -o parent=lan1 doc_macvlan

通过Docker运行OpenWRT容器

1
docker run --restart always --name openwrt -d --network doc_macvlan --privileged sulinggg/openwrt:x86_64 /sbin/init

设置OpenWRT的网络

  • 通过Web控制台修改网卡配置

  • 修改静态IP地址和网关
1
vim /etc/config/network

  • 重启网卡
1
/etc/init.d/network restart

设置OpenWRT网络接口作为旁路由

  • 访问OpenWRT的Web管理页面

用户名:root
密码:password

  • 设置OpenWRT的IP地址和网关的IP地址,网关的IP地址指向iKuai,勾选忽略此接口来禁用OpenWRT的DHCP服务

完成

参考文献

哔哩哔哩——小黑智能