日常運維(四)
阿新 • • 發佈:2018-03-02
iptablesiptables 規則
默認規則保存在配置文件中/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
- A機器添加新的硬件網卡,並且選擇LAN區段,分配內網區段
- B機器添加新的硬件網卡,並且選擇和A機器相同的LAN區段
- A、B啟動
- 設定A2(ens37)網卡,設定ip 為192.168.50.50
臨時命令設置ifconfig ens37 192.168.50.1/24,永久需要寫入配置文件 - ifdown ens33,設定B1網卡(ens37)ifconfig ens37 192.168.50.100/24
- 相同網段相互ping 通
- A機器上打開路由轉發,echo "1" > /porc/sys/net/ipv4/ip_forward 修改內核參數
- 設置規則
iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens33 -j MASQUERADE
IP欺騙 - B設備設置網關,route -n 查看
route add default gw 192.168.50.1
#B機器上的網關要和A機器上的第二塊內網網卡設置一樣的IP才行,否則最後ping不通A1 - B1 ping 通A1 is OK
- B1 設置DNS
vi /etc/resolv.conf -> nameserver 119.29.29.29 - ping 公網通 is OK
端口映射
- 打開端口轉發
A機器上打開路由轉發,echo "1" > /porc/sys/net/ipv4/ip_forward 修改內核參數 -
清空規則重新設定
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
- sshd 連接成功 is OK!
擴展
- iptables應用在一個網段 http://www.aminglinux.com/bbs/thread-177-1-1.html
- sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html
- iptables限制syn速率 http://www.aminglinux.com/bbs/thread-985-1-1.html
日常運維(四)