分类目录归档:技术笔记

OpenWrt/LEDE编译选项中没有.vhdx格式解决办法

不知道从哪个版本开始,Lean的Openwrt编译target选项中删除了Hyper-V使用的.vhdx格式。这里提供一个解决办法。在编译完成后,会得到一个.img的raw镜像文件,使用qemu-img命令将这个文件转换为.vhdx格式即可。命令如下:

qemu-img convert -f raw -O vhdx openwrt-x86-64-generic-squashfs-combined.img openwrt-x86-64-generic-squashfs-combined.vhdx

这个转换几乎不耗费时间,很方便。

Deluge安装及配置(配置路径至NFS远程目录)

本文将说明如何在Ubuntu 18.04系统中安装Deluge服务(WebUI),以及将挂载的远程NFS目录设置为下载目录。

Deluge安装及配置

//确保系统是最新
sudo apt-get update
sudo apt-get upgrade

//添加源以及安装Deluge
//Deluge有三个包:deluge为桌面模式,deluged为daemon模式,deluge-webui是网页界面,这里使用daemon模式
sudo add-apt-repository ppa:deluge-team/ppa 
sudo apt install deluged deluge-webui

//新建deluge用户和deluge用户组,这里建的是无密码的系统用户
sudo adduser --system --group deluge

//将当前用户(your-username)添加至deluge组,这样用当前用户也能操作deluge下载的文件
sudo gpasswd -a your-username deluge

接下来,需要设置deluged和deluge-web服务

新建deluged.service服务

sudo vim /etc/systemd/system/deluged.service

写入以下内容

[Unit]
Description=Deluge Bittorrent Client Daemon
After=network-online.target

[Service]
Type=simple
User=deluge
Group=deluge
UMask=007

ExecStart=/usr/bin/deluged -d

Restart=on-failure

# Configures the time to wait before service is stopped forcefully.
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target

启动服务并设置为开机启动

systemctl start deluged
systemctl enable deluged
//查看服务是否为active
systemctl status deluged

新建deluge-web.service服务

sudo vim /etc/systemd/system/deluge-web.service

写入以下内容

[Unit]
Description=Deluge Bittorrent Client Web Interface
After=network-online.target

[Service]
Type=simple

User=deluge
Group=deluge
UMask=027

ExecStart=/usr/bin/deluge-web

Restart=on-failure

[Install]
WantedBy=multi-user.target

启动服务并设置为开机启动

systemctl start deluge-web
systemctl enable deluge-web
//查看服务是否为active
systemctl status deluge-web

完成后,在浏览器中访问8112端口即可查看服务

http://your-server-ip:8112

如果无法访问,检查防火墙状态

sudo systemctl stop ufw
sudo systemctl disable ufw

进入界面需要输入密码,默认的密码为:deluge,登录后可以修改。

输入完成密码后,弹出Connection Manager对话框,选择当前服务器,点击Start Daemon,然后点击右下角的Connect连接至Deluge服务器。

Deluge下载路径配置及远程NFS挂载

首先,安装NFS

sudo apt-get install nfs-common

新建本地目录用于挂载

sudo mkdir /mnt/share

挂载远程NFS目录(假设远程NFS服务器IP为:NFS_IP,远程NFS共享目录路径为:/mnt/nas/share)

sudo mount -t nfs NFS_IP:/mnt/nas/share /mnt/share

在/mnt/share下新建目录以备Deluge使用

//新建Deluge下载的主目录
sudo mkdir /mnt/share/PTDownload
//存放下载完成的媒体文件
sudo mkdir /mnt/share/PTDownload/Media
//存放下载完成的种子文件
sudo mkdir /mnt/share/PTDownload/Torrent
//存放正在下载的文件
sudo mkdir /mnt/share/PTDownload/Temp

在网页上,修改Preference中的Downloads中的下载路径至上面新建的目录。

备注:如果在新建目录和写入文件时遇到了权限错误,请在NFS端修改相关权限,FreeNAS可以参考此文:FreeNAS中NFS共享挂载后权限不足问题解决办法

FreeNAS中Transmission插件的挂载点设置

在司波图的视频中,FreeNAS运行Transmission时,只挂载了Media文件夹,如果正常使用当然没有问题,但如果出现需要恢复Torrent文件,或者删除Torrent文件时,将无法找回。极端情况是,如果FreeNAS系统崩溃或者Transmission插件崩溃,Media文件得到了保留,但Torrent文件将全部丢失。所以,这里建议在以上基础上,额外映射:

FREENAS中的文件夹(源)····························Transmission Jail中的文件夹(目标)

/mnt/nas/share/Transmission/Media·················/mnt/nas/iocage/jails/transmission/root/media //下载完成的文件所在目录
/mnt/nas/share/Transmission/Torrents··············/mnt/nas/iocage/jails/transmission/root/usr/local/etc/transmission/home/torrents //种子文件所在目录
/mnt/nas/share/Transmission/Temp··················/mnt/nas/iocage/jails/transmission/root/usr/local/etc/transmission/home/Downloads //下载中的文件所在目录

 

 

OpenWrt编译生成文件说明和使用方法

在手动编译OpenWrt后,会生成以下文件,分别对应不同用途

openwrt-x86-64-combined-squashfs.img
openwrt-x86-64-combined-squashfs.qcow2
openwrt-x86-64-combined-squashfs.vhdx
openwrt-x86-64-combined-squashfs.vmdk

img文件:raw镜像文件,即原始镜像内容,可以通过镜像转换软件(例如StarWind V2V Converter)转换为任意镜像/虚拟磁盘。

qcow2:Virtual Box使用的磁盘软件

vhdx:Hyper-V使用的磁盘文件,创建Hyper-V虚拟机时,无需新建磁盘,使用此文件作为vdisk即可

vmdk:ESXi使用的磁盘文件,创建ESXi虚拟机时,无需新建磁盘,使用此文件作为vdisk即可。注意,添加时需选择IDE控制器,不能选择SCSI控制器,如下图

SuperMicro X11SCV-Q主板安装ESXi

超微X11SCV-Q主板安装ESXi时,由BIOS引导是无法进入安装界面,安装后也无法通过BIOS启动的。所以,必须保证:

1、安装盘使用EFI模式刻录,不能选择BIOS引导

2、在主板BIOS设置中(开机按DEL键进入),将U盘Legacy支持设为Disable,将Video、PCI模式从Legacy改为EFI,在BOOT启动顺序处,从DUAL模式修改为UEFI,并将UEFI USB KEY: XXXX这个启动项设置为首选。

最后附上用Rufus烧录镜像到U盘的设置:

如上图示:1、格式化使用GPT格式,不用MBR模式;2、硬盘格式选择NTFS,不用FAT32。

Twenty Twelve主题增加顶部搜索框

使用这个主题很多年了,之前有在顶部增加一个搜索框,由于主题自动更新掉了,这里补充记录一下。

首先进入主题代码编辑页面,修改header.php这个文件。找到</hgroup>这个结束标签,在后面添加上搜索框调用代码:

<div class="header-search"><?php get_search_form(); ?></div>

这时候,打开首页,就能看见顶部搜索框了,但是并不美观。接下来在自定义CSS中进行美化

.header-search {
	float: right;
	margin-top: -50px;
	margin-right:30px;
}

#searchsubmit {
	font-size: 13px!important;
	height: 29px;
	line-height: 18px!important;
	background-color: white;
	background-image:none;
	padding:5px 10px;
	box-shadow:none !important;
}

#searchsubmit:hover {
	color:#404040;
}

@media (max-width: 650px) {
	.header-search {
		margin-top:10px;
		text-align:center;
		float:none;
		margin-right:0px;
	}
	.main-navigation  {
		clear:both;
	}
}

#submit {
	font-size: 13px!important;
	height: 29px;
	line-height: 18px!important;
	background-color: white;
	background-image:none;
	padding:5px 10px;
	box-shadow:none !important;
}

#submit:hover {
	color:#404040;
}

#submit:submit {
	color:#404040;
	box-shadow:none !important;
}

button {
	font-size: 13px!important;
	height: 29px;
	line-height: 18px!important;
	background-color: white !important;
	background-image:none !important;
	padding:5px 10px;
	box-shadow:none !important;
}

botton:hover {
	color:#404040;
}

.menu-toggle.toggled-on {
	color:#404040;
	background-color:white !important;
	background-image:none !important;
	box-shadow:none !important;
	border:1px solid #ccc;
}

有一点需要注意,主题更新后,加在header.php中的代码会被更新掉,需要手动加回来,或者也可以建立一个子主题保存更改。

 

OpenWrt使用阿里云DDNS服务动态域名解析

个人环境:

主路由:192.168.10.1 (主路由pppoe拨号)
OpenWrt旁路由:192.168.10.2  (网关设为主路由192.168.10.1)

现在需要通过OpenWrt上的DDNS服务进行动态域名解析,由于是旁路由,所以无法直接从WAN口获得公网IP。首先需要安装Luci-app-ddns这个插件,进入插件页面。

主机名填写顶级域名,域名填写需要DDNS解析到的二级域名,如果想直接使用顶级域名就写成“@zivers.com”这种形式。用户名和密码填写从阿里云获得的AccessKey密钥对

切换到高级设置标签,由于OpenWrt不是用作主路由拨号,无法直接通过网口获取到外网IP,所以需要选择用URL方式获取。默认提供了一个监测URL的网址,可以直接使用,如果不用这个,也可以使用其他的,比如:http://ddns.oray.com/checkip 或者 http://www.3322.net/dyndns/getip 

最后,如果开启了Shadowsocks服务的话,记得把URL检测的网站加入到白名单中,否则检测到的外网IP将会是代理服务器的地址

 

Hyper-V部署OpenWrt旁路网关(编译Lean版)

准备工作

1、已经编译好的OpenWrt镜像文件。由于是用于Hyper-V部署,所以编译时选择保存为.vhdx后缀的镜像文件,具体如何编译,参见源码地址:https://github.com/coolsnowwolf/lede。镜像文件名类似为: openwrt-x86-64-combined-squashfs.vhdx

2、一个可用的网口。我的主板上有两个千兆网口,一个是Intel I210,另一个是Intel I219-LM。I210我用来做为Hyper-V服务器的网络端口,而I219-LM则是我准备给OpenWrt专用的。

图片中,I210和I210创建的vEthernet是用与Hyper-V的虚拟交换机,I219-LM目前空闲。其他两个X540为万兆网口,与本文无关。

创建虚拟交换机

在Hyper-V管理器中,选择右侧的虚拟交换机管理器,在弹出的窗口中,新建外部虚拟交换机

选择之前说的用于OpenWrt的网口,这里用的是I219-LM,并取消下面的允许管理操作系统共享此网络适配器选项。取消此选项后,在系统的网络管理页面就不会看到I219-LM的vEthernet,只是单纯显示I219-LM。

由于我机器上的网口有两个,所以可以给OpenWrt专用一个网口,如果主板上只有一个网口,那配置起来会麻烦些,需要让Hyper-V和OpenWrt共用这一个网口,步骤较为复杂,这里不赘述。

创建OpenWrt虚拟机

创建虚拟机的步骤和一般创建步骤相同,这里只说明几个地方

1、创建时选择第一代虚拟机,兼容性和稳定性比较好

2、配置网络时,选择刚才创建的OpenWrt交换机

3、硬盘选择之前准备好的.vhdx文件

完成后点击完成,先不要启动虚拟机。在Hyper-V管理器界面,可以修改虚拟机处理器数量,我这里改成了两个,增加性能。另外,需要在网络适配器的高级选项中,勾选开启MAC地址欺骗选项。

保存后,启动虚拟机。

OpenWrt配置

进入虚拟机,默认是root用户登录,且无密码,所以可以直接查看和修改系统文件。主要修改的文件是etc/config/network这个网络配置文件

默认的配置OpenWrt使用的IP地址为192.168.1.1,那么就会有以下几个情况

1、OpenWrt就是用来当主路由的,且192.168.1.1不会和运营商的路由器网关地址相同,那就保持不变即可。直接访问192.168.1.1即可访问OpenWrt管理页面。

2、OpenWrt是用来当旁路网关的,主路由网关地址为192.168.1.1。这种情况下,OpenWrt和主路由网关冲突,需要修改OpenWrt的IP为192.168.1.2。之后通过192.168.1.2来访问OpenWrt管理页面。

3、OpenWrt是用来当旁路网关的,主路由网关地址为192.168.2.1。这种情况下,OpenWrt和主路由网关不冲突,但由于不在一个网段,OpenWrt无法通过主路由连接网络,所以也需要修改OpenWrt的IP,可以改为192.168.2.2。

具体修改IP就是直接修改上面那个文件,然后重启网络,执行

service network restart

OpenWrt设置

完成上述步骤之后,登录OpenWrt。下面以上文的情况3为例(即主路由为192.168.2.1,OpenWrt为192.168.2.2),登录用户名为root,默认密码password。

登陆后,在“网络->诊断页面”可以测试网络连接情况,目前是无法上网的,如下图所示。

所以,需要修改一下端口设置,进入“网络->接口”页面,点击“修改”按钮。修改其中的“IPv4网关”地址为主路由网关地址(192.168.2.1),修改“IPv4广播”地址,增加自定义的DNS服务器,点击“保存并应用”。

修改完成后,再进行网络测试,可以联通了。

至此,OpenWrt旁路网关配置完成。

使用OpenWrt旁路网关上网

如果需要使用OpenWrt上网,那只需要将设备的默认网关设置成OpenWrt地址即可,如上设置,则为192.168.2.2

CentOS 7部署V2Ray服务(更新V2fly)

@20201012 由于V2Ray开发团队内部问题,V2Ray目前由V2fly维护,安装方法有所更新,现将文章更新如下:

1、安装V2Ray服务端

bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)

执行完后得到以下内容

info: bsdtar is installed.
info: Extract the V2Ray package to /tmp/tmp.fnu3ajK2Bz and prepare it for installation.
rm: cannot remove '/etc/systemd/system/v2ray.service.d/10-donot_touch_multi_conf.conf': No such file or directory
rm: cannot remove '/etc/systemd/system/v2ray@.service.d/10-donot_touch_multi_conf.conf': No such file or directory
info: Systemd service files have been installed successfully!
warning: The following are the actual parameters for the v2ray service startup.
warning: Please make sure the configuration file path is correctly set.
# /etc/systemd/system/v2ray.service
[Unit]
Description=V2Ray Service
Documentation=https://www.v2fly.org/
After=network.target nss-lookup.target

[Service]
User=nobody
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
ExecStart=/usr/local/bin/v2ray -config /usr/local/etc/v2ray/config.json
Restart=on-failure
RestartPreventExitStatus=23

[Install]
WantedBy=multi-user.target

# /etc/systemd/system/v2ray.service.d/10-donot_touch_single_conf.conf
# In case you have a good reason to do so, duplicate this file in the same directory and make your customizes there.
# Or all changes you made will be lost! # Refer: https://www.freedesktop.org/software/systemd/man/systemd.unit.html
[Service]
ExecStart=
ExecStart=/usr/local/bin/v2ray -config /usr/local/etc/v2ray/config.json
installed: /usr/local/bin/v2ray
installed: /usr/local/bin/v2ctl
installed: /usr/local/share/v2ray/geoip.dat
installed: /usr/local/share/v2ray/geosite.dat
installed: /usr/local/etc/v2ray/config.json
installed: /var/log/v2ray/
installed: /var/log/v2ray/access.log
installed: /var/log/v2ray/error.log
installed: /etc/systemd/system/v2ray.service
installed: /etc/systemd/system/v2ray@.service
removed: /tmp/tmp.fnu3ajK2Bz
info: V2Ray v4.31.0 is installed.
You may need to execute a command to remove dependent software: dnf remove curl unzip
Please execute the command: systemctl enable v2ray; systemctl start v2ray

新的安装方式相比之前少做了两件事:1、没有配置config文件,2、没有添加系统服务。下面补上

配置文件路径为/usr/local/etc/v2ray/config.json,配置文件参考如下:

{
    "log": {
        "loglevel": "warning"
    },
    "routing": {
        "domainStrategy": "AsIs",
        "rules": [
            {
                "ip": [
                    "geoip:private"
                ],
                "outboundTag": "blocked",
                "type": "field"
            }
        ]
    },
    "inbounds": [
        {
            "port": 1234,  //此处填写自定义端口
            "protocol": "vmess",
            "settings": {
                "clients": [
                    {
                        "id": "", //此处填写UUID
                        "alterId": 4
                    }
                ]
            }
        }
    ],
    "outbounds": [
        {
            "protocol": "freedom"
        },
        {
            "protocol": "blackhole",
            "tag": "blocked"
        }
    ]
}

在安装的时候,提示信息里给了添加系统服务的模板,直接复制即可。创建/etc/systemd/system/v2ray.service文件,内容如下:

# /etc/systemd/system/v2ray.service
[Unit]
Description=V2Ray Service
Documentation=https://www.v2fly.org/
After=network.target nss-lookup.target

[Service]
User=nobody
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
ExecStart=/usr/local/bin/v2ray -config /usr/local/etc/v2ray/config.json
Restart=on-failure
RestartPreventExitStatus=23

[Install]
WantedBy=multi-user.target

启动服务

systemctl start v2ray

 

 

 

以下为原文(20190929):

———————-

由于Shadowsocks在国内被大范围识别封锁,所以转向V2Ray。虽然V2Ray作为一个平台,比起Shadowsocks复杂许多,但是安装部署其实已经集成的非常好。以下是部署步骤:

1、安装V2Ray服务端

bash <(curl -L -s https://install.direct/go.sh)

执行完后得到以下内容

Installing V2Ray v4.20.0 on x86_64
Downloading V2Ray: https://github.com/v2ray/v2ray-core/releases/download/v4.20.0/v2ray-linux-64.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   608    0   608    0     0   1647      0 --:--:-- --:--:-- --:--:--  1652
100 11.3M  100 11.3M    0     0  7368k      0  0:00:01  0:00:01 --:--:-- 11.5M
Updating software repo
Installing unzip
warning: /var/cache/yum/x86_64/7/base/packages/unzip-6.0-20.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for unzip-6.0-20.el7.x86_64.rpm is not installed
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-6.1810.2.el7.centos.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Extracting V2Ray package to /tmp/v2ray.
Archive:  /tmp/v2ray/v2ray.zip
  inflating: /tmp/v2ray/config.json  
   creating: /tmp/v2ray/doc/
  inflating: /tmp/v2ray/doc/readme.md  
  inflating: /tmp/v2ray/geoip.dat    
  inflating: /tmp/v2ray/geosite.dat  
   creating: /tmp/v2ray/systemd/
  inflating: /tmp/v2ray/systemd/v2ray.service  
   creating: /tmp/v2ray/systemv/
  inflating: /tmp/v2ray/systemv/v2ray  
  inflating: /tmp/v2ray/v2ctl        
 extracting: /tmp/v2ray/v2ctl.sig    
  inflating: /tmp/v2ray/v2ray        
 extracting: /tmp/v2ray/v2ray.sig    
  inflating: /tmp/v2ray/vpoint_socks_vmess.json  
  inflating: /tmp/v2ray/vpoint_vmess_freedom.json  
PORT:38731
UUID:c877a768-946e-4bea-93ff-d44a5a5b3915
Created symlink from /etc/systemd/system/multi-user.target.wants/v2ray.service to /etc/systemd/system/v2ray.service.
V2Ray v4.20.0 is installed.

以上信息中,有两项需要记下:UUIDPORT

启动V2Ray服务

systemctl start v2ray
systemctl enable v2ray

由于需要端口通讯,建议将端口加入防火墙白名单。这里只是示范,所以关闭防火墙

iptables -F
systemctl stop firewalld

2、安装Windows客户端

Windows系统客户端可以使用V2RayN,首先去Github上下载最新的release:

将压缩包解压,执行v2rayN.exe即可启动客户端。

启动之后,选择服务器->添加[VMess]服务器,按之前在服务器上得到的UUIDPORT填写

参考:

Project V Official Site: V2Ray