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

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

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

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

2.四表五链总览

表 (Table)功能描述核心操作生效的链 (Chains)优先级顺序
raw用于数据包状态跟踪的豁免NOTRACKPREROUTINGOUTPUT1 (最高)
mangle修改数据包元数据(如 TTL, TOS, MARK)TTLTOSMARK全部五链
PREROUTINGINPUTFORWARDOUTPUTPOSTROUTING
2
nat
(Network Address Translation)
网络地址转换(端口转发、IP伪装)SNATMASQUERADEDNATREDIRECTPREROUTINGINPUTOUTPUTPOSTROUTING3
filter过滤数据包(防火墙核心功能)ACEPTDROPREJECTCINPUTFORWARDOUTPUT4 (最低)

3.五链数据包流向图

链 (Chain)触发时机主要用途

常用的表

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

4.直接实战

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值