简介

iptables 命令是 Linux 上常用的防火墙软件,是 netfilter 项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。

查看 iptables:

1
2
which iptables
whereis iptables

内核会按照顺序依次检查 iptables 防火墙规则:

  • 如果发现有匹配的规则目录,则立刻执行相关动作,停止继续向下查找规则目录;
  • 如果所有的防火墙规则都未能匹配成功,则按照默认策略处理。

使用 -A 选项添加防火墙规则会将该规则追加到整个链的最后,
使用 -I 选项添加的防火墙规则则会默认插入到链中作为第一条规则。

阅读全文 »

iptables 的结构

iptables 是 Linux 防火墙系统的重要组成部分,iptables 的主要功能是实现对网络数据包进出设备及转发的控制。当数据包需要进入设备、从设备中流出或者由该设备转发、路由时,都可以使用 iptables 进行控制。

iptables 是集成在 Linux 内核中的包过滤防火墙系统。使用 iptables 可以添加、删除具体的过滤规则,iptables 默认维护着 4 个表和 5 个链,所有的防火墙策略规则都被分别写入这些表与链中。

iptables 的表 tables 与链 chains

“四表”是指 iptables 的功能,默认的 iptables 规则表有 filter 表(过滤规则表)、nat 表(地址转换规则表)、mangle(修改数据标记位规则表)、raw(跟踪数据表规则表):

  • filter 表:控制数据包是否允许进出及转发,可以控制的链路有 INPUT、FORWARD 和 OUTPUT。
  • nat 表:控制数据包中地址转换,可以控制的链路有 PREROUTING、INPUT、OUTPUT 和 POSTROUTING。
  • mangle:修改数据包中的原数据,可以控制的链路有 PREROUTING、INPUT、OUTPUT、FORWARD 和 POSTROUTING。
  • raw:控制 nat 表中连接追踪机制的启用状况,可以控制的链路有 PREROUTING、OUTPUT。

“五链”是指内核中控制网络的 NetFilter 定义的 5 个规则链。每个规则表中包含多个数据链:INPUT(入站数据过滤)、OUTPUT(出站数据过滤)、FORWARD(转发数据过滤)、PREROUTING(路由前过滤)和 POSTROUTING(路由后过滤),防火墙规则需要写入到这些具体的数据链中。

  • 如果是外部主机发送数据包给防火墙本机,数据将会经过 PREROUTING 链与 INPUT 链;
  • 如果是防火墙本机发送数据包到外部主机,数据将会经过 OUTPUT 链与 POSTROUTING 链;
  • 如果防火墙作为路由负责转发数据,则数据将经过 PREROUTING 链、FORWARD 链以及 POSTROUTING 链。
阅读全文 »

iptables-save 查看防火墙状态(节选):

1
2
3
4
5
-A DOCKER ! -i br-fe67cfba7476 -p tcp -m tcp --dport 15000 -j DNAT --to-destination 192.168.224.2:5000
-A DOCKER ! -i br-fe67cfba7476 -p tcp -m tcp --dport 15002 -j DNAT --to-destination 192.168.224.3:5000
-A DOCKER ! -i br-fe67cfba7476 -p tcp -m tcp --dport 15001 -j DNAT --to-destination 192.168.224.4:5000
COMMIT
# Completed on Thu Sep 8 06:38:44 2022

在 docker 中只要有容器映射了端口 docker 就会自动加 iptables,所以根本就没走到 ufw 端口就被放行了。

参考:

ufw 禁用端口未生效

UFW,或称 Uncomplicated Firewall,是 iptables 的一个接口,为不熟悉防火墙概念的初学者提供了易于使用的界面,同时支持 IPv4 和 IPv6,广受欢迎。

更新 Ubuntu

1
sudo apt update && sudo apt upgrade -y

注意:docker 自动在防火墙列表中添加了开放端口的规则. 所以根本就没走到 ufw 端口就被放行了。

启用、安装或删除 UFW

默认情况下,应安装 UFW,但如果已将其删除,请重新安装 UFW。

1
sudo apt install ufw -y

检查防火墙状态

1
2
3
4
5
# 服务状态
systemctl status ufw

# UFW 防火墙的状态
ufw status

设置 SSH 防火墙规则

启用防火墙,它将阻止所有传入连接并允许所有传出连接。 这将立即帮助保护您的系统。

对于服务器用户或任何其他使用 SSH 远程连接会话的用户,您可以将自己锁定。 幸运的是,您可以在服务未激活时添加 UFW 规则,从而允许 SSH 服务。

1
2
sudo ufw allow ssh
sudo ufw deny PORT
阅读全文 »

自定义 Docker Hub 服务器 Http 支持

1
vim /etc/docker/daemon.json

添加 hub 地址:

1
2
3
{
"insecure-registries": ["10.10.0.105:8080"]
}

示例:

1
2
3
4
{
"registry-mirrors": ["https://lhao27k5.mirror.aliyuncs.com"],
"insecure-registries" : ["10.10.0.105:8080"]
}

重启docker 服务

1
systemctl restart docker

登录 Docker Hub

1
docker login 10.10.0.105:8080

镜像生成,上传

1
2
3
4
5
# 生成镜像
docker build -t 10.10.0.105:8080/myhub/lims:0.0.1 /lims/git/Admin.NET

# 推送 -a 推送所有镜像
docker push 10.10.0.105:8080/myhub/lims:0.0.1

检查使用量

检查使用量,可以看到所属卷组。

1
2
3
4
5
6
7
8
df /var
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv 102626232 13556520 83810448 14% /

df -h /var

# 计算文件夹大小
du -sh /tmp
阅读全文 »

创建镜像

进入应用目录(存在 Dockerfile 文件):

1
docker build -t lims:0.0.2 .

测试

1
2
3
4
5
6
7
8
9
# rm :退出时,删除容器
docker run --name lims-server -e TZ=Asia/Shanghai -p 80:80 -d lims:0.0.2

# 多行命令
docker run \
--name lims-server \
-e TZ=Asia/Shanghai \
-p 80:80 \
-d lims:0.0.2
阅读全文 »
0%