为了将传出数据到特定目标的源IP更改为100.101.102.103,我通过执行iptables CLI工具在Kubernetes Pod容器内修改了iptables:
iptables -t nat -A POSTROUTING --destination 100.200.150.50/32 -j SNAT --to-source 100.101.102.103
但是它阻止我传出的数据到那个目的地,并且例如当我通过Curl发送一个简单的请求并通过Tcpdump工具监视它时,似乎数据被捕获在容器内。
主要问题可能是:如何为Kubernetes中的集群外部目标的Pod修改源IP?
P.S。我在特权模式下以NET_ADMIN和NET_RAW访问权限部署了pod。
我在Kubernetes Pod的容器内修改了iptables
我建议不要这样做,因为它可能会损坏kubernetes的CNI和/或kube-proxy。相反,请考虑使用kubernetes出口在到群集之外目标的传出数据包中具有众所周知的源IP地址。
从k8s群集到群集外部目标的出口数据包以节点的IP作为源IP。
https://kubernetes.io/docs/tutorials/services/source-ip/说来自k8s的出口数据包使用节点的IP获得源NAT:
[Source NAT:通常用节点的IP替换数据包上的源IP
以下可用于从k8s集群发送出口数据包: