iptables例子

# 设置本机的21,22,80端口允许访问,22端口只允许某个网段通行
vim /usr/local/sbin/iptables.sh
#!/bin/bash
ipt="/usr/sbin/iptables" #定义了ipt变量,把iptables命令复制给ipt变量
$ipt -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # 必须加这条命令,是为了让直行更顺畅
$ipt -A INPUT -s 192.168.1.1/25 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT


iptables -I INPUT -p icmp --icmp-type 8 -j DROP # 禁止ping本机ip

iptables nat表应用

需求1:
两台机器,机器A可以访问内网和外网(两块网卡),机器B只能访问内网(一块网卡),让机器B通过机器A实现访问外网的功能

  1. 先将两个虚拟机A和B各添加一个张网卡,A机器的一张网卡可以访问外网,第二张添加的网卡设置LAN区域,B机器添加网卡,第一张网卡禁掉,第二张添加网卡设置LAN区段和A的保持一致
  2. 设置网卡完成后可以选择开机,
  3. 设置A机器新添加网卡IP,新添加的网卡名字为ens37, ifconfig ens37 192.168.77.1/24 #设置ens37网卡的IP地址 4.设置B机器的第1张网卡Down掉,第二张新网卡添加一个IP,执行如下的命令 ifdown ens33 #关闭ens33网卡 ifconfig ens37 192.168.77.2/24 #设置ens37网卡的IP地址 通过ifconfig命令设置的IP只在内存中生效,如果要永久保存的话需要写到网卡的配置文件里面去
  4. 可以尝试A和B机器是否可以相互ping通

目前A机器有2块网卡分别为:ens33(192.168.1.100) 、ens37(192.168.77.1)。ens33可以与外网通信,ens37则是内部网络 B机器有1块网卡ens37(192.168.77.2),不可以与外网通信,但是可以和A机器的ens37互联。 需要让B机器能够访问外网。

实现:
1.在A机器上执行以下命令,查看配置文件,是否开启端口转发功能,显示0表示没有开启端口转发

[root@lx003 ~]# cat /proc/sys/net/ipv4/ip_forward  
0

2.开启A机器的端口转发功能,执行以下命令开启

[root@lx003 ~]# echo "1">/proc/sys/net/ipv4/ip_forward #将1重定向到文件中,开启内核转发
[root@localhost ~]# cat /proc/sys/net/ipv4/ip_forward #可以cat以下文件,查看是否开启
1

3.在A机器上添加规则,执行以下命令

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.77.0/24 -o ens33 -j MASQUERADE
  1. 在B机器上设置网关,执行如下命令
route add default gw 192.168.77.1 #B机器上添加网关
  1. 在B机器上添加网关,实现访问外网的功能 vi /etc/resolv.conf #编辑配置文件

添加如下行: nameserver 119.29.29.29

需求2:
C机器只能和A通信,让C机器可以直接连通B机器的22端口 A机器:内网外网都可以访问 B机器:只有一个内网IP C机器:我的主电脑

  1. A机器上打开端口转发
echo "1">/proc/sys/net/ipv4/ip_forward
  1. 删除之前创建的规则
iptables -t nat -D POSTROUTING -s 192.168.77.0/24 -o ens33 -j MASQUERADE

3.添加以下规则

iptables -t nat -A PREROUTING -d 192.168.1.100 -p tcp --dport 1122 -j DNAT --to 192.168.77.2:22
iptables -t nat -A POSTROUTING -s 192.168.77.2 -j SNAT --to 192.168.1.100

4.在B机器上添加网关

route add default gw 192.168.77.1