在docker中运行第三方服务时,通常需要绑定服务端口到本地主机。但使用 -p 参数进行的端口映射,会自动在iptables中建立规则,绕过firewalld,这对于端口级的黑白名单控制管理是很不利的,所以我们需要对iptables进行手动修改。
检查iptabes规则:

iptables --list

发现在Chain DOCKER下多出了一条
Chain DOCKER (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:27017
其中172.17.0.2为该容器在docker网桥中的IP,可见该规则允许任意来源的地址访问27017端口,所以我们需要删除该规则,并替换成安全性更高的规则。

删除DOCKER链中的1号规则;如果待删除规则不位于第一行,则将数字改为对应行号

iptables -D DOCKER 1

此容器只接受来自地址123.345.456.567的连接请求

iptables -A DOCKER -s 123.345.456.567 -d 172.17.0.2 -p tcp --dport 27017 -j ACCEPT

再次进行端口扫描,发现27017端口已经关闭,只有IP为123.234.345.456的主机能够连接。

先吐槽一下垃圾机械革命轻薄本,以后不会再买了

最简单的方法就是修改电源选项的最大处理器状态为99%、系统散热方式更改成“被动”
但是机械革命轻薄本里面没有“处理器电源管理”的选项,需要修改注册表将“处理器电源管理”的选项显示出来
1.同时按下“Windows键”+“R键”,然后输入regedit
2.在注册表编辑器中:
处理器电源管理
注册表:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPowerPowerSettings54533251-82be-4824-96c1-47b60b740d00bc5038f7-23e0-4960-96da-33abaf5935ec
下新建一个DWORD(32),命名为Attributes,值为2
系统散热方式
注册表:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPowerPowerSettings54533251-82be-4824-96c1-47b60b740d0094D3A615-A899-4AC5-AE2B-E4D8F634367F
下新建一个DWORD(32),命名为Attributes,值为2

宝塔与docker都是用iptables作为防火墙设置,但是宝塔是用的是 INPUT 链,而DOCER使用的是 DOCER-USER链

限制与Docker主机的连接
默认情况下,允许所有外部源IP连接到Docker主机。要仅允许特定的IP或网络访问容器,请在DOCKER-USER过滤器链的顶部插入一个否定的规则。例如,以下规则限制从以下所有IP地址进行的外部访问192.168.1.1:

iptables -I DOCKER-USER -i eth0 ! -s 192.168.1.1 -j DROP

请注意,您将需要更改ext_if以与主机的实际外部接口相对应。您可以改为允许来自源子网的连接。以下规则仅允许从子网进行访问192.168.1.0/24:

iptables -I DOCKER-USER -i eth0 ! -s 192.168.1.0/24 -j DROP

最后,您可以指定要接受的IP地址范围--src-range (请记住-m iprange在使用--src-range或时也要添加--dst-range):

iptables -I DOCKER-USER -m iprange -i eth0 ! --src-range 192.168.1.1-192.168.1.3 -j DROP

您可以结合使用-s或--src-range与-d或--dst-range一起控制源和目标。例如,如果Docker守护程序同时监听 192.168.1.99和10.1.2.3,则可以制定特定于10.1.2.3并保持 192.168.1.99打开的规则。

比如我的服务器的对外网卡名是 eth0,执行以下命令,则可限制容器端口只可以 192.168.2.0 子网访问

iptables -I DOCKER-USER -i eth0 ! -s 192.168.2.0/24 -j DROP

PVE创建带特权的alpine小鸡后不要启动,在关机下执行这条命令挂载宿主机内核模块目录,100是容器id,请根据情况修改

pct set 100 -mp0 /lib/modules,mp=/lib/modules

然后就可以启动虚拟机了,在虚拟机内执行以下命令

安装内核开发包

apk update && apk add linux-lts linux-firmware

生成模块依赖关系

depmod -a

最后执行tunnelbroker的route命令新增隧道即可
卸载内核开发包以节省空间

apk del linux-lts linux-firmware