首先k8s会把cali始终放在PREROUTING的第一,这样所有包优先被转发到docker里
# iptables -t nat -nL PREROUTING
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
cali-PREROUTING all -- 0.0.0.0/0 0.0.0.0/0 /*
cali:6gwbT8clXdHdC1b1 */
KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 /*
kubernetes service portals */
DOCKER all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match
dst-type LOCAL
CNI-HOSTPORT-DNAT all -- 0.0.0.0/0 0.0.0.0/0
ADDRTYPE match dst-type LOCAL
就算我把fail2ban用
iptables -t nat -I PREROUTING 1 -j fail2ban
过一段时间k8s还会把cali排在第一
https://github.com/projectcalico/calico/issues/2672
这里面关系太复杂,生产环境,我还不敢直接在其他CHAIN里增加规则,不知道会出什么
后果。
【 在 hyoga 的大作中提到: 】
: 不懂,转发一个供参考:
: Docker安装了两个定制的iptables链,名为DOCKER-USER和DOCKER,它确保传入的数据
: 包总是首先由这两个链检查。
: Docker的所有iptables规则都被添加到Docker链中,不要手动操作该链条。
: ...................
--
FROM 119.139.196.*