热门标签 | 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

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


推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了在CentOS 7.x上进行端口映射配置的方法,通过修改内核和配置防火墙实现端口映射。作者分享了自己使用华为服务器进行端口映射的经验,发现网速比直连还快且稳定。详细的配置过程包括开启系统路由模式功能、设置IP地址伪装、设置端口映射等。同时,还介绍了如何监听本地端口的tcp请求,以及删除规则和开放的端口的方法。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
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社区 版权所有