2.9. 阻止对特定主机接口上 NodePort 服务的外部访问
OVN-Kubernetes 不限制可以从红帽构建的 MicroShift 节点外部访问 NodePort 服务的主机接口。以下流程解释了如何在特定主机接口上阻止 NodePort 服务并限制外部访问。
先决条件
- 您必须具有具有 root 特权的帐户。
流程
运行以下命令,将
NODEPORT变量更改为分配给 Kubernetes NodePort 服务的主机端口号:# export NODEPORT=30700将
INTERFACE_IP值从您要阻止的主机接口更改为 IP 地址。例如:# export INTERFACE_IP=192.168.150.33在
nat表 PREROUTING 链中插入一条新规则,以丢弃与目标端口和 IP 地址匹配的所有数据包。例如:$ sudo nft -a insert rule ip nat PREROUTING tcp dport $NODEPORT ip daddr $INTERFACE_IP drop运行以下命令列出新规则:
$ sudo nft -a list chain ip nat PREROUTING table ip nat { chain PREROUTING { # handle 1 type nat hook prerouting priority dstnat; policy accept; tcp dport 30700 ip daddr 192.168.150.33 drop # handle 134 counter packets 108 bytes 18074 jump OVN-KUBE-ETP # handle 116 counter packets 108 bytes 18074 jump OVN-KUBE-EXTERNALIP # handle 114 counter packets 108 bytes 18074 jump OVN-KUBE-NODEPORT # handle 112 } }注意请记录下新添加的规则的
handle号。您需要删除以下步骤中的handle号。使用以下示例命令删除自定义规则:
$ sudo nft -a delete rule ip nat PREROUTING handle 134