iptables小案例
-
需求:把80,22,21端口放行,22端口只有某个IP段可以访问。
[[email protected] ~]# vim /usr/local/sbin/iptables.sh #! /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检测数据包状 态,--state 指定状态,这条命令为了使通信更顺畅 $ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT $ipt -A INPUT -p tcp --dport 80 -j ACCEPT $ipt -A INPUT -p tcp --dport 21 -j ACCEPT # 增加规则
- icmp示例
- iptables -I INPUT -p icmp --icmp-type 8 -j DROP //禁止其他机器ping本机,本机可以ping其他机器
nat表的应用
- A机器两块网卡ens33(192.168.133.130)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。
- 准备:创建两个虚拟机,A机器配置两块网卡,ens33设置ip:192.168.133.130,ens37设置Ip:192.168.100.1。B机器配置一块网卡ens37ip:192.168.100.100。这里虚拟机的两个内网卡需要选择LAN区段模式
- ifconfig ens37 192.168.100.1/24可以临时设置ip,永久要修改配置文件
- 需求1:可以让B机器连接外网
- A机器上打开路由转发 echo "1">/proc/sys/net/ipv4/ip_forward //该命令是更改内核设置,打开路由转发功能,默认值是0
[[email protected] ~]# cat /proc/sys/net/ipv4/ip_forward 0 [[email protected] ~]# echo "1" > !$ echo "1" > /proc/sys/net/ipv4/ip_forward [[email protected] ~]# cat /proc/sys/net/ipv4/ip_forward 1
- A上执行 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE //把100网段伪装成ens33网卡
- B上设置网关为192.168.100.1,命令为route add default gw 192.168.100.1 。route -n查看网关
- B配置DNS
vim /etc/resolv.conf # Generated by NetworkManager nameserver 119.29.29.29
- A机器上打开路由转发 echo "1">/proc/sys/net/ipv4/ip_forward //该命令是更改内核设置,打开路由转发功能,默认值是0
- 需求2:C机器只能和A通信,让C机器可以直接连通B机器的22端口,不同网段机器通信
- A上打开路由转发echo "1">/ proc/sys/net/ipv4/ip_forward
- A上执行iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22 //把B的22端口,映射到A的1122端口上
- A上执行iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130 //端口转发
- B上设置网关为192.168.100.1
扩展
原文地址:http://blog.51cto.com/akui2521/2114635
时间: 2024-10-04 22:31:27