热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linuxiptables实现网络防火墙

拥有”过滤功能”的链只有3条,INPUT、OUTPUT、FORWARDiptables实现网络防火墙环境准备:使用一台主机充当防火墙,这台主机有两块网卡,左边模拟互联网上的主机,右

拥有”过滤功能”的链只有3条,INPUT、OUTPUT、FORWARD

iptables实现网络防火墙


环境准备:

image

使用一台主机充当防火墙,这台主机有两块网卡,

左边模拟互联网上的主机,右边模拟局域网里面的主机。用一个防火墙将他们隔离开。


环境配置:

#左边机器的配置
#仅主机模式
[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
NAME=ens160
DEVICE=eth0
OnBOOT=yes
BOOTPROTO=none
IPADDR=192.168.0.6 #网关指向防火墙的左边网卡
NETMASK=255.255.255.0
GATEWAY=192.168.0.8

#模拟局域网里面的主机配置
#NAT模式
[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
OnBOOT=yes
IPADDR=10.0.0.11
PREFIX=24
GATEWAY=10.0.0.8 #网关指向防火墙的ip地址
DNS1=180.76.76.76
yum install httpd -y #安装httpd服务用于测试
[root@CentOS8 ~]# cat /var/www/html/index.html
lan1
#NAT模式
[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
OnBOOT=yes
IPADDR=10.0.0.10
PREFIX=24
GATEWAY=10.0.0.8 #网关指向防火墙的ip地址
DNS1=180.76.76.76
[root@CentOS8 ~]# yum install httpd -y #安装httpd服务用于测试
[root@CentOS8 ~]# cat /var/www/html/index.html
lan1

#防火墙配置,需要两张网卡
#NAT模式
[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
NAME=eth0
DEVICE=eth0
OnBOOT=yes
BOOTPROTO=none
IPADDR=10.0.0.8
NETMASK=255.255.255.0
#仅主机模式
[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
Device=eth1
NAME=eth1
OnBOOT=yes
BOOTPROTO=none
IPADDR=192.168.0.8
NETMASK=255.255.255.0

测试:

192.168.0.6 ping 10.0.0.10

发现没法ping通,因为没有开启转发功能,默认就把不是给它的报文丢弃了。
[root@CentOS8 ~]# sysctl -a | grep "net.ipv4.ip_forward"
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0
#开启网络转发功能
[root@CentOS8 ~]# sysctl -w net.ipv4.ip_forward=1 #临时生效
net.ipv4.ip_forward = 1
#永久生效的方法:
[root@CentOS8 ~]# vim /etc/sysctl.conf --->net.ipv4.ip_forward = 1

实现拒绝从外往里进,但是可以从内往外出。

iptables -A FORWARD ! -s 10.0.0.0/24 -d 10.0.0.0/24 -m state --state NEW -j REJECT
#在filter表的FORWARD这个链上设置规则,源地址不是10.0.0.0网段,目标地址是10.0.0.0网关的报文,并且报文的状态不是NEW(第一次连接),就同意。

实现外网主机能访问局域网内特定主机的特定服务

方法一:
[root@CentOS8 ~]# iptables -A FORWARD ! -s 10.0.0.0/24 -d 10.0.0.0/24 -m state --state NEW -j REJECT #只要是外网连接都不可以
[root@CentOS8 ~]# iptables -I FORWARD ! -s 10.0.0.0/24 -d 10.0.0.10 -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT #允许连接10.0.0.10的80端口
方法二:
[root@CentOS8 ~]# iptables -I FORWARD -d 10.0.0.0/24 -j REJECT
[root@CentOS8 ~]# iptables -I FORWARD -d 10.0.0.10 -p tcp --dport 80 -j ACCEPT

中间的防火墙是路由器+防火墙的功能


推荐阅读
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 如何在Windows内置的Ubuntu系统中更改SSH服务的端口号设置
    如何在Windows内置的Ubuntu系统中更改SSH服务的端口号设置 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • 在 CentOS 6.7 系统维护中,常用的巡检命令包括:`uname -a` 用于查看内核、操作系统和 CPU 信息;`head -n 1 /etc/issue` 用于查看操作系统的版本;`cat /proc/cpuinfo` 用于获取详细的 CPU 信息;`hostname` 用于显示当前主机名;`ls` 命令则用于列出目录内容。这些命令可以帮助系统管理员快速了解系统的运行状态和配置信息,确保系统的稳定性和安全性。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • 对于希望在未越狱的iOS设备上修改Hosts文件的苹果用户来说,了解文件的具体位置和操作步骤至关重要。本文将详细介绍如何通过安装最新版本的iTunes来实现这一目标,并提供实用的操作指南,帮助用户轻松完成Hosts文件的编辑。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • Windows 11系统中Win键失效的解决方法与专业建议
    Windows 11系统中Win键失效的解决方法与专业建议 ... [详细]
author-avatar
kuqu00
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有