Iptables防火墙的配置 NAT综合案例
准备三台虚拟机,分别配置IP(如上图) 注意:Intranet网络连接使用Vmware1(仅主机) Firewall网卡1使用Vmware1(仅主机),网卡2使用Vmware8(NAT) Extranet网络连接使用Vmware8(NAT) 不懂请自行百度,谢谢!!
测试三台机器的连通性 Intranet: [root@intranet ~] PING 192.168.10.20 (192.168.10.20) 56(84) bytes of data. 64 bytes from 192.168.10.20: icmp_seq=1 ttl=64 time=16.0 ms 64 bytes from 192.168.10.20: icmp_seq=2 ttl=64 time=0.402 ms ^C --- 192.168.10.20 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 0.402/8.204/16.007/7.803 ms
[root@intranet ~] PING 202.112.113.112 (202.112.113.112) 56(84) bytes of data. 64 bytes from 202.112.113.112: icmp_seq=1 ttl=64 time=1.97 ms 64 bytes from 202.112.113.112: icmp_seq=2 ttl=64 time=0.337 ms ^C --- 202.112.113.112 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 0.337/1.156/1.976/0.820 ms
[root@intranet ~] PING 202.112.113.113 (202.112.113.113) 56(84) bytes of data. ^C --- 202.112.113.113 ping statistics --- 8 packets transmitted, 0 received, 100% packet loss, time 7001ms
Firewall: [root@firewall ~] PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data. 64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=0.337 ms 64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=0.550 ms ^C --- 192.168.10.1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.337/0.443/0.550/0.108 ms
[root@firewall ~] PING 202.112.113.113 (202.112.113.113) 56(84) bytes of data. 64 bytes from 202.112.113.113: icmp_seq=1 ttl=64 time=0.511 ms 64 bytes from 202.112.113.113: icmp_seq=2 ttl=64 time=0.393 ms ^C --- 202.112.113.113 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.393/0.452/0.511/0.059 ms
[root@extranet ~] PING 202.112.113.112 (202.112.113.112) 56(84) bytes of data. 64 bytes from 202.112.113.112: icmp_seq=1 ttl=64 time=0.213 ms 64 bytes from 202.112.113.112: icmp_seq=2 ttl=64 time=0.397 ms ^C --- 202.112.113.112 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.213/0.305/0.397/0.092 ms
[root@extranet ~] PING 192.168.10.20 (192.168.10.20) 56(84) bytes of data. ^C --- 192.168.10.20 ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 2000ms
[root@extranet ~] PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data. ^C --- 192.168.10.1 ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 2000ms
配置yum源 [root@firewall ipv4] mount: /dev/sr0 写保护,将以只读方式挂载 vim /etc/yum.repos.d/rhel.repo [dvd] name=redhat baseurl=file:///media enabled=1 gpgcheck=0 保存退出之后(:wq) 输入:yum clean all
可能出现的问题
您已启用软件包 GPG 签名检查,这样很好。不过您尚未安装任何 GPG 公钥…… 这是因为你的gpgcheck的值为1;
rpm –import /media/RPM-GPG-KEY-redhat-release
failure: repodata/repomd.xml from dvd: [Errno 256] No more mirrors to try. file:///medi/repodata/repomd.xml: [Errno 14] curl#37 - “Couldn’t open file /medi/repodata/repomd.xml”
检查一下yum源的配置文件,baseurl路径是否有写错误
显示依赖不全
从头挂载,重新配置yum源
安装iptables服务 在 Firewall 机器上安装
yum install iptables iptables-services -y
开启路由存储转发,其值为1 工作原理
内网向公网发送数据包时 ,由于目的主机跟源主机 不在同一网段 ,所以数据包暂时发往 内网默认网关 处理,而本网段的主机对此数据包不做任何回应。 由于源主机IP是私有的 ,禁止在公网使用,所以必须将数据包的源发送地址 改成公网上的可用IP ,网关收到数据包后就要转换IP 。然后网关再把数据包发往目的主机。
目的主机收到数据包之后 ,只认为这是网关发送的请求,并不知道内网主机的存在,也没必要知道,目的主机处理完请求 ,把回应信息发还给网关。网关收到后 ,将目的主机发还的数据包的 目的ip地址 改为发出请求的 内网主机的ip地址 ,并将其发给内网主机。这就是数据包的路由转发 。内网的主机只要查看数据包的目的ip与发送请求的源主机ip地址相同,就会回应,这就完成了一次请求。
出于安全考虑,Linux系统默认是禁止数据包转发的。 所谓转发即当主机拥有一块以上的网卡时 ,其中一块收到数据包,根据数据包的目的ip地址将包发往本机另一网卡,该网卡根据路由表继续发送数据包。这通常就是路由器所要实现的功能。
设置 开启IP转发功能: 临时开启:
echo 1 > /proc/sys/net/ipv4/ip_forward
永久开启:
1. vim /etc/sysctl.conf 2. net.ipv4.ip_forward = 1 (在这个/etc/sysctl.conf文件里插入;1表示开启,0表示关闭) 3. sysctl -p
SNAT 改变源地址,实现局域网使用同一个公网IP接入Internel,好处如下:
保护内网用户安全,因为公网地址总有一些人会恶意扫描,而内网地址在公网没有路由,所以无法被扫描,能被扫描的只有防火墙这一台,这样就减少了被攻击的可能。
IPV4地址匮乏,很多公司只有一个IPV4地址,但是却有几百个用户需要上网,这个时候就需要使用SNAT。
省钱,公网地址付费,使用SNAT只需要一个公网IP就可以满足几百人同时上网想要了解更多,请点击>>
在Firewall上配置SNAT systemctl stop firewalld systemctl start iptables iptables -L iptables -F iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 202.112.113.112 iptables -t nat -L POSTROUTING_ZONES all -- anywhere anywhere SNAT all -- 192.168.10.0/24 anywhere to:202.112.113.112
安装httpd
安装不成功请点击查看yum源配置
firewall-cmd --permanent --add-service=http firewall-cmd --reload systemctl restart httpd netstat -an | grep :80 显示如下,表示80端口开放,(回车发现什么也没有,说明没有开放80端口): [root@extranet ~] tcp6 0 0 :::80 :::* LISTEN 可以自己在 /var/www/html 里面编写一些网页 firefox 127.0.0.1
在Extranet上配置好WEB服务之后 可以在Intranet的浏览器上输入Extranet的IP地址就可以访问到页面,效果如下
DNAT 改变目标地址,外网可以访问到内网服务器
配置双网卡,一网卡对内,一网卡对外;一般是高访问量的web服务器,为了避免占用网关的流量才这样做,使用不是很广泛。
内网web服务器,或是ftp服务器,为了用户在公网也可以访问,有不想买公网ip地址,采用DNAT方案。想要了解更多,请点击>>
在Intranet上配置WEB、防火墙 yum install httpd -y systemctl start httpd systemctl enable httpd yum install iptables iptables-services -y systemctl stop firewalld systemctl start iptables systemctl enable iptables systemctl status iptables iptables -F iptables -A INPUT -p tcp --dport 80 -j ACCEPT
在Firewall上配置DNAT 将外网请求的80端口数据包,修改目的地址为内网的Intranet
iptables -t nat -A PREROUTING -d 202.112.113.112 -p tcp --dport 80 - j DNAT --to-destination 192.168.10.1:80
此时,在外网的机器就可以访问内网的网页了,如下图:
如果内网想拒绝其他的服务(FTP,SSH,samba等等),就输入: iptables -A INPUT-j REJECT
iptables还有很多的命令,到时候再弄一个专题来研究
本期的Iptables综合案例就到此结束,上面的问题如果有啥问题请联系作者^wechar ,谢谢观看!