10.15 iptables filter表案例html
10.16/10.17/10.18 iptables nat表應用linux
擴展bash
**需求案例:**服務器的22端口能夠被192.168.83網段訪問,再放行80、21端口。其餘禁止服務器
ipt="/usr/sbin/iptables" $ipt -F $ipt -P INPUT DROP #! /bin/bash ipt="/usr/sbin/iptables" $ipt -F $ipt -P INPUT DROP #因爲是腳本執行因此會執行徹底部命令 $ipt -P OUTPUT ACCEPT $ipt -P FORWARD ACCEPT $ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #-m是指定檢測狀態,--state指定數據包狀態(配合-m使用),該命令行的目的是使數據處理(通訊)更順暢 $ipt -A INPUT -s 192.168.83.0/24 -p tcp --dport 22 -j ACCEPT #對指定源網段放行22端口(用於遠程) $ipt -A INPUT -p tcp --dport 80 -j ACCEPT $ipt -A INPUT -p tcp --dport 21 -j ACCEPT
要保證遠程設備終端的網段爲規則網段。不然將沒法繼續遠程網絡
外網不能往裏ping,裏往外能夠tcp
[root@axiang ~]#iptables -I INPUT -p icmp --icmp-type 8 -j DROP
**場景:**A機器兩塊網卡ens33(192.168.83.131)、ens37(192.168.100.1),ens33能夠上外網,ens37僅僅是內部網絡,B機器只有ens37(192.168.100.100),和A機器ens37能夠通訊互聯。命令行
添加虛擬內網rest
A:code
[root@axiang ~]# ifconfig ens37 192.168.100.1/24 [root@axiang ~]# cat /proc/sys/net/ipv4/ip_forward 0 [root@axiang ~]# echo "1" > !$ 開啓內核轉發 echo "1" > /proc/sys/net/ipv4/ip_forward [root@axiang ~]# cat /proc/sys/net/ipv4/ip_forward 1 [root@axiang ~]# iptables -t nat -nvL [root@axiang ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE #NAT表增長轉發:對源自192.168.100.0/24網段。轉給ens33端口,加工方式:假裝 [root@axiang ~]# iptables -t nat -nvL ... Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 MASQUERADE all -- * ens33 192.168.100.0/24 0.0.0.0/0
B:server
route add default gw 192.168.100.1 #網關指向100.1(若是有別的網口,先ifdown掉) vi /etc/resolv.conf ##配置DNS 增長一行nameserver 119.29.29.29
效果:B能夠ping通外網,物理主機C的虛擬網卡(192.168.83.1)不能ping通B
需求2:C機器只能和A通訊,讓C機器能夠直接連通B機器的22端口
思路:NAT網址轉換
A開啓內核轉發功能,B設置網關及DNS 同上
A:
[root@axiang ~]# iptables -t nat -A PREROUTING -d 192.168.83.131 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22 #當有IP包經過TCP訪問A的1122端口,則將該IP目的轉爲訪問B的22端口 [root@axiang ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.83.131 #當有源自B的IP包須要轉發,則將IP包的源改成A
效果:
注意訪問A的IP的1122端口!不是B的。有時候須要重啓物理網卡