Press "Enter" to skip to content

月与灯依旧 Posts

内网穿透: 使用ssh tunnel将内网主机映射到公网

如果希望将一台内网中的主机发布到公网(使用阿里云/腾讯云中转的方式), 使得该内网主机可以在全球任意地点被访问, 仅需要用到ssh即可. 用到的原理就是ssh的remote port forwarding特性, 具体可参考本博客之前写的简单解释 ssh 中的 local port forwarding 和 remote port forwarding.

假设我们已经有了一台阿里云/腾讯云的主机, 其公网IP是1.1.1.1, 需要在ssh配置里启用GatewayPorts(否则ssh tunnel建立以后只会监听127.0.0.1)

在我们的内网主机上写入一个systemd服务

sudo vim /etc/systemd/system/[email protected]    # 写入如下内容
[Unit]
Description=Persistent SSH Tunnel to from port 127.0.0.1:%i on this server to port 3389 on external server(1.1.1.1:3389)
After=network.target
 
[Service]
Environment="LOCAL_PORT=%i"
ExecStart=/usr/bin/ssh -NTC -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -R 3389:0.0.0.0:${LOCAL_PORT} [email protected]
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

参数解释:
T: 禁止分配伪终端
N: 不执行远程指令
C: 请求压缩所有数据

然后启用服务

sudo systemctl daemon-reload
sudo systemctl enable ssh-tunnel@22 --now

然后就可以通过1.1.1.1:3389来访问这台内网主机的22端口了.

参考文档: README-setup-tunnel-as-systemd-service.md

2 Comments

简单评价surface laptop go

是的, 买了个surface laptop go, 来自微软官方商城的翻新产品, 十代i5, 8+128的配置, 2799的价格拿下.

外观图片我就不放了, 网上一大堆, 性能啥的也不再多说, 处理器的性能网上都是可查的. 这里简单写一下我认为的这个本子的优缺点吧.

advantages

  • 田牌LOGO, 拿出去装X的时候逼格满满
  • 做工不错, 哪怕是塑料机身, 也能看出来这不是一般的塑料, 不是外面的野鸡本
  • 全帖合镜面屏幕, 不用担心落灰了, 这点对于有强迫症的我来说简直不要太好
  • 微软键盘比较好用.
  • 12.4寸的触屏, 加上1.1kg的体积, 真是又轻又薄, 满足对轻薄本的所有要求.
  • 可能是所有surface笔记本/平板里面最薄的边框了

disadvantages

  • 电池. 这一点真是最大败笔. 我进行了多次测试, 在将电池模式设置为倒数第二档(推荐模式)+80%的亮度时, 在youtube上观看了大约20分钟的视频, 下降了约8%的电量. 也就是说, 这台surface laptop go在满电的情况下, 最大只能坚持4小时. 在我后来的测试中, 如果大量浏览网页的话, 掉电会更快一些. 所以结论是, surface laptop go的实际续航在2-4小时之间. 这是将系统/固件更新到2022年1月25日的情况下得出的结论.
  • 屏幕亮度低. 据称最高只有320尼特. 我的直观感受告诉我80%的亮度是能接受的最低亮度了. 事实上在一些比较明亮的场合, 可能需要将亮度调整到100%
  • 分辩率低. 是的, 用惯了高分屏的人, 再用回颗粒感的屏幕, 会觉得有些不太舒服.

Conclusion

一直都觉得手上应该有个高逼格的本, 可以偶尔拿出去装X. 一直在surface系列和macbook air系列之间犹豫不决. 当然最重要的还是考虑到价格因素, 一直没有入手.

之前在顺电卖场摸过一些常见本. 对surface laptop go的外观一见倾心. 只论外观的话, 它是所有的surface产品里最符合我审美的一款产品. 只不过, 在顺电的时候, 没法详细的体验这款产品, 直到看到2799的官翻价, 才终于入手了.

一周的体验下来, 基本上也是对这个本有了一些了解. 如同网上说的那样, 这个本的优点和缺点都是非常明显的. 最令我震惊的还是电池的续航问题, 之前我经历过DELL/联想的多款笔记本, 都没有这么弱鸡的续航. 考虑到这一点, 我曾经在犹豫是不是要退掉这个surface laptop go, 后来朋友提醒了我, 看在它是一个2799的田牌产品, 不要想太多了.

一句话总结: 如果你只在意逼格+轻薄, 那它确实是一台相当不错的本. 但凡你对续航有一点要求的话, 那么它就不适合你.

这篇文章是在这台surface laptop go上面完成的.

1 Comment

OpenVZ vps 使用 snapd 部署 certbot

在 OpenVZ 的 vps 上使用 snapd 时, 会出现如下提示

error: system does not fully support snapd: cannot mount squashfs image using "squashfs": mount:
       /tmp/sanity-mountpoint-404380626: mount failed: Operation not permitted.
error: system does not fully support snapd: cannot mount squashfs image using "squashfs": mount:
       /tmp/sanity-mountpoint-404380626: mount failed: Operation not permitted.

下面介绍解决办法:

sudo apt install fuse squashfuse snapd
sudo mknod -m 666 /dev/fuse c 10 229
sudo snap install core; sudo snap refresh core
sudo apt-get remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

参考文档.

Leave a Comment

Create Worldmap/Table panel in grafana with Elasticsearch datasource

某天接到一个需求, 即在Grafana中添加一个Table panel, 将AD系统里面登陆失败的用户都挑出来, 展示在table里面, 同时也将失败次数展示出来.

Create Table panel in grafana with Elasticsearch datasource
Create Table panel in grafana with Elasticsearch datasource

接下来看看Worldmap panel. 新版Grafana的很多设定都发生了变化.

Create Worldmap panel in grafana with Elasticsearch datasource
Create Worldmap panel in grafana with Elasticsearch datasource
Create Worldmap panel in grafana with Elasticsearch datasource
Leave a Comment

简单解释 ssh 中的 local port forwarding 和 remote port forwarding

1, local port forwarding

ssh client端:
ssh server端: serverIP:80

如果希望在ssh client端访问ssh server端的80端口, 则可以运行

ssh -L 8000:serverIP:80 user@serverIP

然后就可以在client端通过访问127.0.0.1:8000达到访问server端80端口的目的

提示:
8000:serverIP:80这里的serverIP不一定要是server自己, 也可以是127.0.0.1, 或者是任何server端能够访问的远程地址.
然后就可以实现在ssh client端访问serverIP:80(即在client端访问127.0.0.1:8000)

下面是一个例子

如上图. 如果执行了

ssh -L 8000:10.10.1.11:80 [email protected]

那么, 访问192.168.56.101:8000则等同于访问了10.10.1.1:80

2, remote port forwarding

ssh client端: clientIP:80
ssh server端:

如果希望在server端访问client端的80端口

ssh -R 8000:localhost:80 user@serverip

然后就可以在ssh server端通过访问127.0.0.1:8000达到访问client端80端口的目的.

提示:
命令里的localhost指的是client侧的IP, 命令里的localhost不一定得是ssh client本身, 也可以是任何一个ssh client可达的地址.
server端默认是会监听127.0.0.1:8000, 如果想让server端监听0.0.0.0:8000, 需要将ssh配置中的GatewayPorts配置项打开

下面是一个例子

Leave a Comment

WordPress block editor shortcuts(WordPress区块编辑器快捷键)

插入(insert)一个区块 (Block)

# 在下方插入一个区块
Ctrl + Alt + Y

# 在上方插入一个区块
Ctrl + Alt + T

移动 (move) 一个区块(Block)

# 将当前区块往上移动(跟上方的区块交换位置)
Ctrl + Alt + Shift + T

# 将当前区块往下移动(跟上方的区块交换位置)
Ctrl + Alt + Shift + Y

辙消操作

# 辙消之前的操作
Ctrl + Z

# 恢复之前辙消的操作
Ctrl + Shift + Z

有了这些快捷键之后, WordPress的区块编辑器就显得好用多了.

Leave a Comment

转载: Ubuntu20.04简单修改IP

在网上搜到的ubuntu改IP都是通过手写interfaces文件,这需要记住语法和格式,很不方便,在Redhat系上,可以使用很方便的NetworkManager的nmtui的Text UI来设置IP,我们只需要填写我们希望的网络信息即可,那么在ubuntu上其实也是有简便的方法;

ubuntu 20使用的netplan来管理,其配置文件使用的YAML,虽然语法格式也简单,但是还是可以有不用记的方式来完成IP的修改;

默认情况下的配置文件在/etc/netplan/00-installer-config.yaml,默认使用DHCP的方式,全部内容为

# This is the network config written by 'subiquity'
network:
  ethernets:
    eth0:
      dhcp4: true
  version: 2

Linux上,大部分软件都包含了自己的文档,常规的包含README,Example之类的,目录在/usr/share/doc/netplan下,有个examples目录,当中包含了很多网络的配置文件模板,如

$ ls /usr/share/doc/netplan/examples/
bonding_router.yaml   direct_connect_gateway_ipv6.yaml  route_metric.yaml                           windows_dhcp_server.yaml
bonding.yaml          direct_connect_gateway.yaml       source_routing.yaml                         wireless.yaml
bridge_vlan.yaml      ipv6_tunnel.yaml                  static_multiaddress.yaml                    wpa_enterprise.yaml
bridge.yaml           loopback_interface.yaml           static_singlenic_multiip_multigateway.yaml
dhcp_wired8021x.yaml  modem.yaml                        static.yaml
dhcp.yaml             network_manager.yaml              vlan.yaml

找到static.yaml就是我们想要的静态IP配置文件模板,现成的格式和内容;拷贝到/etc/netplan下即可;

# 先备份源文件
sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak
# 拷贝静态IP配置文件
sudo cp /usr/share/doc/netplan/examples/static.yaml /etc/netplan/

# 简单修改一下;它的默认是这样的
network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      addresses:
        - 10.10.10.2/24
      nameservers:
        search: [mydomain, otherdomain]
        addresses: [10.10.10.1, 1.1.1.1]
      routes: 
        - to: default
          via: 10.10.10.1

修改完成后,应用即可

sudo netplan apply

本文转载自八宝叠云峰.

Leave a Comment