From 0e2858e5c1a10efad6640a957ca6299db9523458 Mon Sep 17 00:00:00 2001 From: halliday2023 Date: Fri, 12 May 2023 14:47:12 +0800 Subject: [PATCH] Site updated: 2023-05-12 14:47:08 --- 2020/09/23/解决linux的开机启动不生效/index.html | 2 +- .../06/20/debian+dwm+rdesktop的安装和使用/index.html | 2 +- 2021/11/23/linux工具集合和问题处理/index.html | 2 +- .../index.html | 2 +- 2023/04/23/随身WiFi刷debian系统/index.html | 2 +- .../阿里OSS+Picgo+Typora搭建图床/index.html | 2 +- .../10/docker+nginx反向代理做统一出入口/index.html | 2 +- archives/2023/04/index.html | 2 +- archives/2023/index.html | 2 +- archives/index.html | 2 +- atom.xml | 12 ++++++------ css/link.css | 2 +- css/main.css | 2 +- css/noscript.css | 2 +- css/tag-diy.css | 2 +- index.html | 2 +- search.xml | 10 +++++----- tags/Picgo/index.html | 2 +- tags/Typora/index.html | 2 +- tags/dsm/index.html | 2 +- tags/图床/index.html | 2 +- tags/阿里OSS/index.html | 2 +- talk/index.html | 4 ++-- 23 files changed, 33 insertions(+), 33 deletions(-) rename 2023/04/{23 => 26}/阿里OSS+Picgo+Typora搭建图床/index.html (96%) diff --git a/2020/09/23/解决linux的开机启动不生效/index.html b/2020/09/23/解决linux的开机启动不生效/index.html index 0845dac..9e17a29 100644 --- a/2020/09/23/解决linux的开机启动不生效/index.html +++ b/2020/09/23/解决linux的开机启动不生效/index.html @@ -1,4 +1,4 @@ -解决linux的开机启动不生效 | 随言碎语

随言碎语

咕叽咕叽

解决linux的开机启动不生效

近偶然间发现加到 /etc/rc.local中的开机启动命令没有生效,于是排查了一下解决了,记录一下处理的过程

主要步骤

  1. ls /lib/systemd/system 你可以看到有很多启动脚本,其中就有我们需要的 rc.local.service

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    cat /lib/systemd/system/rc.local.service

    # This file is part of systemd.
    #
    # systemd is free software; you can redistribute it and/or modify it
    # under the terms of the GNU Lesser General Public License as published by
    # the Free Software Foundation; either version 2.1 of the License, or
    # (at your option) any later version.

    # This unit gets pulled automatically into multi-user.target by
    # systemd-rc-local-generator if /etc/rc.local is executable.
    [Unit]
    Description=/etc/rc.local Compatibility
    ConditionFileIsExecutable=/etc/rc.local
    After=network.target

    [Service]
    Type=forking
    ExecStart=/etc/rc.local start
    TimeoutSec=0
    RemainAfterExit=yes

  2. 创建 /etc/rc.local把需要启动命令写进去

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    vim /etc/rc.local


    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.

    # 这里写你需要执行的命令
    # 注意: 一定要将命令添加在 exit 0之前

    exit 0

    注:

    • debian10默认是没有这个文件,直接创建保存。
    • 主要就是第一句和最后一句
  3. 赋予执行权限,否则的话会导致开机后不运行

    1
    sudo chmod +x /etc/rc.local
  4. /etc/systemd/system 目录下创建软链接

    1
    ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/ 
  5. reboot测试是否生效

----- The End -----
0%
解决linux的开机启动不生效 | 随言碎语

随言碎语

咕叽咕叽

解决linux的开机启动不生效

近偶然间发现加到 /etc/rc.local中的开机启动命令没有生效,于是排查了一下解决了,记录一下处理的过程

主要步骤

  1. ls /lib/systemd/system 你可以看到有很多启动脚本,其中就有我们需要的 rc.local.service

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    cat /lib/systemd/system/rc.local.service

    # This file is part of systemd.
    #
    # systemd is free software; you can redistribute it and/or modify it
    # under the terms of the GNU Lesser General Public License as published by
    # the Free Software Foundation; either version 2.1 of the License, or
    # (at your option) any later version.

    # This unit gets pulled automatically into multi-user.target by
    # systemd-rc-local-generator if /etc/rc.local is executable.
    [Unit]
    Description=/etc/rc.local Compatibility
    ConditionFileIsExecutable=/etc/rc.local
    After=network.target

    [Service]
    Type=forking
    ExecStart=/etc/rc.local start
    TimeoutSec=0
    RemainAfterExit=yes

  2. 创建 /etc/rc.local把需要启动命令写进去

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    vim /etc/rc.local


    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.

    # 这里写你需要执行的命令
    # 注意: 一定要将命令添加在 exit 0之前

    exit 0

    注:

    • debian10默认是没有这个文件,直接创建保存。
    • 主要就是第一句和最后一句
  3. 赋予执行权限,否则的话会导致开机后不运行

    1
    sudo chmod +x /etc/rc.local
  4. /etc/systemd/system 目录下创建软链接

    1
    ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/ 
  5. reboot测试是否生效

----- The End -----
0%
debian+dwm+rdesktop的安装和使用 | 随言碎语

随言碎语

咕叽咕叽

debian+dwm+rdesktop的安装和使用

dwm(Dynamic Window Manager)属于动态窗口管理器,可以自定义不同窗口的出现规则如平铺或者堆叠。

rdesktop 是一个在 Unix/Linux 下访问 Windows 远程桌面的客户端程序.

1. 背景

需求是有一台性能极差的linux服务器,想在上面安装rdp ,把它当成廋客机来使用。这时候就需要一个窗口,在无法安装桌面的情况下,dwm+rdesktop无疑是比较合适的解决方案。

1. 安装dwm

  1. 先用apt安装

    1
    apt install dwm
  2. 安装完成后尝试启动

    1
    startx
  3. 可能遇到以下问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root@raspbian:/opt# startx
-bash: startx: command not found

#若报这个错,说明x服务没有装,利用search查一次是哪个包提供的
root@raspbian:/opt# apt search startx
Sorting... Done
Full Text Search... Done
xinit/stable 1.4.0-1 arm64
X server initialisation tool

#查到后直接安装
root@raspbian:/opt# apt install xinit

然后再次尝试启动
root@raspbian:/opt# startx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#若报这个错
xauth: file /root/.Xauthority does not exist

X.Org X Server 1.20.4
X Protocol Version 11, Revision 0
Build Operating System: Linux 4.19.0-16-arm64 aarch64 Debian
Current Operating System: Linux raspbian 5.10.42-Release-OPENFANS+20210611-v8 #1 SMP PREEMPT Fri Jun 11 17:19:45 CST 2021 aarch64
Kernel command line: coherent_pool=1M 8250.nr_uarts=0 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=1824 bcm2708_fb.fbheight=984 bcm2708_fb.fbdepth=16 bcm2708_fb.fbswap=1 smsc95xx.macaddr=DC:A6:32:E1:6A:E3 vc_mem.mem_base=0x3f000000 vc_mem.mem_size=0x3f600000 dwc_otg.lpm_enable=0 console=ttyS0,115200 console=tty1 root=PARTUUID=daf1c5e3-02 rootfstype=ext4 elevator=deadline fsck.repair=yes net.ifnames=0 cgroup_enable=1 cgroup_memory=1 cgroup_enable=cpuset cgroup_enable=memory swapaccount=1 zswap.enabled=1 zswap.zpool=z3fold zswap.compressor=lz4 zswap.max_pool_percent=25 rootwait
Build Date: 19 April 2021 09:34:38AM
xorg-server 2:1.20.4-1+deb10u3 (https://www.debian.org/support)
Current version of pixman: 0.36.0
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Fri Aug 27 22:29:50 2021
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
(EE)
Fatal server error:
(EE) no screens found(EE)
(EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
(EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
(EE)
(EE) Server terminated with error (1). Closing log file.


xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error

#错说明还有一个X的依赖包没有安装

root@raspbian:/opt# apt install xserver-xorg-video-fbdev

#安装完成后再次输入,应该可以正常启动了
startx

按 shift + alt + q即可退出 dwm 桌面

2.安装rdesktop

  1. apt安装

    1
    apt install rdesktop
  2. 使用

    一般的远程连接

    1
    2
    3
    rdesktop -f -a 16 -x l 172.16.0.100

    # rdesktop退出全屏模式 :使用组合键ctrl+alt+enter进行切换

    挂载U盘设备

    1
    rdesktop -f -r disk  -r disk:usb=/mnt/usb1  -a 16 -x l 172.16.0.100
----- The End -----
0%
debian+dwm+rdesktop的安装和使用 | 随言碎语

随言碎语

咕叽咕叽

debian+dwm+rdesktop的安装和使用

dwm(Dynamic Window Manager)属于动态窗口管理器,可以自定义不同窗口的出现规则如平铺或者堆叠。

rdesktop 是一个在 Unix/Linux 下访问 Windows 远程桌面的客户端程序.

1. 背景

需求是有一台性能极差的linux服务器,想在上面安装rdp ,把它当成廋客机来使用。这时候就需要一个窗口,在无法安装桌面的情况下,dwm+rdesktop无疑是比较合适的解决方案。

1. 安装dwm

  1. 先用apt安装

    1
    apt install dwm
  2. 安装完成后尝试启动

    1
    startx
  3. 可能遇到以下问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root@raspbian:/opt# startx
-bash: startx: command not found

#若报这个错,说明x服务没有装,利用search查一次是哪个包提供的
root@raspbian:/opt# apt search startx
Sorting... Done
Full Text Search... Done
xinit/stable 1.4.0-1 arm64
X server initialisation tool

#查到后直接安装
root@raspbian:/opt# apt install xinit

然后再次尝试启动
root@raspbian:/opt# startx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#若报这个错
xauth: file /root/.Xauthority does not exist

X.Org X Server 1.20.4
X Protocol Version 11, Revision 0
Build Operating System: Linux 4.19.0-16-arm64 aarch64 Debian
Current Operating System: Linux raspbian 5.10.42-Release-OPENFANS+20210611-v8 #1 SMP PREEMPT Fri Jun 11 17:19:45 CST 2021 aarch64
Kernel command line: coherent_pool=1M 8250.nr_uarts=0 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=1824 bcm2708_fb.fbheight=984 bcm2708_fb.fbdepth=16 bcm2708_fb.fbswap=1 smsc95xx.macaddr=DC:A6:32:E1:6A:E3 vc_mem.mem_base=0x3f000000 vc_mem.mem_size=0x3f600000 dwc_otg.lpm_enable=0 console=ttyS0,115200 console=tty1 root=PARTUUID=daf1c5e3-02 rootfstype=ext4 elevator=deadline fsck.repair=yes net.ifnames=0 cgroup_enable=1 cgroup_memory=1 cgroup_enable=cpuset cgroup_enable=memory swapaccount=1 zswap.enabled=1 zswap.zpool=z3fold zswap.compressor=lz4 zswap.max_pool_percent=25 rootwait
Build Date: 19 April 2021 09:34:38AM
xorg-server 2:1.20.4-1+deb10u3 (https://www.debian.org/support)
Current version of pixman: 0.36.0
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Fri Aug 27 22:29:50 2021
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
(EE)
Fatal server error:
(EE) no screens found(EE)
(EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
(EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
(EE)
(EE) Server terminated with error (1). Closing log file.


xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error

#错说明还有一个X的依赖包没有安装

root@raspbian:/opt# apt install xserver-xorg-video-fbdev

#安装完成后再次输入,应该可以正常启动了
startx

按 shift + alt + q即可退出 dwm 桌面

2.安装rdesktop

  1. apt安装

    1
    apt install rdesktop
  2. 使用

    一般的远程连接

    1
    2
    3
    rdesktop -f -a 16 -x l 172.16.0.100

    # rdesktop退出全屏模式 :使用组合键ctrl+alt+enter进行切换

    挂载U盘设备

    1
    rdesktop -f -r disk  -r disk:usb=/mnt/usb1  -a 16 -x l 172.16.0.100
----- The End -----
0%
linux工具集合和问题处理 | 随言碎语

linux工具集合和问题处理

好用的工具分享和使用

1. 使用SCL来安装不同版本的py

  1. 安装scl

    1
    2
    yum install centos-release-scl
    yum install scl-utils-build
  2. 设置仓库地址

    1
    yum-config-manager --enable rhel-server-rhscl-7-rpms
  3. 查看 SCL 中可用包的完整列表

    1
    yum --disablerepo="*" --enablerepo="scl" list available

    image-20230428221941666

  4. 搜索 SCL 中的包

    1
    yum --disablerepo="*" --enablerepo="scl" search <keyword>
  5. 假设你要安装 Python 3.5,直接使用yum install即可

    1
    yum install rh-python35
  6. 安装后默认是不生效的

    1
    2
    python --version
    Python 2.6.6
  7. 使用前需要激活

    1
    scl enable rh-python35 bash
  8. 验证一下是否生效

    1
    python -V

2. Linux环境崩溃生成core文件

  1. 首先需要确认当前会话的ulimit –c,若为0,则不会产生对应的coredump,需要进行修改和设置

    1
    2
    3
    4
    5
    # 临时,可以产生coredump且不受大小限制
    ulimit -c unlimited

    # 永久生效,加到配置文件中
    vim /etc/profile
  2. 更改core dump生成路径

    默认会生成在程序的工作目录,但是有些程序存在切换目录的情况,导致core dump生成的路径没有规律

    1
    2
    3
    4
    mkdir -p  /data/coredump
    echo /data/coredump/core.%e.%p> /proc/sys/kernel/core_pattern

    %e表示程序名, %p表示进程id

3.Linux端口转发的几种常用方法

  1. SSH端口转发

    1
    2
    3
    4
    5
    6
    7
    8
    #本地端口转发
    ssh -fgN -L 2222:localhost:22 localhost

    #远程端口转发
    ssh -fgN -R 2222:host1:22 localhost

    #动态转发
    ssh -fgN -D 12345 root@host1
  2. iptables 端口转发

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    1.开启数据转发功能

    vi /etc/sysctl.conf
    #增加一行
    net.ipv4.ip_forward=1

    2.使数据转发功能生效
    sysctl -p

    3.将本地的端口转发到本机端口

    iptables -t nat -A PREROUTING -p tcp --dport 2222 -j REDIRECT --to-port 22

    4.将本机的端口转发到其他机器
    iptables -t nat -A PREROUTING -d 192.168.172.130 -p tcp --dport 8000 -j DNAT --to-destination 192.168.172.131:80
    iptables -t nat -A POSTROUTING -d 192.168.172.131 -p tcp --dport 80 -j SNAT --to 192.168.172.130

    5.清空nat表的所有链
    iptables -t nat -F PREROUTING
  3. firewall 端口转发

    1
    2
    3
    4
    5
    6
    7
    8
    1.开启伪装IP
    firewall-cmd --permanent --add-masquerade

    2.配置端口转发,将到达本机的12345端口的访问转发到另一台服务器的22端口。
    firewall-cmd --permanent --add-forward-port=port=12345:proto=tcp:toaddr=192.168.172.131:toport=22

    3.重新载入,使其失效。
    firewall-cmd --reload
  4. rinetd 端口转发

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    1.源码下载

    wget https://li.nux.ro/download/nux/misc/el7/x86_64/rinetd-0.62-9.el7.nux.x86_64.rpm

    2.安装rinetd

    rpm -ivh rinetd-0.62-9.el7.nux.x86_64.rpm

    3.编辑配置文件

    vi /etc/rinetd.conf

    0.0.0.0 1234 127.0.0.1 22

    4.启动转发

    rinetd -c /etc/rinetd.conf
  5. ncat 端口转发

    1
    2
    3
    4
    5
    6
    7
    1.安装ncat

    yum install nmap-ncat -y

    2.监听本机 9876 端口,将数据转发到 192.168.172.131的 80 端口

    ncat --sh-exec "ncat 192.168.172.131 80" -l 9876 --keep-open
  6. socat 端口转发

    1
    2
    3
    4
    5
    6
    7
    1.socat安装

    yum install -y socat

    2.在本地监听12345端口,并将请求转发至192.168.172.131的22端口。

    socat TCP4-LISTEN:12345,reuseaddr,fork TCP4:192.168.172.131:22
  7. portmap 端口转发

    1
    2
    3
    4
    5
    6
    7
    1.下载地址:

    http://www.vuln.cn/wp-content/uploads/2016/06/lcx_vuln.cn_.zip

    2.监听本地1234端口,转发给192.168.172.131的22端口

    ./portmap -m 1 -p1 1234 -h2 192.168.172.131 -p2 22

4.修改SSH的默认端口

  1. 修改配置项

    1
    2
    3
    4
    vi /etc/ssh/sshd_config 

    Port 22 # 先不要去掉
    Port 6666 # 增加一个端口,这样做是为了确保6666端口不能正常连接的情况下依然能保持22端口连接
  2. 重启服务,并确认服务没有问题

    1
    2
    3
    4
    #重启服务
    systemctl restart sshd.service
    #确认服务没有问题
    systemctl status sshd.service
  3. 使用6666端口,确认可以正常连接

  4. 再次编辑配置,将22端口注释掉,然后重启服务

5. 配置禁止root用户直接登录

  1. 先确认有普通用户,或者创建一个普通用户

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@CentOS ~]# useradd test
    #使用passwd命令即可给相应帐户设置或修改密码。

    [root@CentOS ~]# passwd test
    #根据图示,设置或修改密码需要填写两次,第二次为效验密码,输入完毕后请回车确认。
    Changing password for user test.
    New password:
    Retype new password:
    passwd: all authentication tokens updated successfully.

  2. 修改配置文件

    1
    2
    3
    4
    5
    vi /etc/ssh/sshd_config

    查找 #PermitRootLogin yes”
    将“#”去掉,末尾“Yes”改为“No”

  3. 重启服务

    1
    systemctl restart sshd
  4. 确认已经无法用root用户登录

  5. 普通用户可以登录

    1
    2
    # 登陆后切换root
    su -

6.解决 SSH 连接速度慢

一个个试,不行就还原了,再试下一个

  1. 关闭DNS反向解析

    1
    2
    3
    4
    5
    vi /etc/ssh/sshd_config
    UseDNS=no

    重启验证,不行的话要改回来!!!
    service sshd restart
  2. 关闭GSS认证

    1
    2
    3
    4
    5
    # vi /etc/ssh/sshd_config
    GSSAPIAuthentication no

    重启验证,不行的话要改回来!!!
    service sshd restart

7. fzf-模糊查找神器

1
2
3
4
5
6
7
8
9
10
11
apt install fzf

根据readme添加环境变量
more /usr/share/doc/fzf/README.Debian
Bash
====

Append this line to ~/.bashrc to enable fzf keybindings for Bash:

source /usr/share/doc/fzf/examples/key-bindings.bash

----- The End -----
0%
linux工具集合和问题处理 | 随言碎语

linux工具集合和问题处理

好用的工具分享和使用

1. 使用SCL来安装不同版本的py

  1. 安装scl

    1
    2
    yum install centos-release-scl
    yum install scl-utils-build
  2. 设置仓库地址

    1
    yum-config-manager --enable rhel-server-rhscl-7-rpms
  3. 查看 SCL 中可用包的完整列表

    1
    yum --disablerepo="*" --enablerepo="scl" list available

    image-20230428221941666

  4. 搜索 SCL 中的包

    1
    yum --disablerepo="*" --enablerepo="scl" search <keyword>
  5. 假设你要安装 Python 3.5,直接使用yum install即可

    1
    yum install rh-python35
  6. 安装后默认是不生效的

    1
    2
    python --version
    Python 2.6.6
  7. 使用前需要激活

    1
    scl enable rh-python35 bash
  8. 验证一下是否生效

    1
    python -V

2. Linux环境崩溃生成core文件

  1. 首先需要确认当前会话的ulimit –c,若为0,则不会产生对应的coredump,需要进行修改和设置

    1
    2
    3
    4
    5
    # 临时,可以产生coredump且不受大小限制
    ulimit -c unlimited

    # 永久生效,加到配置文件中
    vim /etc/profile
  2. 更改core dump生成路径

    默认会生成在程序的工作目录,但是有些程序存在切换目录的情况,导致core dump生成的路径没有规律

    1
    2
    3
    4
    mkdir -p  /data/coredump
    echo /data/coredump/core.%e.%p> /proc/sys/kernel/core_pattern

    %e表示程序名, %p表示进程id

3.Linux端口转发的几种常用方法

  1. SSH端口转发

    1
    2
    3
    4
    5
    6
    7
    8
    #本地端口转发
    ssh -fgN -L 2222:localhost:22 localhost

    #远程端口转发
    ssh -fgN -R 2222:host1:22 localhost

    #动态转发
    ssh -fgN -D 12345 root@host1
  2. iptables 端口转发

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    1.开启数据转发功能

    vi /etc/sysctl.conf
    #增加一行
    net.ipv4.ip_forward=1

    2.使数据转发功能生效
    sysctl -p

    3.将本地的端口转发到本机端口

    iptables -t nat -A PREROUTING -p tcp --dport 2222 -j REDIRECT --to-port 22

    4.将本机的端口转发到其他机器
    iptables -t nat -A PREROUTING -d 192.168.172.130 -p tcp --dport 8000 -j DNAT --to-destination 192.168.172.131:80
    iptables -t nat -A POSTROUTING -d 192.168.172.131 -p tcp --dport 80 -j SNAT --to 192.168.172.130

    5.清空nat表的所有链
    iptables -t nat -F PREROUTING
  3. firewall 端口转发

    1
    2
    3
    4
    5
    6
    7
    8
    1.开启伪装IP
    firewall-cmd --permanent --add-masquerade

    2.配置端口转发,将到达本机的12345端口的访问转发到另一台服务器的22端口。
    firewall-cmd --permanent --add-forward-port=port=12345:proto=tcp:toaddr=192.168.172.131:toport=22

    3.重新载入,使其失效。
    firewall-cmd --reload
  4. rinetd 端口转发

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    1.源码下载

    wget https://li.nux.ro/download/nux/misc/el7/x86_64/rinetd-0.62-9.el7.nux.x86_64.rpm

    2.安装rinetd

    rpm -ivh rinetd-0.62-9.el7.nux.x86_64.rpm

    3.编辑配置文件

    vi /etc/rinetd.conf

    0.0.0.0 1234 127.0.0.1 22

    4.启动转发

    rinetd -c /etc/rinetd.conf
  5. ncat 端口转发

    1
    2
    3
    4
    5
    6
    7
    1.安装ncat

    yum install nmap-ncat -y

    2.监听本机 9876 端口,将数据转发到 192.168.172.131的 80 端口

    ncat --sh-exec "ncat 192.168.172.131 80" -l 9876 --keep-open
  6. socat 端口转发

    1
    2
    3
    4
    5
    6
    7
    1.socat安装

    yum install -y socat

    2.在本地监听12345端口,并将请求转发至192.168.172.131的22端口。

    socat TCP4-LISTEN:12345,reuseaddr,fork TCP4:192.168.172.131:22
  7. portmap 端口转发

    1
    2
    3
    4
    5
    6
    7
    1.下载地址:

    http://www.vuln.cn/wp-content/uploads/2016/06/lcx_vuln.cn_.zip

    2.监听本地1234端口,转发给192.168.172.131的22端口

    ./portmap -m 1 -p1 1234 -h2 192.168.172.131 -p2 22

4.修改SSH的默认端口

  1. 修改配置项

    1
    2
    3
    4
    vi /etc/ssh/sshd_config 

    Port 22 # 先不要去掉
    Port 6666 # 增加一个端口,这样做是为了确保6666端口不能正常连接的情况下依然能保持22端口连接
  2. 重启服务,并确认服务没有问题

    1
    2
    3
    4
    #重启服务
    systemctl restart sshd.service
    #确认服务没有问题
    systemctl status sshd.service
  3. 使用6666端口,确认可以正常连接

  4. 再次编辑配置,将22端口注释掉,然后重启服务

5. 配置禁止root用户直接登录

  1. 先确认有普通用户,或者创建一个普通用户

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@CentOS ~]# useradd test
    #使用passwd命令即可给相应帐户设置或修改密码。

    [root@CentOS ~]# passwd test
    #根据图示,设置或修改密码需要填写两次,第二次为效验密码,输入完毕后请回车确认。
    Changing password for user test.
    New password:
    Retype new password:
    passwd: all authentication tokens updated successfully.

  2. 修改配置文件

    1
    2
    3
    4
    5
    vi /etc/ssh/sshd_config

    查找 #PermitRootLogin yes”
    将“#”去掉,末尾“Yes”改为“No”

  3. 重启服务

    1
    systemctl restart sshd
  4. 确认已经无法用root用户登录

  5. 普通用户可以登录

    1
    2
    # 登陆后切换root
    su -

6.解决 SSH 连接速度慢

一个个试,不行就还原了,再试下一个

  1. 关闭DNS反向解析

    1
    2
    3
    4
    5
    vi /etc/ssh/sshd_config
    UseDNS=no

    重启验证,不行的话要改回来!!!
    service sshd restart
  2. 关闭GSS认证

    1
    2
    3
    4
    5
    # vi /etc/ssh/sshd_config
    GSSAPIAuthentication no

    重启验证,不行的话要改回来!!!
    service sshd restart

7. fzf-模糊查找神器

1
2
3
4
5
6
7
8
9
10
11
apt install fzf

根据readme添加环境变量
more /usr/share/doc/fzf/README.Debian
Bash
====

Append this line to ~/.bashrc to enable fzf keybindings for Bash:

source /usr/share/doc/fzf/examples/key-bindings.bash

----- The End -----
0%
esxi+openwrt+dsm+homeassistant 软路由 all in one | 随言碎语

随言碎语

咕叽咕叽

esxi+openwrt+dsm+homeassistant 软路由 all in one

软路由 all in one,在J425小主机上安装esxi+openwrt+dsm+homeassistant,集软路由、网盘、智能家居控制于一体。

硬件介绍

去年入手的J4125小主机一台,长这个样子:

image-20230422170240090

image-20230422170311036

一直没空去折腾它,最近终于下定决心来搞一搞。计划把之前在树莓派上体验的项目放到这台机器上,由此开始了all in one 的折腾之旅。

软件安装

  1. esxi8.0安装
  2. esxi常规配置
  3. esxi+openwrt作为旁路由
  4. esxi安装群晖dsm7.1
  5. esxi安装homeassistant
----- The End -----
0%
esxi+openwrt+dsm+homeassistant 软路由 all in one | 随言碎语

随言碎语

咕叽咕叽

esxi+openwrt+dsm+homeassistant 软路由 all in one

软路由 all in one,在J425小主机上安装esxi+openwrt+dsm+homeassistant,集软路由、网盘、智能家居控制于一体。

硬件介绍

去年入手的J4125小主机一台,长这个样子:

image-20230422170240090

image-20230422170311036

一直没空去折腾它,最近终于下定决心来搞一搞。计划把之前在树莓派上体验的项目放到这台机器上,由此开始了all in one 的折腾之旅。

软件安装

  1. esxi8.0安装
  2. esxi常规配置
  3. esxi+openwrt作为旁路由
  4. esxi安装群晖dsm7.1
  5. esxi安装homeassistant
----- The End -----
0%
随身WiFi刷debian系统 | 随言碎语

随身WiFi刷debian系统

近期随身WiFi大幅度降价,9.9就能入手一个,虽然其流量套餐比较坑,当时把它刷成便携式的linux服务器,装个docker跑一些微服务是真的香o()o

1.准备

软件:

  • 9008免签名驱动.exe
  • miko.exe
  • OpenStick (base.zip和debian.zip)

硬件:

  • 随身wifi (高通410 256M+4G )棒子一个,9.9这价格是真的香,运气好话还能买到 1G+8GB版本的

    image-20230427100309880

2.安装

1. 安装9008免签名驱动

1
直接双击 9008免签名驱动.exe 安装即可

2. 安装miko

1
2
1.先安装MiKo/miko.exe
2.安装完成后,将MiKo/Loader.exe 复制到安装目录

3.备份随身WiFi原本的固件

  1. 按住随身WiFi上的还原按钮,插入到电脑上

    image-20230427101124198

  2. 打开设备管理器,端口(COM和LPT)中有 Qualcomm HS-USB QDLoader 9008(COM5)即可

    image-20230427101424659

  3. 打开Loader.exe,点击菜单栏 Read-->Partition Back/Erase

    image-20230427101628994

  4. 查看设备信息,点击 Load Partition Structure,在右侧会出现设配信息

    image-20230427101943062

  5. 备份固件,点击Read Full Image,选择存储位置和名称等待备份结束

    image-20230427102327166

4.刷入debian

  1. 拔下随身WiFi,重新插上去(不按按钮)

  2. 解压base.zipdebian.zip

    1
    2
    如何获取最新的base.zip和debian.zip?
    https://github.com/OpenStick/OpenStick/releases
  3. 进入base目录,鼠标右键-在此处打开cmd

    1
    adb reboot bootloader
  4. 打开设备管理器,有ADB Interface即可

    image-20230427103030209

  5. 开始刷入base基础包,双击base/flash.bat,按照要求运行即可

    image-20230427103632714

  6. 开始刷入debian系统包,进入debian的解压目录吗,双击debian/flash.bat,按照要求运行即可

  7. 全部刷完后,再次拔插一下

  8. 打开设别管理器,其他设别中有RNDIS或者是未知设备

    image-20230427104239294

  9. 右键更新驱动程序-》浏览我的电脑以查找驱动程序-》让我从计算机的可用驱动程序列表中选取

  10. 从列表中选择 网络适配器

  11. 厂商选择 Microsoft,型号选择 基于远程的NDIS的Internet共享设备

    image-20230427104506570

  12. 打开网路连接,会多出一个网卡

    image-20230427104734239

  13. 看一下它的网关地址,这个地址就是设备的地址

    image-20230427105111396

  14. 只用ssh连接192.168.1.1

    默认用户名/密码:user/1

    image-20230427105617838

至此,debian已经安装完成了

3. 使用

按照使用的方式区分:

一是插在电脑上,相当于是作为虚拟机似的来使用,不需要别人来访问它。

二是插在电源上,作为单独的一套设备。

3.1 插在电脑上使用的方式

3.1.1 配置PC网络

  1. 找到可以正常上网的网卡,将其网络共享给随身WiFi的网卡

    image-20230427110737057

  2. 打开随身WiFi的网卡,将其ip地址改成静态的

    image-20230427111127142

    • 注意网关是设备的ip,确定后会有提示信息,不用理睬直接点击是
  3. 多等一会儿,等ping 192.168.68.1通了之后,ssh连接设备

3.1.2 配置debian的网络

  1. 登陆后,配置默认网关路由信息(临时,重启后失效):

    1
    2
    3
    root@openstick:~# route add default gw 192.168.68.120  

    --192.168.68.120 这个地址就是上一步的那个网卡地址,这里的意思就是让他们两个互相为对方的网关。电脑通过68.1连接设备,设备通过68.120来连接互联网。
  2. 配置DNS

    1
    2
    3
    root@openstick:~# vim /etc/resolv.conf

    nameserver 8.8.8.8
  3. 确认是可以上网的

    1
    root@openstick:~# ping www.baidu.com
  4. 确认无误后,将添加路由信息加入到开机启动项中,以后默认就是68.120

    1
    2
    3
    4
    如何加入开机启动项:
    root@openstick:~# vim /etc/rc.local

    route add default gw 192.168.68.120

    如果开机启动不生效,见之前的博客:
    解决linux的开机启动不生效

3.2 插在电源上使用的方式

3.2.1 设备连接wifi

  1. 切换管理员用户,并进入网络管理页面

    1
    2
    3
    4
    5
    6
    # 切换管理员用户
    user@openstick:~$ sudo -i
    [sudo] password for user: --输入密码

    #进入网络管理
    root@openstick:~# nmtui
  2. 选择WiFi配置上网信息

    image-20230427114917648

    image-20230427115016041

    image-20230427115123005

    image-20230427115247753

  3. 查看连接WiFi后获取到的ip地址、

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    root@openstick:~# ifconfig
    ...
    ...

    wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 10.1.100.121 netmask 255.255.255.0 broadcast 10.1.100.1
    inet6 fe80::6f60:8eb6:55e3:b83 prefixlen 64 scopeid 0x20<link>
    inet6 2408:823d:815:8d51:d0a3:a2d3:8e90:7f9f prefixlen 64 scopeid 0x0<global>
    ether 42:b3:7b:a4:a4:6b txqueuelen 1000 (Ethernet)
    RX packets 28143 bytes 2566655 (2.4 MiB)
    RX errors 0 dropped 11 overruns 0 frame 0
    TX packets 22951 bytes 3389767 (3.2 MiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


    10.1.100.121 --这个就是无线路由器分配给你的地址,可以在路由器上绑定这个地址
  4. 拔下设备,将设备加入到 充电器 等供电设备上,直接ssh 连接 10.1.100.121 即可连接设备

4.问题

1. 修复mobian源并安装基础软件

1
2
3
4
5
6
7
8
apt update
apt install curl vim wget

echo "deb http://repo.mobian-project.org/ bookworm main non-free" > /etc/apt/sources.list.d/mobian.list

curl -s https://repo.mobian.org/mobian.gpg > /etc/apt/trusted.gpg.d/mobian.gpg

apt update

2.配置ll命令和文件夹颜色显示

1
vim ~/.bashrc

3. 配置系统时间

1
2
dpkg-reconfigure tzdata
选6.然后选70(亚洲 上海)

4.docker安装

见 之前的博客 debian安装docker

----- The End -----
0%
随身WiFi刷debian系统 | 随言碎语

随身WiFi刷debian系统

近期随身WiFi大幅度降价,9.9就能入手一个,虽然其流量套餐比较坑,当时把它刷成便携式的linux服务器,装个docker跑一些微服务是真的香o()o

1.准备

软件:

  • 9008免签名驱动.exe
  • miko.exe
  • OpenStick (base.zip和debian.zip)

硬件:

  • 随身wifi (高通410 256M+4G )棒子一个,9.9这价格是真的香,运气好话还能买到 1G+8GB版本的

    image-20230427100309880

2.安装

1. 安装9008免签名驱动

1
直接双击 9008免签名驱动.exe 安装即可

2. 安装miko

1
2
1.先安装MiKo/miko.exe
2.安装完成后,将MiKo/Loader.exe 复制到安装目录

3.备份随身WiFi原本的固件

  1. 按住随身WiFi上的还原按钮,插入到电脑上

    image-20230427101124198

  2. 打开设备管理器,端口(COM和LPT)中有 Qualcomm HS-USB QDLoader 9008(COM5)即可

    image-20230427101424659

  3. 打开Loader.exe,点击菜单栏 Read-->Partition Back/Erase

    image-20230427101628994

  4. 查看设备信息,点击 Load Partition Structure,在右侧会出现设配信息

    image-20230427101943062

  5. 备份固件,点击Read Full Image,选择存储位置和名称等待备份结束

    image-20230427102327166

4.刷入debian

  1. 拔下随身WiFi,重新插上去(不按按钮)

  2. 解压base.zipdebian.zip

    1
    2
    如何获取最新的base.zip和debian.zip?
    https://github.com/OpenStick/OpenStick/releases
  3. 进入base目录,鼠标右键-在此处打开cmd

    1
    adb reboot bootloader
  4. 打开设备管理器,有ADB Interface即可

    image-20230427103030209

  5. 开始刷入base基础包,双击base/flash.bat,按照要求运行即可

    image-20230427103632714

  6. 开始刷入debian系统包,进入debian的解压目录吗,双击debian/flash.bat,按照要求运行即可

  7. 全部刷完后,再次拔插一下

  8. 打开设别管理器,其他设别中有RNDIS或者是未知设备

    image-20230427104239294

  9. 右键更新驱动程序-》浏览我的电脑以查找驱动程序-》让我从计算机的可用驱动程序列表中选取

  10. 从列表中选择 网络适配器

  11. 厂商选择 Microsoft,型号选择 基于远程的NDIS的Internet共享设备

    image-20230427104506570

  12. 打开网路连接,会多出一个网卡

    image-20230427104734239

  13. 看一下它的网关地址,这个地址就是设备的地址

    image-20230427105111396

  14. 只用ssh连接192.168.1.1

    默认用户名/密码:user/1

    image-20230427105617838

至此,debian已经安装完成了

3. 使用

按照使用的方式区分:

一是插在电脑上,相当于是作为虚拟机似的来使用,不需要别人来访问它。

二是插在电源上,作为单独的一套设备。

3.1 插在电脑上使用的方式

3.1.1 配置PC网络

  1. 找到可以正常上网的网卡,将其网络共享给随身WiFi的网卡

    image-20230427110737057

  2. 打开随身WiFi的网卡,将其ip地址改成静态的

    image-20230427111127142

    • 注意网关是设备的ip,确定后会有提示信息,不用理睬直接点击是
  3. 多等一会儿,等ping 192.168.68.1通了之后,ssh连接设备

3.1.2 配置debian的网络

  1. 登陆后,配置默认网关路由信息(临时,重启后失效):

    1
    2
    3
    root@openstick:~# route add default gw 192.168.68.120  

    --192.168.68.120 这个地址就是上一步的那个网卡地址,这里的意思就是让他们两个互相为对方的网关。电脑通过68.1连接设备,设备通过68.120来连接互联网。
  2. 配置DNS

    1
    2
    3
    root@openstick:~# vim /etc/resolv.conf

    nameserver 8.8.8.8
  3. 确认是可以上网的

    1
    root@openstick:~# ping www.baidu.com
  4. 确认无误后,将添加路由信息加入到开机启动项中,以后默认就是68.120

    1
    2
    3
    4
    如何加入开机启动项:
    root@openstick:~# vim /etc/rc.local

    route add default gw 192.168.68.120

    如果开机启动不生效,见之前的博客:
    解决linux的开机启动不生效

3.2 插在电源上使用的方式

3.2.1 设备连接wifi

  1. 切换管理员用户,并进入网络管理页面

    1
    2
    3
    4
    5
    6
    # 切换管理员用户
    user@openstick:~$ sudo -i
    [sudo] password for user: --输入密码

    #进入网络管理
    root@openstick:~# nmtui
  2. 选择WiFi配置上网信息

    image-20230427114917648

    image-20230427115016041

    image-20230427115123005

    image-20230427115247753

  3. 查看连接WiFi后获取到的ip地址、

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    root@openstick:~# ifconfig
    ...
    ...

    wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 10.1.100.121 netmask 255.255.255.0 broadcast 10.1.100.1
    inet6 fe80::6f60:8eb6:55e3:b83 prefixlen 64 scopeid 0x20<link>
    inet6 2408:823d:815:8d51:d0a3:a2d3:8e90:7f9f prefixlen 64 scopeid 0x0<global>
    ether 42:b3:7b:a4:a4:6b txqueuelen 1000 (Ethernet)
    RX packets 28143 bytes 2566655 (2.4 MiB)
    RX errors 0 dropped 11 overruns 0 frame 0
    TX packets 22951 bytes 3389767 (3.2 MiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


    10.1.100.121 --这个就是无线路由器分配给你的地址,可以在路由器上绑定这个地址
  4. 拔下设备,将设备加入到 充电器 等供电设备上,直接ssh 连接 10.1.100.121 即可连接设备

4.问题

1. 修复mobian源并安装基础软件

1
2
3
4
5
6
7
8
apt update
apt install curl vim wget

echo "deb http://repo.mobian-project.org/ bookworm main non-free" > /etc/apt/sources.list.d/mobian.list

curl -s https://repo.mobian.org/mobian.gpg > /etc/apt/trusted.gpg.d/mobian.gpg

apt update

2.配置ll命令和文件夹颜色显示

1
vim ~/.bashrc

3. 配置系统时间

1
2
dpkg-reconfigure tzdata
选6.然后选70(亚洲 上海)

4.docker安装

见 之前的博客 debian安装docker

----- The End -----
0%
阿里OSS+Picgo+Typora搭建图床 | 随言碎语

阿里OSS+Picgo+Typora搭建图床

基于阿里OSS的图床搭建,以及picgo和Typora的设置

1. 准备工具

  • 阿里OSS 用来存储和提供图床服务,选择原因是便宜稳定。
  • Picgo 图床上传工具
  • Typora 非常好用的markdown编辑器,与Picgo配合能够实现黏贴图片是自动上传到图床,并显示的是图床的地址。

2. 购买阿里OSS并配置

  1. 打开阿里云官网,进入到对象存储OSS的购买页面

    image-20230423183847666

  2. 点击立即购买

    image-20230423183940509

  3. 选择购买的类型、地域、存储规格和时长,确认价格提交订单支付即可。

    image-20230423184153251

  4. 购买成功后,进入控制台,创建bucket

    image-20230423184549323

  5. 根据下图创建即可

    image-20230423184858134

3. 配置PicGo

image-20230423185144192

配置说明:

  1. 图床配置名称:这个图床的名称

  2. 设定KeyId 和 设定KeySecret,到阿里云找

    到阿里云页面,点击右上角头像,选择AccessKey管理

    image-20230423185755868

    创建Acesskey或者使用已有的,将得到的KeyId和KeySecret填入Picgo中即可

    image-20230423185951960

  3. 设定bucket 和 设定存储区域,就是上面在创建Bucket的时候显示的

    image-20230423190628016

  4. 其他的可不填

4.配置Tyora

粘贴图片到文章时直接上传至OOS,按下图配置即可,可以通过验证图片上传选项查看是否配置成功

image-20230423191010929

----- The End -----
0%
阿里OSS+Picgo+Typora搭建图床 | 随言碎语

阿里OSS+Picgo+Typora搭建图床

基于阿里OSS的图床搭建,以及picgo和Typora的设置

1. 准备工具

  • 阿里OSS 用来存储和提供图床服务,选择原因是便宜稳定。
  • Picgo 图床上传工具
  • Typora 非常好用的markdown编辑器,与Picgo配合能够实现黏贴图片是自动上传到图床,并显示的是图床的地址。

2. 购买阿里OSS并配置

  1. 打开阿里云官网,进入到对象存储OSS的购买页面

    image-20230423183847666

  2. 点击立即购买

    image-20230423183940509

  3. 选择购买的类型、地域、存储规格和时长,确认价格提交订单支付即可。

    image-20230423184153251

  4. 购买成功后,进入控制台,创建bucket

    image-20230423184549323

  5. 根据下图创建即可

    image-20230423184858134

3. 配置PicGo

image-20230423185144192

配置说明:

  1. 图床配置名称:这个图床的名称

  2. 设定KeyId 和 设定KeySecret,到阿里云找

    到阿里云页面,点击右上角头像,选择AccessKey管理

    image-20230423185755868

    创建Acesskey或者使用已有的,将得到的KeyId和KeySecret填入Picgo中即可

    image-20230423185951960

  3. 设定bucket 和 设定存储区域,就是上面在创建Bucket的时候显示的

    image-20230423190628016

  4. 其他的可不填

4.配置Tyora

粘贴图片到文章时直接上传至OOS,按下图配置即可,可以通过验证图片上传选项查看是否配置成功

image-20230423191010929

----- The End -----
0%
docker+nginx反向代理做统一出入口 | 随言碎语

随言碎语

咕叽咕叽

docker+nginx反向代理做统一出入口

使用nginx反向代理docker容器的服务,从而避免暴露过多的端口

nginx的安装见 之前的博客 docker搭建nginx

预期效果:
只有nginx和主机进行了端口映射,其他容器都没有映射。全部都由nginx去转发到对应的应用上去。

1
2
3
4
5
6
7
8
9
10

[root@zmr-service ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4bc7425371cb lizheming/waline:1.30.4 "docker-entrypoint.s…" 22 hours ago Up 22 hours 8360/tcp waline
af3b2f1b7892 nginx:1.24.0 "/docker-entrypoint.…" 39 hours ago Up 24 hours 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx
60ba55559d39 snowdreamtech/frpc:0.48.0 "/bin/sh -c '/usr/bi…" 13 days ago Up 24 hours frpc
61e4f29b5ebc gitea/gitea:1.19.0 "/usr/bin/entrypoint…" 2 weeks ago Up 38 hours 22/tcp, 3000/tcp gitea
413621548b9a mysql/mysql-server:8.0.32 "/entrypoint.sh --de…" 2 weeks ago Up 38 hours (healthy) 3306/tcp, 33060-33061/tcp mysql8
[root@zmr-service ~]#

  1. 核心就是所有的docker容器都使用相同的网络。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 创建网卡
    docker network create -d bridge app_net

    [root@zmr-service ~]# docker network ls
    NETWORK ID NAME DRIVER SCOPE
    391b4ed84d89 app_net bridge local
    fab5d9edb87f bridge bridge local
    e976eb0945b9 host host local
    fa4d4514eb40 none null local
  2. 然后所有的docker-compose.yml中都指定使用这个网卡:

    nginx的docker-compose.yml为例,其它容器也都使用相同的网络配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    [root@zmr-service nginx]# cat docker-compose.yml
    version: "3"

    services:
    nginx:
    container_name: nginx
    image: nginx:1.24.0
    restart: always
    ports: # 其他容器将ports全部都注释掉,表示不映射端口
    - 80:80
    - 443:443
    volumes:
    - /opt/docker-data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
    - /opt/docker-data/nginx/www:/home/www
    - /opt/docker-data/nginx/logs:/var/log/nginx
    - /opt/docker-data/nginx/conf/conf.d:/etc/nginx/conf.d
    - /opt/docker-data/nginx/html:/usr/share/nginx/html
    # 这里指定使用的网络
    networks:
    - app_net

    # 这里指定使用的网络
    networks:
    app_net:
    external: true
  3. nginx做反向代理的配置

先确认能nginx容器和其他容器都是通的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@zmr-service conf.d]# docker exec -it nginx ping gitea
PING gitea (172.25.0.4): 56 data bytes
64 bytes from 172.25.0.4: icmp_seq=0 ttl=64 time=0.190 ms
64 bytes from 172.25.0.4: icmp_seq=1 ttl=64 time=0.134 ms
64 bytes from 172.25.0.4: icmp_seq=2 ttl=64 time=0.148 ms
64 bytes from 172.25.0.4: icmp_seq=3 ttl=64 time=0.133 ms
64 bytes from 172.25.0.4: icmp_seq=4 ttl=64 time=0.128 ms
64 bytes from 172.25.0.4: icmp_seq=5 ttl=64 time=0.130 ms
64 bytes from 172.25.0.4: icmp_seq=6 ttl=64 time=0.131 ms
64 bytes from 172.25.0.4: icmp_seq=7 ttl=64 time=0.130 ms

[root@zmr-service conf.d]# docker exec -it nginx ping waline
PING waline (172.25.0.5): 56 data bytes
64 bytes from 172.25.0.5: icmp_seq=0 ttl=64 time=0.261 ms
64 bytes from 172.25.0.5: icmp_seq=1 ttl=64 time=0.136 ms
64 bytes from 172.25.0.5: icmp_seq=2 ttl=64 time=0.139 ms

配置nginx反向代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
[root@zmr-service conf.d]# cat app.conf

upstream gitea {
server gitea:3000;
}

upstream waline {
server waline:8360;
}



server {
listen 443 ssl;
server_name waline.test.com; #当访问https://waline.test.com ,会将其转发到 waline:8360

ssl_certificate /etc/nginx/conf.d/ssl/fullchain1.pem;
ssl_certificate_key /etc/nginx/conf.d/ssl/privkey1.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";

set_real_ip_from waline.test.com;
real_ip_header X-Forwarded-For;
real_ip_recursive on;

location /{
proxy_pass http://waline; #转发的地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
# cache
add_header Cache-Control no-cache;
expires 12h;
}
}


server {
listen 443 ssl;
server_name gitea.test.com; #当访问https://gitea.test.com ,会将其转发到 gitea:3000

ssl_certificate /etc/nginx/conf.d/ssl/fullchain1.pem;
ssl_certificate_key /etc/nginx/conf.d/ssl/privkey1.pem;

location /{
client_max_body_size 128m;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://gitea; #转发的地址
}
}


----- The End -----
0%
docker+nginx反向代理做统一出入口 | 随言碎语

随言碎语

咕叽咕叽

docker+nginx反向代理做统一出入口

使用nginx反向代理docker容器的服务,从而避免暴露过多的端口

nginx的安装见 之前的博客 docker搭建nginx

预期效果:
只有nginx和主机进行了端口映射,其他容器都没有映射。全部都由nginx去转发到对应的应用上去。

1
2
3
4
5
6
7
8
9
10

[root@zmr-service ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4bc7425371cb lizheming/waline:1.30.4 "docker-entrypoint.s…" 22 hours ago Up 22 hours 8360/tcp waline
af3b2f1b7892 nginx:1.24.0 "/docker-entrypoint.…" 39 hours ago Up 24 hours 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx
60ba55559d39 snowdreamtech/frpc:0.48.0 "/bin/sh -c '/usr/bi…" 13 days ago Up 24 hours frpc
61e4f29b5ebc gitea/gitea:1.19.0 "/usr/bin/entrypoint…" 2 weeks ago Up 38 hours 22/tcp, 3000/tcp gitea
413621548b9a mysql/mysql-server:8.0.32 "/entrypoint.sh --de…" 2 weeks ago Up 38 hours (healthy) 3306/tcp, 33060-33061/tcp mysql8
[root@zmr-service ~]#

  1. 核心就是所有的docker容器都使用相同的网络。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 创建网卡
    docker network create -d bridge app_net

    [root@zmr-service ~]# docker network ls
    NETWORK ID NAME DRIVER SCOPE
    391b4ed84d89 app_net bridge local
    fab5d9edb87f bridge bridge local
    e976eb0945b9 host host local
    fa4d4514eb40 none null local
  2. 然后所有的docker-compose.yml中都指定使用这个网卡:

    nginx的docker-compose.yml为例,其它容器也都使用相同的网络配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    [root@zmr-service nginx]# cat docker-compose.yml
    version: "3"

    services:
    nginx:
    container_name: nginx
    image: nginx:1.24.0
    restart: always
    ports: # 其他容器将ports全部都注释掉,表示不映射端口
    - 80:80
    - 443:443
    volumes:
    - /opt/docker-data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
    - /opt/docker-data/nginx/www:/home/www
    - /opt/docker-data/nginx/logs:/var/log/nginx
    - /opt/docker-data/nginx/conf/conf.d:/etc/nginx/conf.d
    - /opt/docker-data/nginx/html:/usr/share/nginx/html
    # 这里指定使用的网络
    networks:
    - app_net

    # 这里指定使用的网络
    networks:
    app_net:
    external: true
  3. nginx做反向代理的配置

先确认能nginx容器和其他容器都是通的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@zmr-service conf.d]# docker exec -it nginx ping gitea
PING gitea (172.25.0.4): 56 data bytes
64 bytes from 172.25.0.4: icmp_seq=0 ttl=64 time=0.190 ms
64 bytes from 172.25.0.4: icmp_seq=1 ttl=64 time=0.134 ms
64 bytes from 172.25.0.4: icmp_seq=2 ttl=64 time=0.148 ms
64 bytes from 172.25.0.4: icmp_seq=3 ttl=64 time=0.133 ms
64 bytes from 172.25.0.4: icmp_seq=4 ttl=64 time=0.128 ms
64 bytes from 172.25.0.4: icmp_seq=5 ttl=64 time=0.130 ms
64 bytes from 172.25.0.4: icmp_seq=6 ttl=64 time=0.131 ms
64 bytes from 172.25.0.4: icmp_seq=7 ttl=64 time=0.130 ms

[root@zmr-service conf.d]# docker exec -it nginx ping waline
PING waline (172.25.0.5): 56 data bytes
64 bytes from 172.25.0.5: icmp_seq=0 ttl=64 time=0.261 ms
64 bytes from 172.25.0.5: icmp_seq=1 ttl=64 time=0.136 ms
64 bytes from 172.25.0.5: icmp_seq=2 ttl=64 time=0.139 ms

配置nginx反向代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
[root@zmr-service conf.d]# cat app.conf

upstream gitea {
server gitea:3000;
}

upstream waline {
server waline:8360;
}



server {
listen 443 ssl;
server_name waline.test.com; #当访问https://waline.test.com ,会将其转发到 waline:8360

ssl_certificate /etc/nginx/conf.d/ssl/fullchain1.pem;
ssl_certificate_key /etc/nginx/conf.d/ssl/privkey1.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";

set_real_ip_from waline.test.com;
real_ip_header X-Forwarded-For;
real_ip_recursive on;

location /{
proxy_pass http://waline; #转发的地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
# cache
add_header Cache-Control no-cache;
expires 12h;
}
}


server {
listen 443 ssl;
server_name gitea.test.com; #当访问https://gitea.test.com ,会将其转发到 gitea:3000

ssl_certificate /etc/nginx/conf.d/ssl/fullchain1.pem;
ssl_certificate_key /etc/nginx/conf.d/ssl/privkey1.pem;

location /{
client_max_body_size 128m;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://gitea; #转发的地址
}
}


----- The End -----
0%
归档 | 随言碎语

随言碎语

咕叽咕叽

0%
归档 | 随言碎语

随言碎语

咕叽咕叽

0%
归档 | 随言碎语

随言碎语

咕叽咕叽

0%
归档 | 随言碎语

随言碎语

咕叽咕叽

0%
归档 | 随言碎语

随言碎语

咕叽咕叽

0%
归档 | 随言碎语

随言碎语

咕叽咕叽

0%
随言碎语

随言碎语

咕叽咕叽

近期随身WiFi大幅度降价,9.9就能入手一个,虽然其流量套餐比较坑,当时把它刷成便携式的linux服务器,装个docker跑一些微服务是真的香o()o

阅读全文 »

esxi修改网卡顺序、网卡直通、修改安全策略、开机自动启动虚拟机。

阅读全文 »
0%
随言碎语

随言碎语

咕叽咕叽

近期随身WiFi大幅度降价,9.9就能入手一个,虽然其流量套餐比较坑,当时把它刷成便携式的linux服务器,装个docker跑一些微服务是真的香o()o

阅读全文 »

esxi修改网卡顺序、网卡直通、修改安全策略、开机自动启动虚拟机。

阅读全文 »
0%
标签: Picgo | 随言碎语

随言碎语

咕叽咕叽

0%
标签: Picgo | 随言碎语

随言碎语

咕叽咕叽

0%
标签: Typora | 随言碎语

随言碎语

咕叽咕叽

0%
标签: Typora | 随言碎语

随言碎语

咕叽咕叽

0%
标签: DSM | 随言碎语

随言碎语

咕叽咕叽

DSM 标签

2023

0%
标签: dsm | 随言碎语

随言碎语

咕叽咕叽

0%
标签: 图床 | 随言碎语

随言碎语

咕叽咕叽

0%
标签: 图床 | 随言碎语

随言碎语

咕叽咕叽

0%
标签: 阿里OSS | 随言碎语

随言碎语

咕叽咕叽

阿里OSS 标签

2023

0%
标签: 阿里OSS | 随言碎语

随言碎语

咕叽咕叽

阿里OSS 标签

2023

0%
碎碎念念 | 随言碎语

随言碎语

咕叽咕叽

碎碎念念

一些诗词摘抄、一些美言佳句、一些感悟、还有一些emo…

碎碎念念 | 随言碎语

随言碎语

咕叽咕叽

碎碎念念

一些诗词摘抄、一些美言佳句、一些感悟、还有一些emo…

时间轴

2023-4-27 [随笔]

你不知道今天的云有多美,我想到的第一件事情是拍照发给你,可是突然想起来,我们已经很久不联系了。我突然又觉得,其实云没那么好看了。但是我还是把云拍了下来,万一有一天咱俩偶然之下有了联系,这样就有了“那天的云很美”的话题,这样你也就能知道那天的云很美,那天的我也很想你。

2023-4-02 [诗词]

我将玫瑰藏于身后,
风起花落,
从此鲜花赠自己,
纵马踏花向自由。
从此不再问候,
纵使你阅人何其多,
也再无一人恰似我。

2023-3-25 [歌曲] 张杰《想见你想见你想见你》

想见你只想见你
未来过去我只想见你
穿越了千个万个时间线里
人海里相依
用尽了逻辑心机
推理爱情最难解的谜
会不会你也和我一样
在等待一句我愿意

2023-3-16 [随笔]

好想和你走在傍晚的这种小路上的🤪

2023-3-14 [佳句] 罗翔

我知道我是如此爱她,我也知道她是我一生挚爱,但是我放弃了。我为什么放弃了?不是因为她不好,也不是因为我不爱她,而是因为我放弃了,我被迫放弃了。 --罗翔

2023-2-25 [诗词]

晚风吹人醒,万事藏于心。

2023-2-20 [歌曲] 五月天《温柔》

天边风光,身边的我,都不在你眼中
你的眼中藏着什么,我从来都不懂
没有关系,你的世界就让你拥有
不打扰,是我的温柔

2023-2-14 [emo]

一个人并不可怕,可怕的是有个人突然闯进你的生活,得也得不到, 忘也忘了掉,进一步没资格,退一步舍不得, 连吃醋都要名不正言不顺

2022-1-30 [emo]

再遇到喜欢的人,想来只觉得非常遗憾,早几年遇见就好了,那些热烈,欢喜,年少轻狂和桀骜不驯连同整个世界都想要送给你。可你来的太晚了,我已经学会了一个人送走落日,一个人等待星光,我的热烈早已在无数个孤立无援的时刻里消耗殆尽。

2022-11-20 [诗词]《下雨和见你》

《下雨和见你》
世界上美好的东西不太多,
傍晚从河畔吹来的微风,
远在天边的晚霞,
和二十来岁笑起来要人命的你。

2022-07-11 [诗词]

指如削葱根,口如含朱丹。纤纤作细步,精妙世无双。

2022-7-03 [歌曲] 五月天

你 不在乎我的过往
看到了我的翅膀
你说被火烧过
才能出现凤凰
逆风的方向 更适合飞翔
我不怕千万人阻挡
只怕自己投降

2022-2-6 [句子] 央视文案

  1. 从此烟雨落金城,一人撑伞两人行。
  2. 是微风,是晚霞,是无可替代。
  3. 初见乍欢,久处亦怦然。
  4. 万千荣耀不如日日晨昏中的琐细
  5. 鸿是江边鸟,你是心上人。
  6. 遇见你仿佛是一种神奇的安排,他是一切的开始。
  7. 幸得识卿桃花面,从此阡陌多暖春。
  8. 深深的话我们浅浅说,长长的路我们满满走。
  9. 我曾踏月而来,只因你在山中。
  10. 朝暮与岁月并往,与你一同行至天光。
  11. 你是我的半截诗,不允许别人更改一个字。
  12. 浪漫的东西不是昙花一现,而是持之以恒。
  13. 海上月是天上月,眼前人是心上人。
  14. 落俗不可避免,浪漫至死不渝。
  15. 山海远阔,人间星河,无一是你,无一不是你。
  16. 始于初见,止于终老。
  17. 你是我绕过人间烟海,才找到的人间烟火。

2021-12-30 [诗词] <<假如我们坐在世界的屋脊>>

<<假如我们坐在世界的屋脊>>
这种速度有些不真实,缓慢,仿佛不曾发生
消失的太阳
头发一天比一天衰老
我们去西藏
面对蓝天和云朵,试图去妥协
那么,窗户挡不住时间的伤
没有丝毫停顿,阳光比远方和异乡更遥远
请记得旅途和远景
请记得回忆和幸福
早晨和夜晚很刻意,它们永远不会看见彼此
人间四月,花朵越开越美
何时才能到达?看看少数人的愿望,和我们的蓝天

2021-10-22 [歌曲] 《山茶花读不懂白玫瑰》

山茶花 读不懂白玫瑰
北山的风吹不到南山尾
你羡慕我孤独的纯粹
我羡慕你总会有人陪

2021-5-30 [诗词] <<死在火星上>>

<<死在火星上>>

我终将死亡,
在群星闪耀的夜晚,
请将我埋葬。
不要问我从何处来,
来处遥隔千万里,
不要问我往哪里去,
前途无尽路茫茫,
不要为我悲伤,不要为我哭泣,
终有一日,
春风拂过,
枯木上会开出鲜艳的花,
你一定要来看看我啊,
当那一天来临,
我的墓碑上会有翠鸟张开翅膀,
撒下一片阳光。
当那一天来临,
请带上我的双眼,
穿越亿万光年的漫漫长河,
抵达宇宙的尽头,
你会看到那颗黯淡的蓝点,
在此处,
请将我的灵魂放逐。
如果你要问,
这是哪儿啊?
遥望一亿五千万平方公里的辽阔土地,
我会告诉你啊,
这是我的家园。

2021-03-25 [诗词]

本是青灯不归客,却因浊酒恋红尘。

2021-01-24 [音乐]

0%

时间轴

2021-05-05 [诗词] <<半字诗>>

半师半友半知己,半慕半尊半倾心。

2021-05-03 [诗词] <<花月痕 第三回>>

最是凝眸无限意,似曾相识在前生。

2023-4-27 [随笔]

你不知道今天的云有多美,我想到的第一件事情是拍照发给你,可是突然想起来,我们已经很久不联系了。我突然又觉得,其实云没那么好看了。但是我还是把云拍了下来,万一有一天咱俩偶然之下有了联系,这样就有了“那天的云很美”的话题,这样你也就能知道那天的云很美,那天的我也很想你。

2023-4-02 [诗词]

我将玫瑰藏于身后,
风起花落,
从此鲜花赠自己,
纵马踏花向自由。
从此不再问候,
纵使你阅人何其多,
也再无一人恰似我。

2023-3-25 [歌曲] 张杰《想见你想见你想见你》

想见你只想见你
未来过去我只想见你
穿越了千个万个时间线里
人海里相依
用尽了逻辑心机
推理爱情最难解的谜
会不会你也和我一样
在等待一句我愿意

2023-3-16 [随笔]

好想和你走在傍晚的这种小路上的🤪

2023-3-14 [佳句] 罗翔

我知道我是如此爱她,我也知道她是我一生挚爱,但是我放弃了。我为什么放弃了?不是因为她不好,也不是因为我不爱她,而是因为我放弃了,我被迫放弃了。 --罗翔

2023-2-25 [诗词]

晚风吹人醒,万事藏于心。

2023-2-20 [歌曲] 五月天《温柔》

天边风光,身边的我,都不在你眼中
你的眼中藏着什么,我从来都不懂
没有关系,你的世界就让你拥有
不打扰,是我的温柔

2023-2-14 [emo]

一个人并不可怕,可怕的是有个人突然闯进你的生活,得也得不到, 忘也忘了掉,进一步没资格,退一步舍不得, 连吃醋都要名不正言不顺

2022-1-30 [emo]

再遇到喜欢的人,想来只觉得非常遗憾,早几年遇见就好了,那些热烈,欢喜,年少轻狂和桀骜不驯连同整个世界都想要送给你。可你来的太晚了,我已经学会了一个人送走落日,一个人等待星光,我的热烈早已在无数个孤立无援的时刻里消耗殆尽。

2022-11-20 [诗词]《下雨和见你》

《下雨和见你》
世界上美好的东西不太多,
傍晚从河畔吹来的微风,
远在天边的晚霞,
和二十来岁笑起来要人命的你。

2022-07-11 [诗词]

指如削葱根,口如含朱丹。纤纤作细步,精妙世无双。

2022-7-03 [歌曲] 五月天

你 不在乎我的过往
看到了我的翅膀
你说被火烧过
才能出现凤凰
逆风的方向 更适合飞翔
我不怕千万人阻挡
只怕自己投降

2022-2-6 [句子] 央视文案

  1. 从此烟雨落金城,一人撑伞两人行。
  2. 是微风,是晚霞,是无可替代。
  3. 初见乍欢,久处亦怦然。
  4. 万千荣耀不如日日晨昏中的琐细
  5. 鸿是江边鸟,你是心上人。
  6. 遇见你仿佛是一种神奇的安排,他是一切的开始。
  7. 幸得识卿桃花面,从此阡陌多暖春。
  8. 深深的话我们浅浅说,长长的路我们满满走。
  9. 我曾踏月而来,只因你在山中。
  10. 朝暮与岁月并往,与你一同行至天光。
  11. 你是我的半截诗,不允许别人更改一个字。
  12. 浪漫的东西不是昙花一现,而是持之以恒。
  13. 海上月是天上月,眼前人是心上人。
  14. 落俗不可避免,浪漫至死不渝。
  15. 山海远阔,人间星河,无一是你,无一不是你。
  16. 始于初见,止于终老。
  17. 你是我绕过人间烟海,才找到的人间烟火。

2021-12-30 [诗词] <<假如我们坐在世界的屋脊>>

<<假如我们坐在世界的屋脊>>
这种速度有些不真实,缓慢,仿佛不曾发生
消失的太阳
头发一天比一天衰老
我们去西藏
面对蓝天和云朵,试图去妥协
那么,窗户挡不住时间的伤
没有丝毫停顿,阳光比远方和异乡更遥远
请记得旅途和远景
请记得回忆和幸福
早晨和夜晚很刻意,它们永远不会看见彼此
人间四月,花朵越开越美
何时才能到达?看看少数人的愿望,和我们的蓝天

2021-10-22 [歌曲] 《山茶花读不懂白玫瑰》

山茶花 读不懂白玫瑰
北山的风吹不到南山尾
你羡慕我孤独的纯粹
我羡慕你总会有人陪

2021-5-30 [诗词] <<死在火星上>>

<<死在火星上>>

我终将死亡,
在群星闪耀的夜晚,
请将我埋葬。
不要问我从何处来,
来处遥隔千万里,
不要问我往哪里去,
前途无尽路茫茫,
不要为我悲伤,不要为我哭泣,
终有一日,
春风拂过,
枯木上会开出鲜艳的花,
你一定要来看看我啊,
当那一天来临,
我的墓碑上会有翠鸟张开翅膀,
撒下一片阳光。
当那一天来临,
请带上我的双眼,
穿越亿万光年的漫漫长河,
抵达宇宙的尽头,
你会看到那颗黯淡的蓝点,
在此处,
请将我的灵魂放逐。
如果你要问,
这是哪儿啊?
遥望一亿五千万平方公里的辽阔土地,
我会告诉你啊,
这是我的家园。

2021-03-25 [诗词]

本是青灯不归客,却因浊酒恋红尘。

2021-01-24 [音乐]

0%