前言
最近一直想在家里弄个服务器,苦于(贫穷)没有想好能用来做哪些事情,经过一番调研下来,发现有个叫做“软路由”的新名词,于是就研究了一下。经过这几天的一番折腾大概知道这玩意儿应该怎么玩了,写个教程记录一下。
正巧最近是618时间,可能会趁此机会淘一些E3、E5之类的处理器,搭配一个小主板,自己组一个小机器装软路由来主路由。
安装虚拟机
准备一台Ubuntu系统虚拟机,我使用的操作系统版本是Ubuntu 20.04 LTS。
安装教程网上很多,自行搜索。
注意:
- 分配尽量多的CPU,后期可降低。
- 分配40G左右磁盘。
- 记住设置的用户名和密码。
- 最好有一个能够科学冲浪的工具。
环境初始化
进入虚拟机之后,出现登录界面,看到的是你刚刚设置的用户名的名称,然后输入密码进行登录。
我这里的用户名是huan
。
修改root密码
sudo passwd root
需要输入两次相同的密码。
环境准备
系统更新
sudo apt-get update -y
安装工具
sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync net-tools
开启ssh登录
Ubuntu默认没有开启ssh服务,需要手动安装
sudo apt-get install openssh-server -y
查看IP
ifconfig
记录下IP地址并使用xshell等工具连接,如何查看IP及使用xshell工具,请自行搜索。
编译准备
源码拉取
cd /opt
sudo git clone https://github.com/coolsnowwolf/lede
使用sudo命令创建、下载的文件,所属用户和组都属于root,编译openwrt过程中,禁止使用root用户来操作。因此需要将文件目录所属用户和所属组切换为非root权限用户(我这里所属用户和组都是huan)
sudo chown -R huan:huan /opt/lede/
组件安装
cd /opt/lede/
./scripts/feeds update -a
./scripts/feeds install -a
配置
make menuconfig
会弹出来如下设置页面
这里是选择在虚拟机跑lede,所以进入Target System,移动光标到x86,按键盘上的Y选中。如果后期要将lede安装到其他平台,就需要选择对应的目标系统。
LuCI
LuCI相当于是lede管理工具,包括主题,插件等。
根据需求,选择相应的主题和插件,如果刚开始不太了解,可以先跳过这一步的配置,后期熟悉之后就可以按需添加。
配置好之后,保存,回到Terminal终端。
下载依赖
make -j$(($(nproc) + 1)) download
$(($(nproc) + 1))
意思是使用CPU核数+1个线程来运行。
开始编译
make -j$(($(nproc) + 1))
等待编译,最好有科学上学工具,8核处理器整个编译过程下来大概需要2个多小时。
编译完成
编译完成之后,会将编译好的文件保存在bin/targets/x86/64
目录下
因为之前选的Target System是x86,因此会在targets目录下生成x86平台的固件。如果选择其他平台,则会在bin/targets目录生成对应平台的目录。
查看目录
可以看到这里已经生成了x86-64的文件,具体每一种文件代表什么含义,请参考这篇文章openwrt攻略(正确用法)。
这里我选择的是openwrt-x86-64-generic-ext4-combined.vmdk
。
如果你的目录下没有这个vmdk后缀的文件,但是肯定会有img.gz
后缀的文件,在/home/huan
目录(家目录)创建lede
目录,将img.gz
拷贝到/home/huan/lede
目录下方便后续使用。
mkdir /home/huan/lede
家目录是创建用户时根据不同用户名,在/home目录下生成对应用户名的目录,该用户对该目录拥有增删改查的权限,而不需要sudo等命令。
cp /opt/lede/bin/targets/x86/64/openwrt-x86-64-generic-ext4-combined.img.gz /home/huan/lede
解压并转换成vmdk文件。
gunzip openwrt-x86-64-generic-ext4-combined.img.gz
qemu-img convert -f raw -O vmdk openwrt-x86-64-generic-ext4-combined.img openwrt-x86-64-generic-ext4-combined.vmdk
vmdk是VMware可识别的虚拟机文件,可以直接加载并使用。
下载文件
打开新的终端页面,找到一个本地目录,进入该目录后,使用命令进行远程下载。比如在D盘:
[C:~]$ d:
[D:]$ scp huan@10.4.7.128:/home/huan/lede/openwrt-x86-64-generic-ext4-combined.vmdk .
如果提示输入yes/no,那么输入yes,然后输入密码。
至此,编译相关工作已完成。
安装Openwrt
到这里,已经很简单了。
创建虚拟机
打开VMware,新建虚拟机,没有特别说明就是无脑下一步。
- 安装客户机操作系统这里选择稍后安装操作系统。
- 选择客户机操作系统这里选择 其他 Linux 5.X或更高版本。
- 虚拟机名称,选择安装目录,根据自己喜好设置。
- 网络类型选择 使用桥接网络。
最重要的一步,选择磁盘这里
- 选择使用现有虚拟磁盘,找到下载到D盘下的vmdk文件。
启动虚拟机
然后虚拟机创建完成,可以直接启动。
如果你看到到了IPv6那里就不动了,可以试试按一下回车,可以感受一下,什么是惊喜。。。
配置IP
设置lan口IP地址为自动获取(DHCP)
uci set network.lan.proto=dhcp
保存设置
uci commit network
uci是类似于centos中的systemctl或Ubuntu的service命令。
重启网络服务,使配置生效
/etc/init.d/network restart
查看IP,这里如果用ifconfig
可能看不全IP信息,可以尝试使用其他命令
ip addr
嗯,是那个熟悉的味道。
修改密码
passwd root
输入两次,回车。
服务查看
在浏览器中输入IP地址,进入页面。
OK, Enjoy yourself.
友情提示
可以自行在网上找到别人编译好的固件,跳过编译环节,不过可能存在后门等风险,请自行甄别。