Docker的端口映射问题(庖丁解牛)

1.docker使用-p参数映射端口(宿主机端口:容器端口)

那么问题来了,他是怎么转发到容器的端口的呢?

这里就要说到iptables的四表五链了,先说说这个四表五链是啥

2.四表五链总览

表 (Table) 功能描述 核心操作 生效的链 (Chains) 优先级顺序
raw 用于数据包状态跟踪的豁免 NOTRACK PREROUTING, OUTPUT 1 (最高)
mangle 修改数据包元数据(如 TTL, TOS, MARK) TTL, TOS, MARK 全部五链 PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING 2
nat (Network Address Translation) 网络地址转换(端口转发、IP伪装) SNAT, MASQUERADE, DNAT, REDIRECT PREROUTING, INPUT, OUTPUT, POSTROUTING 3
filter 过滤数据包(防火墙核心功能) ACEPT, DROP, REJECTC INPUT, FORWARD, OUTPUT 4 (最低)

3.五链数据包流向图

链 (Chain) 触发时机 主要用途 常用的表
PREROUTING 数据包刚进入网卡尚未进行路由判断之前 目标地址转换 (DNAT) (端口转发、负载均衡) raw, mangle, nat
INPUT 经路由判断后,数据包的目标地址是本机 处理发往本机的数据包 (主机防火墙关键) mangle, filter
FORWARD 经路由判断后,数据包的目标地址是其他地址(本机负责转发) 处理流经本机的数据包 (网络防火墙关键) mangle, filter
OUTPUT 本机进程产生的数据包,在发出之前 处理本机产生的出站数据包 raw, mangle, nat, filter
POSTROUTING 数据包即将离开网卡之前,所有路由判断已完成 源地址转换 (SNAT) (IP伪装、共享上网) mangle, nat

4.直接实战

这里主要用到了nat表的dnat规则进行端口映射

相关推荐
betazhou36 分钟前
基于Linux环境使用ogg19版本从oracle 19c ADG备库远程同步数据
linux·运维·oracle·goldengate·adg·远程抽取
路由侠内网穿透.39 分钟前
本地部署消息代理软件 RabbitMQ 并实现外部访问( Windows 版本 )
linux·运维·服务器·远程工作
wanhengidc1 小时前
海外云手机是指什么
运维·服务器·游戏·智能手机·云计算
Fanmeang1 小时前
华为防火墙基础功能详解:构建网络安全的基石
运维·网络·安全·华为·防火墙·策略·安全域
求知若渴,虚心若愚。2 小时前
手搓 OpenStack 部署 实战
运维·openstack
忧郁的橙子.3 小时前
二十一、kubernetes 1.29 之 运维 03
运维
鸢尾掠地平4 小时前
DNS的正向、反向解析的服务配置知识点及实验
运维·服务器·网络
by__csdn4 小时前
nvm命令使用,nvm国内镜像,nvm命令for Linux/Mac
linux·运维·macos
高旭博4 小时前
7. kubernetes资源——service服务
云原生·容器·kubernetes