这篇文章上次修改于 706 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
1、起因
因最近树莓派疯狂涨价,经群友推荐,把发霉派闲鱼出掉了,换了一台n5105的软路由,因此开始折腾起routeros和openwrt,记录下折腾完的配置
2、折腾
软路由配置为N5105 4G 120G,后面又加了4G内存,升级到8G
PVE安装
- 先安装proxmox 作为基础环境 pve下载地址
- 通过rufus写入u盘
- 插到软路由主机上,配置从U盘启动
- 按照指导一步一步完成安装
去除pve登录时无有效订阅的提示
修改文件/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
找到:title: gettext(‘No valid subscription’)
将
if (res === null || res === undefined || !res || res
.data.status.toLowerCase() !== ‘active’) {改为
if(false)即可
更换pve源
mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak
sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list
source /etc/os-release
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve $VERSION_CODENAME pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
apt update
更换ct源
cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back
sed -i 's|http://download.proxmox.com|https://mirrors.tuna.tsinghua.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
systemctl restart pvedaemon.service
更换ceph源
cp /usr/share/perl5/PVE/CLI/pveceph.pm /usr/share/perl5/PVE/CLI/pveceph.pm_back
sed -i 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/CLI/pveceph.pm
systemctl restart pvedaemon.service
PVE网络配置:
网卡直通
vim /etc/default/grub
找到
GRUB_CMDLINE_LINUX_DEFAULT="quiet"修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"然后
update-grub reboot增加模块
vim /etc/modules增加
vfio vfio_iommu_type1 vfio_pci vfio_virqfd查找网卡ID:
lspci |grep net
直通配置:
软路由上一共有4个网口,管理口网卡pve并未识别到,懒得管了
我配置了3张网卡直通到routeros虚拟机里
一张网卡配置桥接网卡vmbr0,设置静态ip地址,通过pve添加到routeros里
防止routeros挂掉后没有办法接入pve进行操作
RouterOS准备
选择CLoud Hosted Router,我选择的时7.8stable版本,选择Raw disk image那一行,下载
然后上传到pve里,记下上传的路径,我的路径为
/var/lib/vz/template/iso/chr-7.8.img
- 创建虚拟机
选择创建虚拟机 → 操作系统选择不使用任何介质 → 系统默认 → 磁盘选1G,后面要删掉 → CPU类别选择host → 内存我给了2G → 网络只选择桥接的vmbr0 → 最后确认
选择新创建的虚拟机 假设id为100
点击硬件,点击刚才的硬盘,点击分离,点击移除,删除磁盘
点击proxmox进入shell选单,执行命令
qm importdisk 100 /var/lib/vz/template/iso/chr-7.8.img local-lvm
将chr-7.8.img 导入到新的虚拟机里:
再次点击新创建的虚拟机,选择硬件,点击未使用的磁盘0,点击编辑,编辑确定,将硬盘导入
添加网卡直通,lspci |grep net查看网卡id
root@proxmox:~# lspci |grep net
02:00.0 Ethernet controller: Intel Corporation Device 125c (rev 04)
03:00.0 Ethernet controller: Intel Corporation Device 125c (rev 04)
04:00.0 Ethernet controller: Intel Corporation Device 125c (rev 04)
05:00.0 Ethernet controller: Intel Corporation Device 125c (rev 04)
root@proxmox:~#
点击添加pci设备,根据网卡id选择对应的pci设备
再点击选项,配置引导顺序,将刚加入的磁盘移动到第一位,点击确定
然后启动虚拟机
RouterOS配置
刚装好的routeros默认用户名:admin 默认密码:空
查看网络接口,设置ip地址
/interface/print
0 R ether1 ether 1500
1 RS ether2 ether 1500
2 RS ether3 ether 1500
3 RS ether4 ether 1500
/ip/address/add
10.88.89.1
ether1
配置好后就可以通过winbox连接routeros了,下载winbox
禁止不必要服务
我只保留了www网络和8291 winbox端口,另外还可以限制address到内网,禁止公网访问
/ip/service/print
Flags: X, I - INVALID
Columns: NAME, PORT, ADDRESS, CERTIFICATE, VRF
# NAME PORT ADDRESS CERTIFICATE VRF
0 X telnet 23 main
1 X ftp 21
2 www 80 main
3 X ssh 53332 main
4 X www-ssl 443 none main
5 X api 8728 main
6 winbox 8291 main
7 X api-ssl 8729 none main
配置防火墙
/ip firewall filter
add action=accept chain=input comment="allow established" connection-state=established,related,untracked in-interface-list=WAN
add action=accept chain=input comment="allow lan input" in-interface-list=LAN
add action=drop chain=input comment="drop all" in-interface-list=WAN
/ip firewall nat
add action=masquerade chain=srcnat out-interface-list=WAN
配置上网
/interface pppoe-client
add add-default-route=yes disabled=no interface=ether1 name=pppoe-out1 use-peer-dns=yes user=xxxxxx
配置接口list
/interface list
add name=WAN
add name=LAN
/interface list member
add interface=pppoe-out1 list=WAN
add interface=bridge1 list=LAN
配置DNS,导入证书
/tool fetch url="https://secure.globalsign.net/cacert/Root-R5.crt"
/ip dns
set allow-remote-requests=yes servers=223.5.5.5 use-doh-server=https://223.5.5.5/dns-query verify-doh-cert=yes
配置桥接
/interface bridge
add name=bridge1
/interface bridge port
add bridge=bridge1 interface=ether2
add bridge=bridge1 interface=ether3
add bridge=bridge1 interface=ether4
配置DHCP
/ip dhcp-server
add address-pool=dhcp interface=bridge1 name=dhcp1
/ip dhcp-server network
add address=10.88.89.0/24 dns-server=10.88.89.1 gateway=10.88.89.1 netmask=24
打电话找电信要公网ip,并将光猫改成桥接,将光猫网线插入ether1中
配置DDNS
RID查询:
curl -X GET "https://api.cloudflare.com/client/v4/zones/[zoneid]/dns_records?name=[域名]" -H "X-Auth-Email:[email]" -H "X-Auth-Key:[apikey]" -H "Content-Type: application/json"|jq .
cloudflare托管域名配置ddns脚本:
{
:local WANInterface "pppoe-out1"
:local DDNSDomain "ddns域名"
:local APIToken "token"
:local ZoneID "zoneid"
:local RID "rid"
:local ResolvedIP [:resolve $DDNSDomain]
:local LocalIP [/ip address get [find interface=$WANInterface] address]
:set LocalIP [:pick $LocalIP 0 [:find $LocalIP "/"]]
:set LocalIP [:toip $LocalIP]
:log info "[DDNS] DDNS=$ResolvedIP Local=$LocalIP"
:if ($ResolvedIP != $LocalIP) do={
/tool fetch http-method=put mode=https url="https://api.cloudflare.com/client/v4/zones/$ZoneID/dns_records/$RID" http-header-field="Authorization: Bearer $APIToken,content-type:application/json" http-data="{\"type\":\"A\",\"name\":\"$DDNSDomain\",\"ttl\":\"60\",\"content\":\"$LocalIP\"}" output=none
:delay 2
/ip dns cache flush;
:log info "[DDNS] Done."
}
}
将电信送的路由器tp-link改成桥模式,插入剩下的网口之一,然后剩下的一个口再插个交换机,接入电脑等有线设备,即可大功告成
3、其他
一开始我将4个网口全部桥接,然后通过pve虚拟化到ros中,再在ros里配置了网卡桥接,再通过桥接网卡连接电信,然后配置防火墙等,不知道是哪一步操作出了问题,导致无法上网,dhcp也失败,家里直接断网,紧急恢复为tplink做主路由,然后彻底删除该ros,重新折腾一次,采用3直通方案,目前还很稳定,暂时没有出问题
之后如果有问题再记录
另外还有wireguard和BGP的配置,不过没有什么记录的必要