1. 程式人生 > >日常運維(四)

日常運維(四)

iptables

iptables 規則

默認規則保存在配置文件中/etc/sysconfig/iptables

iptables -F 清空規則
service iptables save 保存當前規則到配置文件裏
###默認規則在 filter 表裏  +t 更改指定的表  默認就是filter表
iptables -Z 清空計數器
iptables -A 增加到最後   
iptables -I  install 插入最前 優先級從前往後  默認就是filter表
iptables -D 刪除
iptables -nvL --line-number   序號
iptables -D INPUT 7 根據序號7刪除規則
iptables -P 默認的規則
iptables -P OUTPUT DPOR
iptables -A  INPUT -s 192.168.100.1 -p tcp --sport 80 -d 192.168.100.10 --dport 8080 -j DROP 

具體參數

·-p:協議(tcp) 
·-s:發起源,源IP地址
·-d:目標地址,目標IP地址
·- -sport:發起端源端口,指定要匹配的端口
·- -dport:目標端口,指定匹配目標端口
·- -dports:端口斷
·-m:原有規則補充(tcp、state、malitiport)
    iptables -A INPUT -m state - -state RELATED,ESTABLISHED -j ACCEPT 

創建一個iptables規則腳本,一次寫入

`#!/bin/bash`
ipt="/usr/sbin/iptables"    #必須全局變量
`$ipt -F   #清空原規則
`$ipt -Z   #清空計數器
`$ipt -X   #刪除指定的鏈
`$ipt -P INPUT DROP   #默認策略
`$ipt -P OUTPUT ACCEPT  #默認策略
`$ipt -P FORWARD ACCEPT  #默認策略
`$ipt -A INPUT -m state - -state RELATED,ESTABLISHED -j ACCEPT #放行相關數據包
`$ipt -A INPUT -s 192.168.100.0/24 -p tcp - -dport 22 -j ACCEPT
`$ipt -A INPUT -p tcp - -dprot 80 -j ACCEPT
`$ipt -A INPUT -p tcp - -dprot 21 -j ACCEPT
`$ipt -A INPUT -p icmp --icmp-type 8  -j DROP#可以PING外網,不能被別人ping自己

service iptables save     #保存策略

實地操作時 發現報錯
[root@huidou01 sh]$ /bin/bash iptables.sh
iptables: Bad built-in chain name.         #壞的鏈

查了腳本發現 OUTPUT 寫錯了 ,更改後正確執行

nat 表

nat 表應用

/proc/sys/net/ipv4/ip_forward    端口轉發默認為0

打開端口轉發 echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens33 -j MASQUERADE

不用指定SNAT的目標ip了,不管現在eth33的出口獲得了怎樣的動態ip,MASQUERADE會自動讀取eth33現在的ip地址然後做SNAT出去,這樣就實現了很好的動態SNAT地址轉換。

mii-tool ens37 命令行檢查交換機狀態

端口轉發

A1:192.168.100.100
A2:192.168.50.50
B1:192.168.50.100

  1. A機器添加新的硬件網卡,並且選擇LAN區段,分配內網區段
  2. B機器添加新的硬件網卡,並且選擇和A機器相同的LAN區段
  3. A、B啟動
  4. 設定A2(ens37)網卡,設定ip 為192.168.50.50
    臨時命令設置ifconfig ens37 192.168.50.1/24,永久需要寫入配置文件
  5. ifdown ens33,設定B1網卡(ens37)ifconfig ens37 192.168.50.100/24
  6. 相同網段相互ping 通
  7. A機器上打開路由轉發,echo "1" > /porc/sys/net/ipv4/ip_forward 修改內核參數
  8. 設置規則
    iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens33 -j MASQUERADE
    IP欺騙
  9. B設備設置網關,route -n 查看
    route add default gw 192.168.50.1
    #B機器上的網關要和A機器上的第二塊內網網卡設置一樣的IP才行,否則最後ping不通A1
  10. B1 ping 通A1 is OK
  11. B1 設置DNS
    vi /etc/resolv.conf -> nameserver 119.29.29.29
  12. ping 公網通 is OK

端口映射

  1. 打開端口轉發
    A機器上打開路由轉發,echo "1" > /porc/sys/net/ipv4/ip_forward 修改內核參數
  2. 清空規則重新設定

    iptables -F
    iptables -t nat -A PREROUTING -d 192.168.100.100 -p tcp - -dport 1122 -j DNAT - -to 192.168.50.100:22  
    #進去的包

    #把進來的包 從目標(-d)IP是192.168.100.100(A1),目標端口(指定的)是1122端口 ,做端口轉發到192.168.50.100:22(B1的22端口) 端口上去(端口映射)

##數據包從公網進來,到我的可連公網的A1機器上去,設置它是TCP協議的數據包,端口映射到A1機器的1122端口,在從1122端上做DNAT轉發到我的目標B1地址端口上去。

iptables -t nat -A POSTROUTING -s 192.168.50.100 -j SNAT - -to 192.168.100.100   
#回來的包

#回來的包經過A1機器做一個SNAT,把目標地址改成192.168.100.100(源IP)
##從B1機器源IP(-s) SNAT轉發出去到我A1機器IP去。實現通訊,實際上還是使用192.168.100.100分配的IP192.168.100.1IP登錄的
3.設置網關 192.168.50.50

  1. sshd 連接成功 is OK!

擴展

  1. iptables應用在一個網段 http://www.aminglinux.com/bbs/thread-177-1-1.html
  2. sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html
  3. iptables限制syn速率 http://www.aminglinux.com/bbs/thread-985-1-1.html

日常運維(四)