分类
Linux 容器

Docker架设L2TP VPN

在Linux下安装使用PPTP VPN非常简单。自从IOS 10不支持PPTP后,只能使用L2TP协议的VPN了。

L2TP名词解释:

L2TP(Layer 2 Tunneling Protocol)
IPSec(Internet Protocol Security)
IKEv2 (Internet Key Exchange v2)

能实现 IPsec 的目前总体上有 openswan,libreswan,strongswan 这3种。

libreswan 是基于 openswan 的 fork,所以现在各个发行版基本已经看不到 openswan 的身影了。当然也有使用 strongswan 的。

分类
Bash Linux

怎样用 Bash 编程:循环

我使用过的所有编程语言都至少有两种循环结构来用来执行重复的操作。我经常使用 for 循环,然而我发现 while 和 until 循环也很有用处。

for 循环

我的理解是,在 bash 中实现的 for 命令比大部分语言灵活,因为它可以处理非数字的值;与之形成对比的是,诸如标准 C 语言的 for 循环只能处理数字类型的值。

Bash 版的 for 命令基本的结构很简单:

for Var in list1 ; do list2 ; done

解释一下:“对于 list1 中的每一个值,把 $Var 设置为那个值,使用该值执行 list2 中的程序语句;list1 中的值都执行完后,整个循环结束,退出循环。” list1 中的值可以是一个简单的显式字符串值,也可以是一个命令执行后的结果(“ 包含其内的命令执行的结果,本系列第二篇文章中有描述)。我经常使用这种结构。

分类
Linux

怎样用 Bash 编程:语法和工具

Shell 是操作系统的命令解释器,其中 Bash 是我最喜欢的。每当用户或者系统管理员将命令输入系统的时候,Linux 的 shell 解释器就会把这些命令转换成操作系统可以理解的形式。而执行结果返回 shell 程序后,它会将结果输出到 STDOUT(标准输出),默认情况下,这些结果会显示在你的终端。所有我熟悉的 shell 同时也是一门编程语言。

Bash 是个功能强大的 shell,包含众多便捷特性,比如:tab 补全、命令回溯和再编辑、别名等。它的命令行默认编辑模式是 Emacs,但是我最喜欢的 Bash 特性之一是我可以将其更改为 Vi 模式,以使用那些储存在我肌肉记忆中的的编辑命令。

分类
Linux 容器 笔记 网络

UFW防火墙规则对Docker映射端口无效

在自己的服务器开启防火墙,使用UFW设置规则:

ufw default deny

默认禁用所有连接,测试发现,用Docker运行的APP端口能正常访问。

UFW是为了简化Iptables产生的,它在Iptables有自己的规则链。Docker在启动时在Iptables会创建自己的规则链,所以不生效。

分类
Linux

Ubuntu 合上笔记本禁止休眠

合上笔记本盖不进入休眠。在Ubuntu的电源管理没有找到相应设置,可以手动修改配置文件完成。

vi /etc/systemd/logind.conf

打开logind.conf配置文件,找到:

HandleLidSwitch=suspend
HandleLidSwitchExternalPower=suspend

修改为:

HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore

重启生效!

分类
Linux 网络 虚拟机

虚拟机安装OpenWrt路由系统

OpenWrt是一个开源路由器固件,基于Linux。智能路由可以刷机OpenWrt,支持大量插件,功能丰富。OpenWrt也支持x86,可以做为软路由系统。由于我没有单独的机器做软路由,使用OpenWrt做旁路由,仅为科学上网和过滤广告,用虚拟机完全可以满足需求。

OpenWrt支持VitualBox,VMware,Hyper-V等虚拟机,也支持Docker运行。这里我使用的是VMware。

分类
Linux

Ubuntu 20.04设置静态IP地址

因为Ubuntu20.04通过netplan来管理网络,和之前得版本略有区别。

打开配置文件编辑:

vi /etc/netplan/00-installer-config.yaml

这个yaml可能叫其他名字,打开即可。

network:
  ethernets:
    eth0:     #配置的网卡的名称
      addresses: [192.168.2.128/24]    #配置的静态ip地址和掩码
      dhcp4: no    #关闭DHCP,如果需要打开DHCP则写yes
      optional: true
      gateway4: 192.168.2.1    #网关地址
      nameservers:
         addresses: [223.5.5.5,114.114.114.114]    #DNS服务器地址,多个DNS服务器地址需要用英文逗号分隔开
  version: 2
  renderer: networkd    #指定后端采用systemd-networkd或者Network Manager,可不填写则默认使用systemd-workd
分类
Linux 软件

Ubuntu安装XRDP

在Linux下一直没有好的远程桌面工具。VNC太慢,即使在内网也不太流畅。NoMachine不错,但连接需要安装客户端。NoMachine的移动端做得很垃圾,而且几年没更新,不兼容流海屏。远程用得最爽的还是windows自带的rdp,在低网速下也有很好的表现。

一般的远程工具采用录屏的方式,传输图像。如VNC,NoMachine,用h264压缩。虽然支持GPU加速,但在低宽带或高分辨率下质量差,延迟高。RDP不一样,它传输的是指令,绘图是放在客户端的,所以速度快,即使提高分辨率,速度也不会明显降低。

分类
Java Linux

Linux环境启动Elasticsearch错误

Elasticsearch默认启动监听的是本地127.0.0.1端口,现需要把服务发布出来,供其他机器访问。修改Elasticsearch配置文件(config/elasticsearch.yml):

network.host: 0.0.0.0
discovery.seed_hosts: ["0.0.0.0"]

启动后报错,如图:

ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
分类
Linux

SAMBA挂载,指定用户权限

Linux使用Samba挂载网络共享需安装cifs工具,在Ubuntu下安装:

sudo apt install cifs-utils

然后可以用mount挂载:

sudo mount.cifs //ip/共享目录 挂载目录

默认挂载后所有文件所属用户和组都是root,可以增加参数指定用户。

sudo mount.cifs -o rw,uid=wangzhengzhen,username=guest,password= //ip/共享目录 挂载目录