1. 程式人生 > >iptables filter表的INPUT ,FORWARD,OUTPUT表

iptables filter表的INPUT ,FORWARD,OUTPUT表

背景介紹:

前期在做機房規劃的時候忘記做其他的vlan的劃分,現在有需求新增私網的一個環境給研發作除錯用(172.16.1.0/24)。在滿足172網段互通的同時還要保證可以訪問外網,同時由於安全考慮不能訪問其他的網段機伺服器。

準備工作:

a. 宿主機連線的交換機埠設定為trunk, 允許所有vlan通過

b. 在交換機上預先建立vlan,交換機上不存在的vlan是無法通訊的(這裡坑了我半天)

 

建立虛擬交換機(在相關宿主機上)


ip link add link bond0 name bond0.12 type vlan id 12

ip link set dev bond0.12 up

 

brctl addbr br12                                

brctl addif br12   bond0.12                       

ip addr add 172.16.1.22/24 brd 172.16.1.255 dev br12 (可以不需要配地址)

ip link set br12 up

 

建立虛擬路由器


a. 1. 建立虛擬機器。外網vlan(192.168.0.0),

    2. echo 1 > /proc/sys/net/ipv4/ip_forward

     3. 在虛擬路由器上起keepalived

b. 增加一個內網vlan,就給虛擬路由器加個介面)

c. 在路由器內加路由條目(博興路由器還是公司路由器)?

d. 在外部路由器上加入指向虛擬路由器的靜態路由

e. 在虛擬路由器上加ACL(重要!!!!安全)

 

 

效能從1M到100M之間浮動,

提高效能參考lvs優化? 關閉tso?

 

 

建立虛擬機器


a. 虛擬機器有一個網絡卡在該vlan

b. 設定預設閘道器為虛擬路由器IP

 

 

 

後期安全加固:

要求172網段伺服器只可以訪問172網段和外網,不能訪問除了192.168.0.230這個路由轉發伺服器之外的其他192網段伺服器。

 

大坑操作:

前期思路:

在iptables上把input的規則加上禁止172網段的其他伺服器訪問192網段的其他伺服器

例如這樣的規則:

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  172.16.1.0/24          192.168.0.254       
DROP       all  --  172.16.1.0/24           192.168.0.0/24      
           

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

發現沒有任何作用,後期又在output連上做了一些類似的操作,但是都是沒有作用。

經過冷靜,發現是在路由伺服器上做的路由轉發,所以我在input和output上作的規則是沒有任何作用的,在這個環境裡我做的是禁止轉發,所以

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            192.168.0.254       
DROP       all  --  0.0.0.0/0            192.168.0.0/24      

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

完美的解決問題,我只需要把訪問閘道器的允許其他的drop接可以了

 

 

反思:

以前對於iptables的用發主要集中在input這個鏈上,或者snat和dnat上,所以先入為主,把大量的精力用在了錯誤的上面。