我接到一个项目,要在一堆只有公共 IP 的服务器上创建一个开发 kubernetes 集群。我想知道我该如何使用 iptables 来限制服务器的公共访问,同时仍使其正常运行。
我尝试过以下模板:
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [2916:273018]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -p tcp -m tcp --dport 22 -m comment --comment "ssh access" -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
{% for host in groups.all %}
-A INPUT -s {{ hostvars[host]['ansible_default_ipv4']['address'] }}/32 -m tcp -p tcp --dport 6443 -m comment --comment "ACCEPT INTER CLUSTER CONNECTIVITY ON PORT 6443" -j ACCEPT
{% endfor %}
{% for host in groups.all %}
-A INPUT -s {{ hostvars[host]['ansible_default_ipv4']['address'] }}/32 -m comment --comment "ACCEPT INTER CLUSTER CONNECTIVITY" -j ACCEPT
{% endfor %}
COMMIT
但是 pod 没有启动,我无法进入 pod 容器。