10.15 iptables filter表案例
10.16/10.17/10.18 iptables nat表应用
扩展
- 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
10.15 iptables filter表案例
- service iptables save 保存 restart 重启
- iptables 参数
- -F 清空规则 -Z 清空计数器
- -nvL 查看
- -A 规则放后面 -I 放前面 -D 扔
- INPUT OUTPUT
- -p 协议(tcp udp)
- -s 源IP --sport 源端口 -d 去IP --dport 去端口 -i 接收网卡 -o 发送网卡
- policy 修改 iptables -P INPUT DROP 注意会导远程终端断开,且iptables -F不会恢复,需要改回ACCEPT
**需求案例:**服务器的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,里往外可以
[root@axiang ~]#iptables -I INPUT -p icmp --icmp-type 8 -j DROP
10.16 -10.18 iptables nat表应用
NAT伪装
**场景:**A机器两块网卡ens33(192.168.83.131)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。
添加虚拟内网
- 需求1:可以让B机器连接外网
- 思路:A开启内核转发功能,NAT伪装,B设置网关及DNS
A:
[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
NAT转换
需求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的。有时候需要重启物理网卡