为 Linux 配置多个无线网卡

最近把吃灰已久的 Raspberry Pi 3 Model B 拿出来跑 Home Assistant 了,但因为是买的比较早的版本所以不支持 5GHz Wi-Fi,只能连在 2.4Ghz 的 Wi-Fi 上面。

正好最近准备把 2.4GHz 的网络给单独划出来一个网段供 IoT 设备用,于是就想把 Raspberry Pi 连到 5GHz 的网络上面。正好手头有个闲置的 TP-Link Archer T2UH 就插到树莓派上用了。

多了一个无线设备,自然就想分开配置一下。搜寻了一些信息以后发现可以这样配置不同的无线设备

首先使用 sudo iwconfig 查看现有的无线设备,执行后可以看到类似于以下的输出

lo        no wireless extensions.

eth0      no wireless extensions.

wlan0     IEEE 802.11  ESSID:off/any
          Mode:Managed  Access Point: Not-Associated
          Tx-Power=31 dBm
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on

wlan1     IEEE 802.11  ESSID:off/any
          Mode:Managed  Access Point: 74:4D:28:BA:EB:30
          Tx-Power=17 dBm
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
Zsh

从输出中我们可以看到现在有两个 wlan 设备,分别为 wlan0 和 wlan1
接下来我们先配置一下 wlan0 的 SSID 和密码
执行 wpa_passphrase Your_SSID Your_passwd 后会返回以下内容

network={
ssid="${your ssid}"
#psk="${your password}"
psk=${key}
}
Zsh

sudo vim /etc/wpa_supplicant/wlan0.conf 将上面生存的内容写入 wlan0 的 wpa 配置文件里(可以把有原始mi

接下来 sudo vim /etc/network/interfaces.d/wlan0 创建 wlan0 的配置文件

auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wlan0.conf
Zsh

wlan1 同样按前面的步骤配置即可,完成后 reboot 一下就行

用 Nginx 来反代 Home Assistant

在树莓派上折腾了个 Home Assistant 上去,反正用都能用了就顺便配一下反代以便在外面看家里的设备(?为什么会有这样的需求?)

首先编辑 Home Assistant 的 configuration.yaml,我是跑在 Docker 里的,所以看一下配置文件就知道 config 存在哪里了
volumes:
- /home/username/home-assistant/config:/config

http:
  # For extra security set this to only accept connections on localhost if NGINX is on the same machine
  # Uncommenting this will mean that you can only reach Home Assistant using the proxy, not directly via IP from other clients.
  # server_host: 127.0.0.1
  use_x_forwarded_for: true
  # You must set the trusted proxy IP address so that Home Assistant will properly accept connections
  # Set this to your NGINX machine IP, or localhost if hosted on the same machine.
  trusted_proxies: <Your_Nginx_Server_ip>
configuration.yaml

保存后重启一下 docker service
sudo docker-compose restart

接下来创建一个 Nginx 配置文件

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server
        {
          listen 443;
          listen [::]:443;
          server_name hass.yourdomain.moe;

          ssl_certificate /etc/letsencrypt/live/yourdomain-moe.crt;
          ssl_certificate_key /etc/letsencrypt/live/yourdomain-moe.key;
          ssl_session_timeout 1d;
          ssl_session_cache shared:SSL:10m; # about 40000 sessions
          ssl_session_tickets off;

          # intermediate configuration
          ssl_protocols TLSv1.2 TLSv1.3;
          ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
          ssl_prefer_server_ciphers on;
          proxy_buffering off;
          
           location / {
            proxy_pass http://<Your_Home_Assistant_ip>:8123;
            proxy_set_header Host $host;
            proxy_redirect http:// https://;
            proxy_http_version 1.1;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
    }

        #access_log  /var/log/nginx/yourdomain.moe.log;

        }
hass.yourdomain.moe

接下来重启一下 Nginx 服务即可
话说回来我到底有什么必要从外面访问 Home Assistant 啊,于是测试没问题以后就把反代关掉了(((

用 samba 来低成本搭建 Time Machine 备份服务器

三个月前搭了个 NetaTalk 作为Time Machine 备份服务使用:用 Netatalk 来低成本搭建 Time Machine 备份服务器,很稳定地跑了几个月。然后千夏前几天手贱把系统从 Debian 11 (bullseye) 升级到了 Debian 12 (bookworm) 后发现 netatalk 不见了(((

搜索了一下发现是因为 netatalk 因为缺乏维护被 Debian 从 bookworm 中移除掉了
虽然有给出从 Debian Unstable 安装 netatalk 的方法,但千夏不是很想折腾非稳定版本的软件包,再加上 Apple 已经放弃了 AFS 的支持向 SMB 靠拢了,于是就想着用 samba 来重新配一下 Time Machine 服务。

首先安装 samba
sudo apt install samba

然后编辑 samba 的配置文件
sudo vim /etc/samba/smb.conf

[global]
# 在 global 中添加以下内容
server min protocol = SMB3
#vfs_catia 提供非法字符转换以正确映射 Apple 路径。 vfs_fruit 是用于实现与 Apple SMB 客户端兼容,vfs_streams_xattr 是允许在底层文件系统中存储 NTFS 备用数据流的主要模块。
vfs objects = catia fruit streams_xattr
fruit:nfs_aces = no
fruit:metadata = netatalk
fruit:locking = netatalk
fruit:encoding = native

[TimeMachine]
comment = Backup for Mac Computers
path = /mnt/backup/TimeMachine
force user = USERNAME
force group = USERGROUP
read only = no
browseable = yes
create mask = 0660
force create mode = 0660
directory mask = 0770
force directory mode = 0770
fruit:time machine = yes
# 设置最大可用空间
fruit:time machine max size = 500G
/etc/samba/smb.conf

保存后设置一下用户密码 smbpasswd -a USERNAME ,然后重启一下 samba 服务,接着在 MacBook 上打开访达 – 连接服务器输入 smb://your-ip-address/TimeMachine,认证后应该就能挂载成功了。打开 macOS 设置里的时光机页面,添加这个磁盘后应该就可以正常使用啦。

参考资料

macOSのタイムマシンをSambaサーバに保存する
Samba and macOS Time Machine
vfs_fruit — Enhanced OS X and Netatalk interoperability

在 Gmail 上使用 iCloud 自定义域名收发邮件

前一阵子购买了 iCloud+ 服务,然后发现它自带了一个自定义域名邮箱服务,于是就把手头的域名添加进去了。但是随后发现这个服务要是只能在 Apple 设备上用的话岂不是太鸡肋了,那么是否可以用 Gmail 来方便的收发邮件呢?

答案当然是可以,并且还蛮简单的。长话短说,我们现在就开始吧w

继续阅读“在 Gmail 上使用 iCloud 自定义域名收发邮件”

用 Netatalk 来低成本搭建 Time Machine 备份服务器

小千夏今年咬咬牙入手了自己的第一台 MacBook Air,和以前拿学校的电脑用不一样,这次终于拥有属于自己的设备了。既然是自己的设备了,自然会作为主力机来用,各种数据和配置的安全也就显得尤为重要了。
那么如何优雅的对 MacBook 的数据进行备份呢?好在 Apple 已经为我们准备了 Time Machine 这个工具——使用Time Machine,不但可以回到过去某个时刻,获取某个文件在当时的版本;也可以在系统异常崩溃后直接全盘恢复到过去某个时刻的状态;亦或者你的电脑在星巴克被人顺走了,你也可以立即购买一台全新的 MacBook,然后通过 Time Machine 来恢复至上一台 MacBook 的数据,从而快速复原生产环境。

继续阅读“用 Netatalk 来低成本搭建 Time Machine 备份服务器”

WordPress 让不同页面显示不同小工具栏

最近重新开始写博客了,文章里放了不少代码块。但是在实际阅览过程中发现由于右侧存在小工具栏,导致文章显示范围特别小。尤其是代码块基本上显示不了什么内容,需要频繁左右滑动才能浏览完整,对阅读造成了不便。

文章页面显示范围狭窄示意图
可以看出文章页面显示范围非常狭窄,根本显示不了多少代码


那么要怎么做才能增加文章页面的显示范围呢?

继续阅读“WordPress 让不同页面显示不同小工具栏”

chmod 仅为文件夹添加执行(Execute)权限

今天为了方便自己写 /var/www/ 目录下的文件,于是把自己添加进了 www-data 用户组,并理所当然的执行了 sudo chmod -R 770 /var/www/ (-rw-rw-r–),结果 sl -al 一下返回 ls: cannot access '/var/www/': Permission denied

  ~ sudo usermod -aG www-data uuz
[sudo] password for uuz: 
  ~ ls -al /var/www/uuz/
total 248
drwxr-xr-x  6 www-data www-data  4096 Aug 31 10:51 .
drwxr-xr-x  7 root     root      4096 Sep 20  2020 ..
drwxr-xr-x 13 www-data www-data  4096 Aug 10  2020 uuz-h5theme
-rw-r--r--  1 www-data www-data   405 Feb  6  2020 index.php
  ~ sudo chmod -R 660 /var/www/
  ~ ls -al /var/www/uuz/  
ls: cannot access '/var/www/uuz/': Permission denied
  ~ sudo ls -al /var/www/uuz/
total 248
drw-rw----  6 www-data www-data  4096 Aug 31 10:51 .
drw-rw----  7 root     root      4096 Sep 20  2020 ..
drw-rw---- 13 www-data www-data  4096 Aug 10  2020 uuz-h5theme
-rw-rw----  1 www-data www-data   405 Feb  6  2020 index.php

思考了一下想起来 ls 需要给执行权限,就又执行了 sudo chmod -R 665 /var/www/。这下虽然 ls 可以用了,但不仅是文件夹,所有文件也都变成 everyone 可执行了,有一定的风险。

  ~ sudo chmod -R 665 /var/www/
  ~ ls -al /var/www/uuz/  
total 248
drw-rw-r-x  6 www-data www-data  4096 Aug 31 10:51 .
drw-rw-r-x  7 root     root      4096 Sep 20  2020 ..
drw-rw-r-x 13 www-data www-data  4096 Aug 10  2020 uuz-h5theme
-rw-rw-r-x  1 www-data www-data   405 Feb  6  2020 index.php

要怎么做才能在保持文件为 -rw-rw-r– 的情况下让文件夹为 drwxrwxr-x 呢?

继续阅读“chmod 仅为文件夹添加执行(Execute)权限”

V2Ray 配置 WebSocket + TLS + Web 教程

暑假回中国了,虽然手机卡有漫游可以回去,但毕竟有流量限制,于是自然而然的需要一个梯子来方便回去。以前有在用 Trojan,不过好像最近 V2Ray 比较流行所以也来配一个玩玩好了。

在阅读本文之前,建议先阅读官方白话文指南以了解 V2Ray 的基本配置方法(或许阅读后你会发现没有必要看本文了(笑))。

那么我们就开始吧w

继续阅读“V2Ray 配置 WebSocket + TLS + Web 教程”

在终端中使用代理服务器连接 SSH !

学校的网络似乎屏蔽了一些端口,导致连不到家里的服务器,于是给 ClashX 里添加了一个跑在 443 端口的 Trojan 以便作为跳板连回家里。

需求如下:local:8080 - proxy:443 - server:22

最开始想直接用 export all_proxy=socks5://127.0.0.1:8080 的方法解决,但发现 SSH 并不走 all proxy,于是请教了大姐姐后得到了以下的方法

继续阅读“在终端中使用代理服务器连接 SSH !”

Transmission 的安装与配置 RPC 反代 (Ubuntu 20.10)

2017年我曾经写过一篇介绍在 Ubuntu 16.04 上安装与配置 Transmission 的文章,转眼4年过去了,我也早已弃用 DigitalOcean 并购入了实体服务器放置在家中。于是便想着对之前的文章进行一些更新以便后人及自己更好地参考。

Server: Fujitsu TX1310 M3
OS: Ubuntu 20.10
Network: IPv4(公网 IP): PPPoE, IPv6(公网 IP): IPoE

Transmission 介绍 (0x00)

Transmission 是一个强大的 BitTorrent 开源客户端,实现了 BT 协议中描述的大多数功能(除了创建种子不太方便以外)。并且它基本上也覆盖了全平台的 OS。

继续阅读“Transmission 的安装与配置 RPC 反代 (Ubuntu 20.10)”