作者归档:CD

在Chromebook上使用SSH 密钥登录VPS

方法如下:

生成SSH 密钥对

下载并使用Windosw版的 PuTTYgen生成RSA格式的密钥对。

转换私钥(private key)

导入ppk格式的私钥,在PuTTYgen的菜单栏选择Conversions,选择Export OpenSSH key 或者Export OpenSSH key(force new format)。获得pem格式的私钥,文件名随意。

注:两种格式的pem密钥区别在这里。两种都可以选。想新一点就第二种。

上传公钥(public key)到VPS

教程很多,不细说了。

使用Secure Shell 连接VPS

打开Chromebook上的SSH工具Secure Shell App,填入用户名,ip地址和端口,点击Identity:后面的Import…,选择刚才转换好的PEM格式的私钥,无需导入公钥(public key)。登录就可以了。

如果想删除私钥,方法是:选中要删除的私钥,同时按“搜索键+backspace”。

在Oracle Cloud免费VPS CentOS 7 系统上开启SELinux和防火墙(firewalld和iptables)情况下安装Web服务器Caddy

参考:

https://src.fedoraproject.org/rpms/caddy/blob/master/f/caddy.spec
https://github.com/caddyserver/caddy/tree/master/dist/init/linux-systemd

本文的亮点在于开启SELinux、防火墙(Firewalld和iptables)情况下,配置caddy。 本文不限于Oracle Cloud云服务,同样适用于其他类似的情况下。

按照以上教程,默认路径为:

  • /usr/local/bin/caddy #caddy程序所在目录
  • /etc/caddy/Caddyfile #caddy配置文件所作目录
  • /etc/ssl/caddy #ssl证书所在目录
  • /var/www/ #网页所在目录

建立www-data用户

caddy服务默认使用www-data用户运行,因此需要建立该用户。教程中为建立用户组为33,但Oracle CentOS 7系统中GID 33被tape占用:

grep '33' /etc/group

使用GID 36建立www-data用户

sudo groupadd -g 36 www-data
sudo useradd \
  -g www-data --no-user-group \
  --home-dir /var/www --no-create-home \
  --shell /usr/sbin/nologin \
  --system --uid 36 www-data

下载并安装caddy

sudo mkdir ~/caddy && cd ~/caddy
sudo wget https://github.com/caddyserver/caddy/releases/download/v1.0.3/caddy_v1.0.3_linux_amd64.tar.gz
sudo tar xvf caddy_v1.0.3_linux_amd64.tar.gz
sudo cp caddy /usr/local/bin

sudo chown root:root /usr/local/bin/caddy

sudo chmod 755 /usr/local/bin/caddy

使caddy能监听443,80端口

sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy

安装systemd服务

sudo cp init/linux-systemd/caddy.service /etc/systemd/system/

sudo chown root:root /etc/systemd/system/caddy.service

sudo chmod 644 /etc/systemd/system/caddy.service

修改servicen内容

sudo vi /etc/systemd/system/caddy.service

需要修改为以下三行:

  1. ExecStart=/usr/local/bin/caddy -quic -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
  2. ReadWriteDirectories=/etc/ssl/caddy
  3. AmbientCapabilities=CAP_NET_BIND_SERVICE

说明:

第一行,加入-quic,使caddy开启QUIC协议;

第二行,默认为ReadWritePaths=/etc/ssl/caddy,此时启动caddy服务,会出现如下错误:[ERROR] Making new certificate manager: could not save user: mkdir /etc/ssl/caddy/acme: read-only file system。

第三行,注释掉AmbientCapabilities=CAP_NET_BIND_SERVICE前的#,不用注释应该页没问题。因前面已经setcap过了。

建立caddy配置文件和ssl相关文件夹

sudo mkdir /etc/caddy
sudo touch /etc/caddy/Caddyfile
sudo chown -R www-data:www-data /etc/caddy
sudo chmod 644 /etc/caddy/Caddyfile
sudo mkdir /etc/ssl/caddy
sudo chown www-data:www-data /etc/ssl/caddy
sudo chown -R root:www-data /etc/ssl/caddy
sudo chmod 0770 /etc/ssl/caddy

修改VPS系统内SELinux和防火墙相关设置

将caddy定义为httpd服务

sudo semanage fcontext -a -t httpd_exec_t /usr/local/bin/caddy
sudo restorecon /usr/local/bin/caddy

设置caddy配置文件和ssl相关文件夹SELinux权限

sudo semanage fcontext -a -t httpd_config_t /etc/caddy
sudo semanage fcontext -a -t httpd_config_t /etc/caddy/Caddyfile
sudo semanage fcontext -a -t httpd_sys_rw_content_t /etc/ssl/caddy
sudo restorecon -r /etc/caddy
sudo restorecon -r /etc/ssl/caddy

开启http和https服务,即开启80和443端口,默认为tcp

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https

允许ACME进行连接以获取证书

sudo setsebool -P httpd_can_network_connect 1

HTTP challenge 端口的SELinux权限

sudo semanage port -a -t http_port_t -p tcp 5033

开启QUIC,需开放udp端口

sudo semanage port --add --type http_port_t --proto udp 80
sudo semanage port --add --type http_port_t --proto udp 443

QUIC-firewalld设置

sudo firewall-cmd --zone=public --add-port=80/udp --permanent
sudo firewall-cmd --zone=public --add-port=443/udp --permanent

保存设置,重启防火墙,以使配置生效

sudo firewall-cmd --reload

在Oracle Cloud后台网页开放端口

进入“实例”,点击“实例信息”下的“虚拟云网络”右侧类似“VirtualCloudNetwork-2019****-****”的按钮并进入;

在“(根)区间中的子网”下,如果存在多个类似“公共子网 pbOp:***-**-1 ”的项目列表,就随便点进去一个

在“安全列表”下,点击并进入“Default Security List for VirtualCloudNetwork-2019****-****”。

编辑“入站规则”下“目的地端口范围”为22那条规则,或者参照这条规则新建也可以。
将“目的地端口范围”下的“22”改为“22,80,443,5033”,然后“保存更改”即可。 系统会自动根据添加的IP生成新的三条规则。

注意:每个端口或范围间隔需要英文逗号。

开启QUIC,需要开放80和443的UDP端口,参照刚才设置的80和433端口新建规则即可,注意在“IP 协议 ”下选择“UDP”。

web站点文件相关设置

建立web站点文件夹

sudo mkdir /var/www
sudo chown -R www-data:www-data /var/www
sudo chmod 555 /var/www
sudo mkdir -p /var/www/example.com

sudo chown -R www-data:www-data /var/www/example.com

sudo chmod -R 555 /var/www/example.com

设置网站文件夹SELinux权限

sudo restorecon -r /var/www

建立web测试页

sudo vi /var/www/example.com/index.html

写入如下内容

<h1>Hello world!</h1>

测试web页

修改Caddyfile,添加站点

sudo vi /etc/caddy/Caddyfile

添加如下内容:

example.com {
     root /var/www/example.com
}

启动caddy服务

sudo systemctl daemon-reload
sudo systemctl start caddy.service
systemctl status caddy

访问example.com,看是否能见到网站页面

如能成功访问,设置开机启动

sudo systemctl enable caddy.service

完毕。

Oracle Cloud免费VPS CentOS 7 系统防火墙(firewalld和iptables)的正确配置方法

不少人不会配置Oracle的防火墙,导致无法访问80或443端口。本文记录为Oracle Cloud的VPS CentOS 7系统正确配置防火墙的步骤,理论上适用于其他系统,如Debian等。

VPS系统的SELinux为开启状态

sestatus

Firewalld为开启状态

sudo firewall-cmd --state

Iptables为开启状态,查看iptables规则

sudo iptables -L -n

一些人的做法是彻底停用防火墙(firewalld),并清除iptables规则,如:

sudo systemctl stop firewalld

sudo systemctl disable firewalld
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F

但是端口仍然可能不能正常访问,同时我们都知道这肯定不是正确的解决方式。那正确的做法是什么呢?

正确的配置方法为:

  1. 登陆VPS的CentOS 7 系统,配置防火墙(firewalld),开放相关服务和端口;
  2. 登陆Oracle Cloud网页后台,进入实例,在“安全列表”中,修改“入站规则”;
  3. 不要手动修改iptables。

例,要建立一个小网站,需要开放80和443端口,步骤为:

第一步,登陆VPS的CentOS 7系统,修改防火墙设置,增加http和https服务,即开启80和443端口

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https

重启防火墙以生效

sudo firewall-cmd --reload

第二步,登陆Oracle Cloud网页后台,进行设置

进入“实例”,点击“实例信息”下的“虚拟云网络”右侧类似“VirtualCloudNetwork-2019****-****”的按钮并进入;

在“(根)区间中的子网”下,如果存在多个类似“公共子网 pbOp:***-**-1 ”的项目列表,就随便点进去一个

在“安全列表”下,点击并进入“Default Security List for VirtualCloudNetwork-2019****-****”。

编辑“入站规则”下“目的地端口范围”为22那条规则,或者参照这条规则新建也可以。
将“目的地端口范围”下的“22”改为“22,80,443”,然后“保存更改”即可。 系统会自动根据添加的IP生成新的两条规则。

注意:每个端口或范围间隔需要英文逗号;如果需要增加UDP端口,就在“IP 协议 ”下选择“UDP”。

至此设置完毕,赶紧访问下你的网页吧。

为Oracle Cloud申请的免费VPS CentOS 7 系统升级内核并开启官方原版BBR加速

Oracle 云申请的CentOS 7 系统,自带3.1内核,且为EFI引导,并默认开启SELinux,升级内核开启BBR易出现错误导致无法开机。开启原版BBR需要4.9以上内核,以下内容记录升级内核并开启BBR的过程。

更新系统

sudo yum update -y

查看内核

uname -r

3.10.0-1062.1.1.el7.x86_64

改SELinux为permissive模式

查看SELinux状态,默认开启:

sestatus

将enforcing改为permissive,如下:

sudo vi /etc/sysconfig/selinux

SELINUX=permissive

重启vps:

sudo reboot

开启elrepo源

sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

sudo yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

查看可安装内核

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

安装内核

sudo yum --enablerepo=elrepo-kernel install kernel-ml

查看新内核是否安装成功

rpm -qa | grep kernel

更新引导

这是一个容易出错的地方,以前碰到的启动配置文件,大多是在/boot/grub2/grub.cfg,而该系统为EFI引导,配置文件位置不同。

sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

列出系统开机的所有启动项

sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/efi/EFI/centos/grub.cfg

设置默认启动项

sudo grub2-set-default 0

重启VPS

sudo reboot

查看内核

uname -r
5.3.1-1.el7.elrepo.x86_64

开启bbr(直接抄袭大佬的全部内容)

执行 lsmod | grep bbr,如果结果中没有 tcp_bbr 的话就先执行:

sudo modprobe tcp_bbr
echo "tcp_bbr" | sudo tee --append /etc/modules-load.d/modules.conf

执行

echo "net.core.default_qdisc=fq" | sudo tee --append /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee --append /etc/sysctl.conf

保存生效

sudo sysctl -p

执行

sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control

如果结果都有 bbr,则证明你的内核已开启 BBR。

执行 lsmod | grep bbr,看到有 tcp_bbr 模块即说明 BBR 已启动。

重新开启SELinux

检查有无SELinux相关错误:

sudo cat /var/log/messages | grep "SELinux is preventing"

确保无错误后,再启用SELinux Enforcing 模式

sudo vi /etc/sysconfig/selinux

将permissive改回enforcing,如下修改:

SELINUX=enforcing

重启VPS

sudo reboot

解决Oracle Cloud免费服务申请的VPS无法登陆问题

现象描述

使用puttygen(0.71)生成RSA格式的公钥和私钥,粘贴在“创建计算实例”的“添加SSH密钥”下的“粘贴SSH密钥”中,申请免费的CentOS 7系统的VPS。

当使用命令行登陆VPS时,如:

ssh opc@12.34.56.78 -i .\key.ppk

出现 Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

改用putty在SSH-AUTh中选择私钥,登陆VPS,则提示:

No supported authentication methods available(server sent: publickey,gssapi-keyex,gssapi-with-mic)

原因

经多次尝试发现,Oracle的CentOS7 sshd_config 模板中未定义SSH的Protocol,因此登陆时默认使用Protocol 1模式,但命令行和putty默认使用Protocol 2,因此导致无法登陆。

解决方法

使用putty登陆,在putty的设置中,依次点击“Connection”-“SSH”-“Auth”,选中“Attempt TIS or CryptoCard auth (SSH-1)”,登陆即可。

(可选)登陆后可以修改SSH协议为2.

sudo vi /etc/ssh/sshd_config

添加一行

Protocol 2

重启SSH服务即可。

为caddy启用tls 1.3

更新日志

20190918

在20190305的更新中,caddy默认支持了tls 1.3,因此以下内容已过时从官网或者github下载使用即可。

nginx启用tls1.3已多时,这里记录下在caddy中启用tls1.3的过程。

安装依赖:

sudo yum -y install docker
service docker start

下载源码:

cd ~
git clone https://github.com/cloudflare/tls-tris.git
go get github.com/mholt/caddy
go get github.com/caddyserver/builds

编译go,使之支持tls1.3:

cd tls-tris; cp _dev/utils/pre-commit .git/hooks/
sudo make -f _dev/Makefile build-all

编译成功,运行如下命令确认:

GOROOT=”/home/$USER/tls-tris/_dev/GOROOT/linux_amd64/” go version
-> go version go1.11.1 linux/amd64

下载并应用caddy补丁:

cd $GOPATH/src/github.com/mholt/caddy
wget https://www.hnrk.io/md/caddy.patch
patch -p1 < caddy.patch

编译caddy:

cd $GOPATH/src/github.com/mholt/caddy/caddy
GOROOT=”/home/$USER/tls-tris/_dev/GOROOT/linux_amd64/” go run build.go

编译成功的caddy在当前目录下。直接替换原caddy后运行即已支持tls 1.3。

使用caddy反向代理deluge的webui

20191007更新

最近用下面的老方法遇到了问题,表现为打开coldawn.com/deluge一片空白,chrome错误代码为:

because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled. 
net::ERR_ABORTED 404 

经过多次尝试,仍然失败。解决办法使使用二级域名反代deluge,如下:

deluge.coldawn.com {
    proxy / http://127.0.0.1:8112 {
      transparent
      websocket
    }
}

访问deluge.coldawn.com即可。

注意将:deluge.coldawn.com改成你自己的二级域名。

老方法

方法很简单,一行搞定,代码如下:

proxy /deluge http://127.0.0.1:8112/ { transparent without /deluge header_upstream X-Deluge-Base "/deluge" }

然后访问自己的域名+/deluge即可,如:

coldawn.com/deluge

为网站开启QUIC的几点注意事项

QUIC的文章比较多了,但是开启起来仍然是件困扰人的事。本文简要记录一下为网站开启QUIC的几点注意事项。

一 QUIC对比现有HTTP2的主要优势:

  • 显著减少连接建立时间
  • 改进的拥塞控制
  • 无对头阻塞的多路复用
  • 前向纠错
  • 连接迁移

二 开启QUIC的注意事项主要有以下几点:

Caddy的13f9c34已经支持QUIC 44、43、39,运行参数中加入-quic

编译caddy时,需要为主分支的quic-go打一个补丁:
cd $GOPATH/src/github.com/mholt/caddy/vendor/github.com/lucas-clemente/quic-go/

vi quic.patch

quic.pathch的内容如下:

From 20719a7c50c1f97ff0f2272010cda5710794c1d0 Mon Sep 17 00:00:00 2001
From: Marten Seemann <martenseemann@gmail.com>
Date: Thu, 29 Nov 2018 20:33:02 +0700
Subject: [PATCH] use the original tls.Config if tls.Config.GetConfigForClient
 returns nil

---
 internal/crypto/cert_chain.go      | 15 ++++++++++-----
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/internal/crypto/cert_chain.go b/internal/crypto/cert_chain.go
index 0c728fd25..45af2952d 100644
--- a/internal/crypto/cert_chain.go
+++ b/internal/crypto/cert_chain.go
@@ -56,8 +56,7 @@ func (c *certChain) GetLeafCert(sni string) ([]byte, error) {
 }
 
 func (c *certChain) getCertForSNI(sni string) (*tls.Certificate, error) {
-	conf := c.config
-	conf, err := maybeGetConfigForClient(conf, sni)
+	conf, err := maybeGetConfigForClient(c.config, sni)
 	if err != nil {
 		return nil, err
 	}
@@ -107,7 +106,13 @@ func maybeGetConfigForClient(c *tls.Config, sni string) (*tls.Config, error) {
 	if c.GetConfigForClient == nil {
 		return c, nil
 	}
-	return c.GetConfigForClient(&tls.ClientHelloInfo{
-		ServerName: sni,
-	})
+	confForClient, err := c.GetConfigForClient(&tls.ClientHelloInfo{ServerName: sni})
+	if err != nil {
+		return nil, err
+	}
+	// if GetConfigForClient returns nil, use the original config
+	if confForClient == nil {
+		return c, nil
+	}
+	return confForClient, nil
 }

patch -p1 < quic.patch

之后再进入caddy目录进行下一步的编译:

cd $GOPATH/src/github.com/mholt/caddy

请升级到目前的最新版 1.11。

  • 在防火墙中为443端口开启udp

          Firewalld:

sudo firewall-cmd --zone=public --add-port=443/udp --permanent

          iptables:

sudo iptables -A INPUT -p udp --dport 443 -j ACCEPT
  • 将Chrome升级到最新版

在chrome://flags/#enable-quic中启用QUIC支持。

三 一个查看QUIC支持情况的命令

curl -I https://www.coldawn.com we get
HTTP/1.1 200 OK
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39"
Cache-Control: max-age=8640000
Content-Type: text/html; charset=UTF-8
Link: <https://www.coldawn.com/wp-json/>; rel="https://api.w.org/"
Server: Caddy
Strict-Transport-Security: max-age=31536000;
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Powered-By: PHP/7.2.10
X-Xss-Protection: 1; mode=block
Date: Fri, 28 Sep 2018 04:29:41 GMT

解决CentOS 7 上yum update时出现的Error: Multilib version problems found.

现象描述

CentOS 7.5 系统,sudo yum update,出现如下错误:

Error:  Multilib version problems found. This often means that the root cause is something else and multilib version checking is just pointing out that there is a problem. Eg.:
       
 1. You have an upgrade for audit-libs which is missing some dependency that another package requires. Yum is trying to solve this by installing an older version of audit-libs of the different architecture. If you exclude the bad architecture yum will tell you what the root cause is (which package requires what). You can try redoing the upgrade with --exclude audit-libs.otherarch ... this should give you an error message showing the root cause of the problem.
       
 2. You have multiple architectures of audit-libs installed, but yum can only see an upgrade for one of those architectures.
 If you don't want/need both architectures anymore then you can remove the one with the missing update and everything will work.
       
 3. You have duplicate versions of audit-libs installed already. You can use "yum check" to get yum show these errors. ...you can also use --setopt=protected_multilib=false to remove this checking, however this is almost never the correct thing to do as something else is very likely to go wrong (often causing much more problems).
       
 Protected multilib versions: -2.8.1-3.el7_5.1.i686 != audit-libs-2.8.1-3.el7.x86_64
Error: Protected multilib versions: systemd-libs-219-57.el7_5.1.i686 != systemd-libs-219-57.el7.x86_64

尝试单独更新相关软件包

单独更新audit-libs,失败

sudo yum update audit-libs

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.usc.edu
 * elrepo-kernel: repos.lax-noc.com
 * epel: mirrors.develooper.com
 * extras: mirrors.xtom.com
 * updates: mirror.hostduplex.com
 * webtatic: us-east.repo.webtatic.com
Resolving Dependencies
--> Running transaction check
---> Package audit-libs.i686 0:2.8.1-3.el7 will be updated
---> Package audit-libs.x86_64 0:2.8.1-3.el7 will be updated
--> Processing Dependency: audit-libs(x86-64) = 2.8.1-3.el7 for package: audit-libs-python-2.8.1-3.el7.x86_64
--> Processing Dependency: audit-libs(x86-64) = 2.8.1-3.el7 for package: audit-2.8.1-3.el7.x86_64
---> Package audit-libs.i686 0:2.8.1-3.el7_5.1 will be an update
---> Package audit-libs.x86_64 0:2.8.1-3.el7_5.1 will be an update
--> Running transaction check
---> Package audit.x86_64 0:2.8.1-3.el7 will be updated
---> Package audit.x86_64 0:2.8.1-3.el7_5.1 will be an update
---> Package audit-libs-python.x86_64 0:2.8.1-3.el7 will be updated
---> Package audit-libs-python.x86_64 0:2.8.1-3.el7_5.1 will be an update
--> Finished Dependency Resolution

Dependencies Resolved
=======================================================================================================================================================
 Package                                  Arch                          Version                                   Repository                      Size
=======================================================================================================================================================
Updating:
 audit-libs                               i686                          2.8.1-3.el7_5.1                           updates                        100 k
 audit-libs                               x86_64                        2.8.1-3.el7_5.1                           updates                         99 k
Updating for dependencies:
 audit                                    x86_64                        2.8.1-3.el7_5.1                           updates                        247 k
 audit-libs-python                        x86_64                        2.8.1-3.el7_5.1                           updates                         75 k

Transaction Summary
=======================================================================================================================================================
Upgrade  2 Packages (+2 Dependent packages)

Total size: 521 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test


Transaction check error:
  package audit-libs-2.8.1-3.el7_5.1.x86_64 is already installed

Error Summary
-------------

单独更新systemd-libs,失败

sudo yum update systemd-libs

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.usc.edu
 * elrepo-kernel: repos.lax-noc.com
 * epel: mirrors.develooper.com
 * extras: mirrors.xtom.com
 * updates: mirror.hostduplex.com
 * webtatic: us-east.repo.webtatic.com
Resolving Dependencies
--> Running transaction check
---> Package systemd-libs.i686 0:219-57.el7 will be updated
--> Processing Dependency: systemd-libs = 219-57.el7 for package: systemd-219-57.el7.x86_64
--> Processing Dependency: systemd-libs = 219-57.el7 for package: libgudev1-219-57.el7.x86_64
---> Package systemd-libs.x86_64 0:219-57.el7 will be updated
--> Processing Dependency: systemd-libs = 219-57.el7 for package: systemd-219-57.el7.x86_64
---> Package systemd-libs.i686 0:219-57.el7_5.1 will be an update
---> Package systemd-libs.x86_64 0:219-57.el7_5.1 will be an update
--> Running transaction check
---> Package libgudev1.x86_64 0:219-57.el7 will be updated
---> Package libgudev1.x86_64 0:219-57.el7_5.1 will be an update
---> Package systemd-libs.i686 0:219-57.el7 will be updated
--> Processing Dependency: systemd-libs = 219-57.el7 for package: systemd-219-57.el7.x86_64
---> Package systemd-libs.x86_64 0:219-57.el7 will be updated
--> Processing Dependency: systemd-libs = 219-57.el7 for package: systemd-219-57.el7.x86_64
--> Finished Dependency Resolution
Error: Package: systemd-219-57.el7.x86_64 (@base)
           Requires: systemd-libs = 219-57.el7
           Removing: systemd-libs-219-57.el7.i686 (@base)
               systemd-libs = 219-57.el7
           Updated By: systemd-libs-219-57.el7_5.1.i686 (updates)
               systemd-libs = 219-57.el7_5.1
 You could try using --skip-broken to work around the problem
** Found 18 pre-existing rpmdb problem(s), 'yum check' output follows:
....

解决办法

系统是64位的,我们在上一步发现了两个不符合x86_64构架的包全名:

audit-libs.i686 0:2.8.1-3.el7

systemd-libs-219-57.el7.i686


需要做的就是移除它们:

sudo yum remove audit-libs.i686 0:2.8.1-3.el7

sudo yum remove systemd-libs-219-57.el7.i686

然后更新系统即可:
sudo yum update

在树莓派3B上安装OpenWrt 18.06.0

更新日志

20180910
OpenWrt 升级至18.06.1;
更正部分疏漏和错误;
有趣的地方在于:直接格式化存储卡,写入 18.06.1镜像,上电,发现之前的设置居然还在。使用firstboot命令后才清除。


经历LEDE分支的快速发展后,OpenWRT与LEDE又重新走到了一起,并于2018年7月放出了首次合并后的正式版OpenWrt 18.06.0。今天介绍下如何在树莓派3 Modle B上安装正式版的OpenWrt 18.06.0,主要目的是介绍如何配置3B的网络。

安装OpenWRT

下载所需的固件和写入软件

下载适配树莓派3B的固件

openwrt-18.06.1-brcm2708-bcm2710-rpi-3-squashfs-factory.img.gz

解压后得到openwrt-18.06.1-brcm2708-bcm2710-rpi-3-squashfs-factory.img。

下载并安装写入软件

Win32DiskImager

写入OpenWRT

建议将TF卡事先格式化一次,保证卡上内容为空。

以管理员方式打开Win32DiskImager,在“Image File”处选择解压好的“openwrt-18.06.1-brcm2708-bcm2710-rpi-3-squashfs-factory.img”,谨慎选择要写入的目标TF卡所在的盘符“Device”,之后点击“Write”写入。

修改OpenWRT网络配置

初始化设置

将写好的TF卡插入3B,通电,以网线连接上3B与电脑,打开 192.168.1.1,直接点击“Login”登陆。

设置密码和修改SSH设置

点击上方提示处的“Go to password configuration…”,
设置密码(Router Password)。
将“Dropbear Instance”下的“Interface”选择“lan”,之后点击“Save & Apply”保存并生效。

开启并连接3B的无线网络

依次打开“Network” > “Wireless”,在“Wireless Overview”界面,找到“SSID: OpenWrt | Mode: Master”,点击“Enable”开启无线,此无线的用户名为“OpenWrt”,默认密码为空。
断开有线连接,在无线网络找到“OpenWrt”,进行连接,重新登陆路由器。

修改网络接口设置并添加WAN口配置

修改LAN接口网卡适配器的设置

依次打开“Network” > “Interfaces”,在”Interfaces”下找到“LAN”,点击“Edit”进入“Interfaces – LAN”的配置界面,找到“Common Configuration”选项卡下的“Physical Settings”,在“Interface”点击右侧的下拉列表,去掉“Ethernet Adapter: “eth0” (lan)”前面的钩,之后点击“Save & Apply”保存并生效。

对无线网络的进一步配置,如更改无线名称,加密设置等在此不赘述。

添加WAN口

依次打开“Network” > “Interfaces”,点击“Add new interface…”打开新建接口的界面“Create Interface”,如下修改:

  • “Name of the new interface”处,填入“WAN”。
  • “Protocol of the new interface”处,根据是否由光猫拨号进行选择:如果是宽带的账户密码在光猫中设置并拨号,就选择“DHCP client”;如果是在树莓派的OpenWRT中设置宽带账号并拨号,就选择“PPPoE”。
  • “Cover the following interface”处,选择“Ethernet Adapter: “eth0″”。

设置好之后,点击“Submit”提交修改。
此时,返回WAN口的设置界面“Interfaces – WAN”:
如果选择了PPPoE,就在该界面下方输入宽带的用户名“PAP/CHAP username
”和密码“PAP/CHAP password”。
在该界面的右侧防火墙设置“Firewall Settings”中:
“Create / Assign firewall-zone”处,选择“wan:(empty)”。
点击“Save & Apply”保存并生效。

安装中文语言包和material主题

putty登陆3B,安装语言包和material主题

opkg update
opkg install luci-theme-material luci-i18n-base-zh-cn