Macos下制作可引导U盘

Macos下制作可引导U盘

debian-10.1.0-amd64-DVD-1.iso
cn_windows_server_2016_vl_x64_dvd.iso
通通支持引导o

diskutil -l
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:                 Apple_APFS Container disk1         500.0 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +500.0 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD - 数据     240.2 GB   disk1s1
   2:                APFS Volume Preboot                 81.3 MB    disk1s2
   3:                APFS Volume Recovery                528.9 MB   disk1s3
   4:                APFS Volume VM                      3.2 GB     disk1s4
   5:                APFS Volume Macintosh HD            10.7 GB    disk1s5

diskutil unmountDisk /dev/disk2                                   
Unmount of all volumes on disk2 was successful

sudo dd bs=1m if=ubuntu-19.10-preinstalled-server-arm64+raspi3.img of=/dev/disk2 conv=sync

一切皆文件 lsof(list open files)

一切皆文件 lsof(list open files)

linux/unix下的哲学核心思想是‘一切皆文件’。
“一切皆文件”,指的是,对所有文件(目录、字符设备、块设备、套接字、打印机、进程、线程、管道等)操作,读写都可用fopen()/fclose()/fwrite()/fread()等函数进行处理。屏蔽了硬件的区别,所有设备都抽象成文件,提供统一的接口给用户。虽然类型各不相同,但是对其提供的却是同一套操作界面。更进一步,对文件的操作也可以跨文件系统执行。
那么如何操作一个已经打开的文件?
使用文件描述符(file descriptor),简称fd。这里就使用到了“文件描述符”,它是一个对应某个已经打开的文件的索引(非负整数)。

普通文件 -,Normal File
如mp4、pdf、html log;用户可以根据访问权限对普通文件进行查看、更改和删除,包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件.第一个属性为 [-]

目录文件 d,directory file /usr/ /home/
目录文件包含了各自目录下的文件名和指向这些文件的指针,打开目录事实上就是打开目录文件,只要有访问权限,就可以随意访问这些目录下的文件。能用#cd命令进入的。第一个属性为[d],例如 [drwxrwxrwx]

硬链接 -,hard links
若一个inode号对应多个文件名,则称这些文件为硬链接。硬链接就是同一个文件使用了多个别名删除时,只会删除链接, 不会删除文件;
硬链接的局限性:1.不能引用自身文件系统以外的文件,即不能引用其他分区的文件;2.无法引用目录;

符号链接(软链接) l,symbolic link
若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接,克服硬链接的局限性, 类似于快捷方式,使用与硬链接相同。
字符设备文件 c,char 文件一般隐藏在/dev目录下,在进行设备读取和外设交互时会被使用到

即串行端口的接口设备
例如键盘、鼠标等等。第一个属性为 [c]。
/dev/tty的属性是 crw-rw-rw-,注意前面第一个字 c,这表示字符

设备文件
块设备文件 b,block
存储数据以供系统存取的接口设备,简单而言就是硬盘。
/dev/hda1 的属性是 brw-r—– ,注意前面的第一个字符是b,这表示块设备,比如硬盘,光驱等设备
系统中的所有设备要么是块设备文件,要么是字符设备文件,无一例外

FIFO管道文件 p,pipe
管道文件主要用于进程间通讯。FIFO解决多个程序同时存取一个文件所造成的错误。比如使用mkfifo命令可以创建一个FIFO文件,启用一个进程A从FIFO文件里读数据,启动进程B往FIFO里写数据,先进先出,随写随读。# pipe

套接字 s,socket
以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。用于进程间的网络通信,也可以用于本机之间的非网络通信,第一个属性为 [s],这些文件一般隐藏在/var/run目录下,证明着相关进程的存在

lsof(list open files)是一个查看当前系统文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,该文件描述符提供了大量关于这个应用程序本身的信息。

lsof打开的文件可以是:

普通文件 目录 网络文件系统的文件 字符或设备文件 (函数)共享库
管道,命名管道 符号链接 网络文件(例如:NFS file、网络socket,unix域名socket)还有其它类型的文件,等等

命令参数

-a 列出打开文件存在的进程
-c<进程名> 列出指定进程所打开的文件
-g 列出GID号进程详情
-d<文件号> 列出占用该文件号的进程
+d<目录> 列出目录下被打开的文件
+D<目录> 递归列出目录下被打开的文件
-n<目录> 列出使用NFS的文件
-i<条件> 列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号> 列出指定进程号所打开的文件
-u 列出UID号进程详情
-h 显示帮助信息
-v 显示版本信息

使用实例

实例1:无任何参数

$lsof |more
COMMAND     PID      USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
init          1      root  cwd       DIR              253,0     4096          2 /
init          1      root  rtd       DIR              253,0     4096          2 /
init          1      root  txt       REG              253,0   150352    1310795 /sbin/init
init          1      root  mem       REG              253,0    65928    5505054 /lib64/libnss_files-2.12.so
init          1      root  mem       REG              253,0  1918016    5521405 /lib64/libc-2.12.so
init          1      root  mem       REG              253,0    93224    5521440 /lib64/libgcc_s-4.4.6-20120305.so.1
init          1      root  mem       REG              253,0    47064    5521407 /lib64/librt-2.12.so
init          1      root  mem       REG              253,0   145720    5521406 /lib64/libpthread-2.12.so
...

说明:

lsof输出各列信息的意义如下:

COMMAND:进程的名称
PID:进程标识符
PPID:父进程标识符(需要指定-R参数)
USER:进程所有者
PGID:进程所属组
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等:

(1)cwd:表示current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改
(2)txt :该类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序
(3)lnn:library references (AIX);
(4)er:FD information error (see NAME column);
(5)jld:jail directory (FreeBSD);
(6)ltx:shared library text (code and data);
(7)mxx :hex memory-mapped type number xx.
(8)m86:DOS Merge mapped file;
(9)mem:memory-mapped file;
(10)mmap:memory-mapped device;
(11)pd:parent directory;
(12)rtd:root directory;
(13)tr:kernel trace file (OpenBSD);
(14)v86  VP/ix mapped file;
(15)0:表示标准输入
(16)1:表示标准输出
(17)2:表示标准错误
一般在标准输出、标准错误、标准输入后还跟着文件状态模式:r、w、u等
(1)u:表示该文件被打开并处于读取/写入模式
(2)r:表示该文件被打开并处于只读模式
(3)w:表示该文件被打开并处于
(4)空格:表示该文件的状态模式为unknow,且没有锁定
(5)-:表示该文件的状态模式为unknow,且被锁定
同时在文件状态模式后面,还跟着相关的锁
(1)N:for a Solaris NFS lock of unknown type;
(2)r:for read lock on part of the file;
(3)R:for a read lock on the entire file;
(4)w:for a write lock on part of the file;(文件的部分写锁)
(5)W:for a write lock on the entire file;(整个文件的写锁)
(6)u:for a read and write lock of any length;
(7)U:for a lock of unknown type;
(8)x:for an SCO OpenServer Xenix lock on part      of the file;
(9)X:for an SCO OpenServer Xenix lock on the      entire file;
(10)space:if there is no lock.
TYPE:文件类型,如DIR、REG等,常见的文件类型:

(1)DIR:表示目录
(2)CHR:表示字符类型
(3)BLK:块设备类型
(4)UNIX: UNIX 域套接字
(5)FIFO:先进先出 (FIFO) 队列
(6)IPv4:网际协议 (IP) 套接字
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

实例2:查找某个文件相关的进程

$lsof /bin/bash
COMMAND     PID USER  FD   TYPE DEVICE SIZE/OFF    NODE NAME
mysqld_sa  2169 root txt    REG  253,0   938736 4587562 /bin/bash
ksmtuned   2334 root txt    REG  253,0   938736 4587562 /bin/bash
bash      20121 root txt    REG  253,0   938736 4587562 /bin/bash

实例3:列出某个用户打开的文件信息

   $lsof -u username

-u 选项,u是user的缩写

实例4:列出某个程序进程所打开的文件信息

$lsof -c mysql

-c 选项将会列出所有以mysql这个进程开头的程序的文件,其实你也可以写成 lsof | grep mysql, 但是第一种方法明显比第二种方法要少打几个字符;

实例5:列出某个用户以及某个进程所打开的文件信息

$lsof  -u test -c mysql

实例6:通过某个进程号显示该进程打开的文件

$lsof -p 11968

实例7:列出所有的网络连接

$lsof -i

实例8:列出所有tcp 网络连接信息

$lsof -i tcp
$lsof -n -i tcp
COMMAND     PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
svnserve  11552 weber    3u  IPv4 3799399      0t0  TCP *:svn (LISTEN)
redis-ser 25501 weber    4u  IPv4  113150      0t0  TCP 127.0.0.1:6379 (LISTEN)

实例9:列出谁在使用某个端口

$lsof -i :3306

实例10:列出某个用户的所有活跃的网络端口

$lsof -a -u test -i

实例11:根据文件描述列出对应的文件信息

$lsof -d description(like 2)
示例:
$lsof -d 3 | grep PARSER1
tail      6499 tde    3r   REG    253,3   4514722     417798 /opt/applog/open/log/HOSTPARSER1_ERROR_141217.log.001
说明: 0表示标准输入,1表示标准输出,2表示标准错误,从而可知:所以大多数应用程序所打开的文件的 FD 都是从 3 开始

实例12:列出被进程号为1234的进程所打开的所有IPV4 network files

$lsof -i 4 -a -p 1234
lsof -i @nf5260i5-td:20,21,80 -r 3

用lsof看看我的thinkpad x61t

root@thinkpad:/home/liang# lsof -i:88

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd    1613 root    6u  IPv6  23595      0t0  TCP *:kerberos (LISTEN)
httpd   19620  www    6u  IPv6  23595      0t0  TCP *:kerberos (LISTEN)
httpd   19621  www    6u  IPv6  23595      0t0  TCP *:kerberos (LISTEN)
httpd   19622  www    6u  IPv6  23595      0t0  TCP *:kerberos (LISTEN)
httpd   22813  www    6u  IPv6  23595      0t0  TCP *:kerberos (LISTEN)

root@thinkpad:/home/liang# lsof -p 1613

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
httpd   1613 root  cwd    DIR    8,5     4096       2 /
httpd   1613 root  rtd    DIR    8,5     4096       2 /
 root    3u  sock    0,9      0t0   23590 protocol: TCP
httpd   1613 root    4u  IPv6  23591      0t0     TCP *:http (LISTEN)
......
......
httpd   1613 root    5u  sock    0,9      0t0   23594 protocol: TCP
httpd   1613 root    6u  IPv6  23595      0t0     TCP *:kerberos (LISTEN)
httpd   1613 root    7u  sock    0,9      0t0   23598 protocol: TCP
httpd   1613 root    8u  IPv6  23599      0t0     TCP *:77 (LISTEN)
httpd   1613 root    9u  sock    0,9      0t0   23606 protocol: TCP
httpd   1613 root   10u  IPv6  23607      0t0     TCP *:888 (LISTEN)
httpd   1613 root   11r  FIFO   0,12      0t0 1215756 pipe
httpd   1613 root   12w  FIFO   0,12      0t0 1215756 pipe
.....
.....

root@thinkpad:/home/liang#

用10年前的x61t做了个dlna服务器

用10年前的x61t做了个dlna服务器

硬件:
2010年产x61t笔记本
小米路由器1代 1T硬盘版

最小安装 Debian 10

Debian是一个自由的操作系统(Linux)。
下载 debian-10.1.0-amd64-netinst.iso

https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.1.0-amd64-netinst.iso

用科大mirrors.ustc.edu.cn源代替deb.debian.org

sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

安装宝塔
www.bt.cn

实现apache mysql php Pure-ftp组件具体根据自己应用选择开启。

使用dlna协议让小米电视自动发现服务器上的资源

DLNA是Digital Living Network Alliance的缩写,它是由 Sony为首的多家厂商所组成的联盟, 并且制定出一套这用于数字媒体分享的协议.

最近的家用数字产品, 比如说手机, 平板电脑, 数字电视等几乎都标榜它们是符合 DLNA 认证的多媒体设备.

只要家中的数码设备连接到同一个区域网路, 使用 DLNA 就可以很方便地把数字媒体分享给不同的播放设备. 比如说把手机中的影片直接送到电视上播放, 或是把照片送进印表机中列印等等.

由于可以透过无线网路进行资料传输, 不需要接上传输线也不需要额外的设定动作, 相当方便.

这篇文章会间单介绍如何在 Linux 上架设 DLNA server 来分享媒体, 同时使用 ebtables 来限制使用设备.
首先是安装 DLNA server, 我使用的是 minidlna 这个很间单的软件. 在 Debian 上只要用apt 就可以安装了.

apt-get install minidlna
vi /etc/minidlna.conf

/etc/minidlna.conf 来设定分享目录:

media_dir=/srv/media
第一行会把 /srv/media 底下所有的媒体文件(照片, 影片, 音乐)分享出去. 如果想要限制媒体的种类, 可以在目录前加上 V(影片), A(声音)或 P(照片)来指定种类:

media_dir=V,/srv/video
另外也别忘了指定 port 以及 server 的名称:

port=8200
model_name=My DLNA Server
然后更新 cache

service minidlna force-reload

这么一来, 支持 DLNA 的播放程序如 media player 就可以直接浏览 server 上的媒体, 并且串流播放. 当然, 平板或手机也能轻易播放分享出来的媒体.

Sony 的手机和平板多半都有附上 DLNA browser, App 名称是「已连线的设备」, 打开后便会自动搜寻区域网路中的 DLNA server. 如果你的手机或平板没有内建这类软件, 可以安装 MediaHouse UPnP/DLNA Browser. 需要注意的是, 这些 DLNA browser 的功能比较类似文件管理器, 点选媒体后它们会启动系统中的媒体播放程序 (比如说 mx player 或 poweramp). 至于 iOS 的用护则有 AirPlayer 或是 media:connect 等选择, 它们多半本身就具备了媒体播放功能.

挂载小米路由器

使用小米路由器手机app建立被mount的目录,并设置为分享权限。
然后mount

mount -t cifs //xxx.xxx.xxx.xxx/youpath /you/loaclpath -o guest,rw,uid=1001,gid=1001

结合/etc/passwd选择用户使用uid和gid,这样就可放心的利用http ftp等方式进行读写权限了。

将mount放入
/etc/rc.local

#Add by liang
#mount -t cifs //xxx.xxx.xxx.xxx/youpath1 /you/localpath1 -o guest
mount -t cifs //xxx.xxx.xxx.xxx/youpath2 /you/localpath2 -o guest,rw,uid=1001,gid=1001
#让debian开机后可以自动息屏
setterm -blank 1
exit 0

利用docker虚拟化运行下载容器

什么是 Docker
Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)。

Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目 已经超过 5 万 4 千个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底,dotCloud 公司决定改名为 Docker。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。

卸载旧版本
旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本:

$ sudo apt-get remove docker \
               docker-engine \
               docker.io

使用 APT 安装
由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。

$ sudo apt-get update

$ sudo apt-get install \
     apt-transport-https \
     ca-certificates \
     curl \
     gnupg2 \
     lsb-release \
     software-properties-common

鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。

为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。

$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -
# 官方源
# $ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

然后,我们需要向 source.list 中添加 Docker CE 软件源:

$ sudo add-apt-repository \
   "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian \
   $(lsb_release -cs) \
   stable"
# 官方源
# $ sudo add-apt-repository \
#    "deb [arch=amd64] https://download.docker.com/linux/debian \
#    $(lsb_release -cs) \
#    stable"

以上命令会添加稳定版本的 Docker CE APT 源,如果需要测试或每日构建版本的 Docker CE 请将 stable 改为 test 或者 nightly。

安装 Docker CE
更新 apt 软件包缓存,并安装 docker-ce。

$ sudo apt-get update

$ sudo apt-get install docker-ce

使用脚本自动安装
在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Debian 系统上可以使用这套脚本安装,另外可以通过 --mirror 选项使用国内源进行安装:

$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
# $ sudo sh get-docker.sh --mirror AzureChinaCloud

执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker CE 的稳定(stable)版本安装在系统中。

启动 Docker CE

$ sudo systemctl enable docker
$ sudo systemctl start docker

建立 docker 用户组
默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

建立 docker 组:

$ sudo groupadd docker

将当前用户加入 docker 组:

$ sudo usermod -aG docker $USER

退出当前终端并重新登录,进行如下测试。

测试 Docker 是否安装正确

$ docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
d1725b59e92d: Pull complete
Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

若能正常输出以上信息,则说明安装成功。

镜像加速器
国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如:

Azure 中国镜像 https://dockerhub.azk8s.cn
阿里云加速器(需登录账号获取)
七牛云加速器 https://reg-mirror.qiniu.com
由于镜像服务可能出现宕机,建议同时配置多个镜像。

国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务,具体请参考官方文档。

本节我们以 Azure 中国镜像 https://dockerhub.azk8s.cn 为例进行介绍。

Ubuntu 16.04+、Debian 8+、CentOS 7
对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://reg-mirror.qiniu.com"
  ]
}
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。

之后重新启动服务。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

注意:如果您之前查看旧教程,修改了 docker.service 文件内容,请去掉您添加的内容

(--registry-mirror=https://dockerhub.azk8s.cn)

安装rrshare64

https://hub.docker.com/r/oldiy/rrshare64

docker run -d --name rrshare -p xxxx:xxxx -v /your/downloads:/opt/work/store oldiy/rrshare64:latest

xxxx你的映射端口可以采用 3333:3333之类的

由于docker rrshare对cpu占用率比较高写了两个脚本方便气启动和停止。

runrr.sh
docker run --name rrshare64 -d -p xxxx:xxxx -v /your/downloads:/opt/work/store oldiy/rrshare64:latest

stoprr.sh
docker stop rrshare64
docker container rm rrshare64

这里可以设置路径应统一为:
dlna
小米路由硬盘mount路径

http://ip:xxxx
默认密码:123456
请及时修改

设置UFW防火墙

UFW 全称为Uncomplicated Firewall,是Ubuntu 系统上默认的防火墙组件, 为了轻量化配置iptables 而开发的一款工具。 UFW 提供一个非常友好的界面用于创建基于IPV4,IPV6的防火墙规则。

安装bt后,会影响ufw的配置,所以先清空宝塔配置,在手动配置ufw和宝塔的管理可以同步。

ufw reset#重置防火墙

使用如下命令进行端口管理,将你开放的dlna端口rrshare64的端口以及定义的ssh vpn web ftp 等端口进行开放。为了dlna的安全性,请使用ufw allow from xx.xx.xx.xx to any port xxxx仅可电视dlna使用,切记。

ufw enable
ufw disable
ufw allow xx/tcp
ufw delete allow xx/tcp
ufw allow from xx.xx.xx.xx to any port xxxx
ufw deny from xxx.xxx.xxx.xxx

(可以结合lastd进行设置,lastd为访问/var/log/ 日志)

ufw verlose#查看ufw设置

Status: active
To                         Action      From
--                         ------      ----
xxxx/tcp                   ALLOW       Anywhere                  
xx/tcp                     ALLOW       Anywhere                  
xxxxx:xxxxx/tcp            ALLOW       Anywhere                  
xx/tcp                     ALLOW       Anywhere                  
xx/tcp                     ALLOW       Anywhere                  
88/tcp                     ALLOW       Anywhere                  
xxxx/tcp                   ALLOW       Anywhere                  
xxxx                       ALLOW       xxx.xxx.xxx.xxx             
xxxx/tcp                   ALLOW       Anywhere                  
xxxx/tcp (v6)              ALLOW       Anywhere (v6)             
xx/tcp (v6)                ALLOW       Anywhere (v6)             
xxxxx:xxxxx/tcp (v6)       ALLOW       Anywhere (v6)             
xx/tcp (v6)                ALLOW       Anywhere (v6)             
xx/tcp (v6)                ALLOW       Anywhere (v6)             
xx/tcp (v6)                ALLOW       Anywhere (v6)             
xxxx/tcp (v6)              ALLOW       Anywhere (v6)             
xxxx/tcp (v6)              ALLOW       Anywhere (v6)            

ufw可以快速简便的配置iptables,ufw配置后生成的配置文件风格与iptables一致。配置文件见:

liang@thinkpad:~$ cat /etc/ufw/
after6.rules                   
before6.rules                  
ufw.conf
after6.rules.20191106_230830 
before6.rules.20191106_230830
user6.rules
after.init
before.init
user6.rules.20191106_230830
after.rules
before.rules                   
user.rules
after.rules.20191106_230830
before.rules.20191106_230830
user.rules.20191106_230830
applications.d/
sysctl.conf   

另外一些ufw一并记录在此:
1 启用

 sudo ufw enable
 sudo ufw default deny 

作用:开启了防火墙并随系统启动同时关闭所有外部对本机的访问(本机访问外部正常)。
2 关闭

 sudo ufw disable 

2 查看防火墙状态

 sudo ufw status 

3 开启/禁用相应端口或服务举例

 sudo ufw allow 80 允许外部访问80端口
 sudo ufw delete allow 80 禁止外部访问80 端口
 sudo ufw allow from 192.168.1.1 允许此IP访问所有的本机端 
 sudo ufw deny smtp 禁止外部访问smtp服务
 sudo ufw delete allow smtp 删除上面建立的某条规则
 sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 22 要拒绝所有的TCP流量从10.0.0.0/8 到192.168.0.1地址的22端口
可以允许所有RFC1918网络(局域网/无线局域网的)访问这个主机(/8,/16,/12是一种网络分级):
sudo ufw allow from 10.0.0.0/8
sudo ufw allow from 172.16.0.0/12
sudo ufw allow from 192.168.0.0/16

 sudo apt-get install ufw
 sudo ufw enable
 sudo ufw default deny 

参见:[https://wiki.ubuntu.org.cn/ufw使用指南]

VPN穿透涉及fq暂时滤过

结合isp询问和进行vpn设置,国情原因不方便透露了。谅解。