云原生 API 网关 APISIX入门
340
2022-09-12
k8s及docker开启firewalld防火墙
# 后端服务器地址,以空格分开,可改为网段如172.18.241.181/24server_ips="172.18.241.180 172.18.241.181 172.18.241.182"# 负载均衡地址,不可以写域名,需要写域名实际解析的地址,也以空格分开lb_ips="172.18.241.180"# 对所有主机都开放的端口tcp_ports="22 8080 8081 8082 8889 6061 10000"udp_ports=""# docker网段docker_range="173.16.0.0/8"# 根据ip获取网卡名称ipaddress=$(ip r get 1 | awk 'NR==1 {print $NF}')net_name=$(ip r get 1|awk "/$ipaddress/ {print \$5}")# 获取docker0ipdocker0_ip=$(ip addr show docker0|grep "inet\b"|awk '{print $2}')# 首先开启firewalldsystemctl restart firewalld# 移除掉DOCKER-USER并新建一个(这步非常重要,即便DOCKER-USER存在,也要执行删除。不然不生效)firewall-cmd --permanent --direct --remove-chain ipv4 filter DOCKER-USERfirewall-cmd --permanent --direct --remove-rules ipv4 filter DOCKER-USERfirewall-cmd --permanent --direct --add-chain ipv4 filter DOCKER-USER# 添加规则,注意REJECT规则一定要在最后执行,同时注意不建议多个IP地址写在同一条规则,格式上没有问题,但是通过iptables -L确认时,顺序会打乱。导致先被REJECT# 允许后端服务器之间的所有流量for server_ip in $server_ipsdo # firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="$server_ip/32" accept" # firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="$server_ip" port protocol="tcp" port="0-65535" accept" firewall-cmd --permanent --zone=trusted --add-source=$server_ip firewall-cmd --permanent --direct --add-rule ipv4 filter DOCKER-USER 0 -s $server_ip -j ACCEPT -m comment --comment "allw server from docker"done# 允许lb的所有流量for lb_ip in $lb_ips:do firewall-cmd --permanent --zone=trusted --add-source=$lb_ipdone# 注意这个docker0为网卡名称firewall-cmd --permanent --direct --add-rule ipv4 filter DOCKER-USER 0 -i docker0 -j ACCEPT -m comment --comment "allows incoming from docker"# firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD_direct 0 -o $net_name -j ACCEPT# firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD_direct 0 -i $net_name -j ACCEPTfirewall-cmd --permanent --direct --add-rule ipv4 filter DOCKER-USER 0 -i docker0 -o $net_name -j ACCEPT -m comment --comment "allows docker to $net_name"firewall-cmd --permanent --direct --add-rule ipv4 filter DOCKER-USER 0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -m comment --comment "allows docker containers to connect to the outside world"# 注意,这个$docker0_ip为docker0的地址firewall-cmd --permanent --direct --add-rule ipv4 filter DOCKER-USER 0 -j RETURN -s $docker0_ip -m comment --comment "allow internal docker communication"# 指定public开通端口页面访问的端口for port in $tcp_portsdo firewall-cmd --zone=public --permanent --add-port=$port/tcpdonefor port in $udp_portsdo firewall-cmd --zone=public --permanent --add-port=$port/udpdone# 添加docker使用的容器段firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address=$docker_range accept"firewall-cmd --permanent --zone=trusted --change-interface=docker0firewall-cmd --permanent --zone=trusted --change-interface=cni0# 永久保存firewall-cmd --add-masquerade --permanent# 重新加载firewall-cmd --reload
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~