FILTER表,默認的表,包含如下三種內建鏈:mysql
NAT表,當一個包試圖建立新鏈接時將訪問該表,該表包含如下內建鏈:sql
MANGLE表,用於包的更改:docker
本次業務需求,咱們僅須要操做FILTER表。數據庫
因爲每條tcp鏈接對於每一個主機來講,都須要兩個端口。對服務端來講,須要監聽端口,即inputPort,也須要對客戶端進行響應的出端口,即 outputPort。對客戶端來講,也須要兩個端口,一個去鏈接服務端的outputPort,一個接受服務端返回數據的inputPort。服務器
限制端口,能夠在客戶端進行限制,也能夠在服務端進行限制。通常都是客戶端去鏈接服務端的某個指定端口,全部只有服務端的inputPort是固定的,客戶端的inputPort、outputPort和服務端的outPort都是隨機端口,每次從新鏈接後,都會改變。故咱們僅需用iptables對服務端的input端口進行限制便可。網絡
說明: -A:參數就當作是添加一條 INPUT 的規則 -p:指定是什麼協議 咱們經常使用的tcp 協議,固然也有udp,例如53端口的DNS --dport:就是目標端口,當數據從外部進入服務器爲目標端口 --sport:數據從服務器出去,則爲數據源端口 -j:就是指定是 ACCEPT接收或者DROP不接收
iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT
sudo iptables -F && sudo iptables -X && sudo iptables -Z && sudo iptables -S
結果以下:併發
-P INPUT ACCEPT -P FORWARD DROP -P OUTPUT ACCEPT
Loopback接口,也被稱爲lo ,就是一臺電腦用來進行網絡鏈接到自身。 iptables -A INPUT -i lo -j ACCEPT
socket
由於output沒有作限制,因此只須要限制input便可。iptables -A INPUT -p tcp -m multiport --dports 22,80,443,8080,8081,31020:31024,31031:31036,2375 -j ACCEPT
tcp
由於對input作了限制,因此當本身去鏈接別家服務器的端口時,本身做爲客戶端,input端口須要開通,且該端口時隨機的,故只能對數據源端口進行區分iptables -A INPUT -p tcp -m multiport --sports 22,31410,8080,31020:31024,31031:31036 -m conntrack --ctstate ESTABLISHED -j ACCEPT
oop
首先先查看本機docker使用的網段,再進行設置,此處docker網段爲172.17.0.1/24,若不設置該規則,masami將沒法訪問mysql數據庫iptables -A INPUT -s 172.17.0.0/24 -d 172.17.0.0/24 -j ACCEPT
目前僅對kafka和baas進行了限制,未對k8s的slave和master進行限制
10.0.0.59 master1 10.0.0.69 slave1 10.0.0.71/192.168.9.28 baas1 10.0.0.70 master2 10.0.0.91 slave2 10.0.0.92/192.168.9.51 baas2 10.0.0.83 master3 10.0.0.95 slave3 10.0.0.74/192.168.9.32 baas3 10.0.0.55 master4 10.0.0.49 slave4 10.0.0.42/192.168.9.30 baas4 10.0.0.56 master5 10.0.0.61 slave5 10.0.0.73/192.168.9.29 baas5 10.0.0.65/192.168.9.45 kafka1 10.0.0.77/192.168.9.46 kafka2 清理原有規則 iptables -F && iptables -X && iptables -Z && reboot kafka1 iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT 容許下面端口被別人鏈接 iptables -A INPUT -p tcp -m multiport --dports 22,80,443,2375 -j ACCEPT 容許迴環流量 iptables -A INPUT -i lo -j ACCEPT 容許下面端口被特定ip鏈接 iptables -A INPUT -p tcp -s 10.0.0.69,10.0.0.91,10.0.0.95,10.0.0.49,10.0.0.61,10.0.0.65,10.0.0.77 -m multiport --dports 9092:9094,2181:2183,2888:2890,3888:3890 -j ACCEPT 容許本身去鏈接別人的如下端口 iptables -A INPUT -p tcp -m multiport --sports 22,9092:9094,2181:2183,2888:2890,3888:3890 -m conntrack --ctstate ESTABLISHED -j ACCEPT 容許docker0和本地網卡流量 iptables -A INPUT -s 172.18.0.0/24 -d 10.0.0.65 -j ACCEPT 容許docker0內部流量 iptables -A INPUT -s 172.18.0.0/24 -d 172.18.0.0/24 -j ACCEPT kafka2 iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT 容許迴環流量 iptables -A INPUT -i lo -j ACCEPT 容許下面端口被別人鏈接 iptables -A INPUT -p tcp -m multiport --dports 22,80,443,2375 -j ACCEPT 容許下面端口被特定ip鏈接 iptables -A INPUT -p tcp -s 10.0.0.69,10.0.0.91,10.0.0.95,10.0.0.49,10.0.0.61,10.0.0.65,10.0.0.77 -m multiport --dports 9092:9094,2181:2183,2888:2890,3888:3890 -j ACCEPT 容許本身去鏈接別人的如下端口 iptables -A INPUT -p tcp -m multiport --sports 22,9092:9094,2181:2183,2888:2890,3888:3890 -m conntrack --ctstate ESTABLISHED -j ACCEPT 容許docker0和本地網卡流量 iptables -A INPUT -s 172.18.0.0/24 -d 10.0.0.77 -j ACCEPT 容許docker0內部流量 iptables -A INPUT -s 172.18.0.0/24 -d 172.18.0.0/24 -j ACCEPT baas5 iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT 容許迴環流量 iptables -A INPUT -i lo -j ACCEPT 容許下面端口被別人鏈接 iptables -A INPUT -p tcp -m multiport --dports 22,80,443,8080,8081,31020:31024,31031:31036,2375 -j ACCEPT 容許本身去鏈接別人的如下端口 iptables -A INPUT -p tcp -m multiport --sports 22,31410,8080,31020:31024,31031:31036 -m conntrack --ctstate ESTABLISHED -j ACCEPT 容許masami和mysql通信 iptables -A INPUT -s 172.17.0.0/24 -d 172.17.0.0/24 -j ACCEPT baas4 iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT 容許迴環流量 iptables -A INPUT -i lo -j ACCEPT 容許下面端口被別人鏈接 iptables -A INPUT -p tcp -m multiport --dports 22,80,443,8080,8081,31020:31024,31031:31036,2375 -j ACCEPT 容許本身去鏈接別人的如下端口 iptables -A INPUT -p tcp -m multiport --sports 22,31410,8080,31020:31024,31031:31036 -m conntrack --ctstate ESTABLISHED -j ACCEPT 容許masami和mysql通信 iptables -A INPUT -s 172.17.0.0/24 -d 172.17.0.0/24 -j ACCEPT baas3 iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT 容許迴環流量 iptables -A INPUT -i lo -j ACCEPT 容許下面端口被別人鏈接 iptables -A INPUT -p tcp -m multiport --dports 22,80,443,8080,8081,31020:31024,31031:31036,2375 -j ACCEPT 容許本身去鏈接別人的如下端口 iptables -A INPUT -p tcp -m multiport --sports 22,31410,8080,31020:31024,31031:31036 -m conntrack --ctstate ESTABLISHED -j ACCEPT 容許masami和mysql通信 iptables -A INPUT -s 172.17.0.0/24 -d 172.17.0.0/24 -j ACCEPT baas2 iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT 容許迴環流量 iptables -A INPUT -i lo -j ACCEPT 容許下面端口被別人鏈接 iptables -A INPUT -p tcp -m multiport --dports 22,80,443,8080,8081,31020:31024,31031:31036,2375 -j ACCEPT 容許本身去鏈接別人的如下端口 iptables -A INPUT -p tcp -m multiport --sports 22,31410,8080,31020:31024,31031:31036 -m conntrack --ctstate ESTABLISHED -j ACCEPT 容許masami和mysql通信 iptables -A INPUT -s 172.17.0.0/24 -d 172.17.0.0/24 -j ACCEPT baas1 iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT 容許迴環流量 iptables -A INPUT -i lo -j ACCEPT 容許下面端口被別人鏈接 iptables -A INPUT -p tcp -m multiport --dports 22,80,443,8080,8081,31020:31024,31031:31036,2375 -j ACCEPT 容許本身去鏈接別人的如下端口 iptables -A INPUT -p tcp -m multiport --sports 22,443,31410,8080,38254,31020:31024,31031:31036 -m conntrack --ctstate ESTABLISHED -j ACCEPT 容許masami和mysql通信 iptables -A INPUT -s 172.17.0.0/24 -d 172.17.0.0/24 -j ACCEPT轉載請註明出處:https://www.cnblogs.com/zooqkl