2018-1-25 7周4次課 iptables
#! /bin/bash
ipt="/usr/sbin/iptables"
$ipt -F
(清控規則)
$ipt -P INPUT DROP
(INPUT策略DROP掉)
$ipt -P OUTPUT ACCEPT
(OUTPUT策略可接受)
$ipt -P FORWARD ACCEPT
(FORWARD策略可接受)
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
(增加規則:-m state 指定狀態,--state 狀態為RELATED,ESTABLISHED,不加RELATED可能導致其他通信被禁,-j 操作為接受 )
$ipt -A INPUT -s 192.168.65.0/24 -p tcp --dport 22 -j ACCEPT
(增加規則:網段為192.168.65.0/24,端口為22的數據包放行)
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
(80端口數據包放行)
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
(21端口數據包放行)
·實際操作:
[root@localhost ~]# sh /usr/local/sbin/iptables.sh [root@localhost ~]# iptables -nvL Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 28 1848 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT tcp -- * * 192.168.65.0/24 0.0.0.0/0 tcp dpt:22 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 15 packets, 1412 bytes) pkts bytes target prot opt in out source destination [root@localhost ~]# iptables -nvL Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 32 2112 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT tcp -- * * 192.168.65.0/24 0.0.0.0/0 tcp dpt:22 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 18 packets, 2568 bytes) pkts bytes target prot opt in out source destination [root@localhost ~]# service iptables restart Redirecting to /bin/systemctl restart iptables.service [root@localhost ~]# iptables -nvL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 10 660 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 6 packets, 792 bytes) pkts bytes target prot opt in out source destination
·icmp示例:
禁掉icmp:
[root@localhost ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP
10.16 iptables nat表應用(上)
需求:
A:兩塊網卡,一塊可以上外網,一塊用內網
B:只有一塊內網網卡
讓B機器可以連外網
準備工作:
準備兩個虛擬機
給兩臺虛擬機做快照
給A機器添加網卡:
設置LAN區段,等效於設置連接的交換機(名稱可以任取)
同樣方式給B機器添加網卡,並把B機器原先網卡給禁用
LAN區段選擇和A機器一樣的,意味著,此時A機器的第二塊網卡和B機器的第二塊網卡已經連在同一個交換機上
進入A機器,可以開到新增的網卡,名稱為ens37
給新網卡設置新ip(ifconfig ens37 192.168.100.1/24,此ip重啟後消失,新建網卡配置文件重啟後ip不變)
同樣的方法,設置B機器的網卡(因為B機器網卡沒有配置,所以無法遠程連接,只能在虛擬機上操作)
如上圖,兩臺機器已經可以連通。
準備工作已經完成。
10.17 iptables nat表應用(中)
windows主機無法ping同兩臺虛擬機所添加的網卡
B機器也無法聯網
在A機器上打開端口轉發echo "1" > /proc/sys/ipv4/ip_forward(0為關閉,1為打開)
A機器上增加一條規則iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
B機器設置網卡192.168.100.1,數據包從B到A通路
B機器已經可以連A機器第一塊網卡
然後編輯公共DNS
vi /etc/resolve.conf
但是ping不通DNS 119.29.29.29
查了寫資料和其他人的處理方法,把iptables規則重新添加一次,再返回B機器就能連通了
能ping通DNS也就是說可以連接外網了
可以連外網,但是依然連不了內網
這就是一個路由器的路由器,A機器就是路由器
10.18 iptables nat表應用(下)
需求2:C機器只能和A通信,讓C機器可以直接連通B機器的22端口(遠程登錄B)
雖然無法連接192.168.100.100,但是可以連接A機器192.168.65.128,可以做一個跳轉到B機器192.168.100.100
把A機器192.168.65.128的某端口(我們設置為1122),映射為B機器上192.168.100.100的22端口
第一步:打開端口轉發echo "1" > /proc/sys/net/ipv4/ip_forward
第二步:刪除iptables規則
第三步:增加iptables規則
iptables -t nat -A PREROUTING -d 192.168.65.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.65.128
參考:http://man.linuxde.net/iptables
http://blog.chinaunix.net/uid-26495963-id-3279216.html
2018-1-25 7周4次課 iptables