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
要保证远程设备终端的网段为规则网段。不然将没法继续远程tcp
外网不能往里ping,里往外能够命令行
[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
添加虚拟内网code
A:server
[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:
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的。有时候须要重启物理网卡