热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Linux下的NAT及防火墙的混合应用

文章标题:Linux下的NAT及防火墙的混合应用。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  【摘要】
  主要讲述Linux系统下的NAT(网络地址转换)和基于NAT的防火墙技术。
  首先由Linux系统的安装引入,着重介绍LINUX下的NAT的网络配置(服务端和客户端),以及防火墙配置原则。
  其次,从理论上阐述,“什么是NAT”和网络上的攻击方法。
  
  【引言】
  LINUX凭借其稳定性、安全性和代码开放在这几年中,风靡全球;作为一种类UNIX系统,Linux正在互联网的各个层面得到应用,从科学计算到银行取款机,从网络web服务到高层的Oracle 数据库应用。都可以看到linux的影子。而由于Linux遵循于GPL协议(公共软件许可证),任何人可以得到并且修改它的源代码,所以他的安全性相较于其他的非开源系统来说要高的多;并且它可以从网络中免费下载。从这2点来说他非常适合用于网络信息闸(软路由或网关)和自制防火墙(事实上国内的硬件防火墙厂商都是用工业X86硬件和linux来做他们的产品,虽然那不是真正意义上的硬件防火墙)。现在学校过于注重对windows及其windows平台上的软件、开发工具的学习。但是学生们没有意识到,真正撑起这个互联网的正是UNIX系统;就从我对Linux的见解为大家展示UNIX系统的一角吧。
  什么是NAT?
  
  NAT英文全称是Network Address Translation,称是网络地址转换,它是一个IETF标准,允许一个机构(包括多个网络节点)以一个地址出现在Internet上。NAT将每个局域网节点的地址转换成一个IP地址,反之亦然。它也可以应用到防火墙技术里,把个别IP地址隐藏起来不被外界发现,使外界无法直接访问内部网络设备,同时,它还帮助网络可以超越地址的限制,合理地安排网络中的公有Internet 地址和私有IP地址 的使用。
  
  为什么要进行NAT
  假设校园网提供园区Internet接入服务,为了方便管理,校园网络中心分配给园区用户的IP地址都是伪IP(内部IP),但是部分用户要求建立自己的WWW服务器对外发布信息,这时候我们就可以通过NAT来提供这种服务了。我们可以在防火墙的外部网卡上绑定多个合法IP地址或端口,然后通过NAT技术使发给其中某一个IP地址的包转发至内部某一用户的WWW服务器上,然后再将该内部WWW服务器响应包伪装成该合法IP发出的包。
  
  实验环境介绍
  本文所有到的实验环境如下:
  LINUX系统主机一台(服务端):双网卡 REDHAT 9.0 主机名:host
  WINDOWS 98 系统主机一台(客户端):单网卡    主机名:test    
  联想D-link 8口 10M/100M交换机一个
  
  【正文】
  网络的拓朴结构:
  
  
  
  一、 RED HAT 9.0 安装和注意点
  Linux是一个独立的操作系统,所以不能在其他操作系统下进行安装,他有自己的启动方式,可以采用以下两种方法进行安装。
  ● 从CD-ROM进行安装
  ● 从FTP服务器进行安装
  由于Linux系统安装(第一种方法),有随机参考手册,难度不大,所以我们着重介绍从ftp安装。
  在安装之前制作启动盘:
  1. 在windows操作系统下将安装盘放入光驱;
  2. 运行 e:\dosutils\rawrite.exe(e盘为光驱)
  3. 在运行后的界面中输入e:\images\bootnet.img
  4. 指定目标盘,输入用户软盘盘符:a
  这样一张安装程序的启动盘就建好了。
   
  用软盘引导计算机,进入蓝色界面后,输入FTP服务器地址和ftp上的用户名及口令就可以下在安装了。
  RED HAT 9.0安装界面为中文,安装中文说明基本可以完成系统定制,在此要强调的是,分区的时候,/swap(交换分区)大小要是内存大小的2倍;既然是作nat网关,要把/var(日志分区)单分出来,并且不要少于500M,有充裕的空间存储日志,也为将来将来系统故障或受到攻击做到有据可查。
  
  二.LINUX的网络设置和nat原理
  2.1网络设置
  我们把linux系统安装完后,整个设置平台算是搭建完毕,但是还要设置网络;设置网络之前,或者说让linux上网前,应该把和这台服务器应该起到作用的无关服务关掉。
  可以在命令行下敲入setup回车,会出现一个文本菜单,里面有“系统服务”一项,直接用空格键取消服务前面的勾然后重新启动系统就行了。
  假如是UNIX的熟练用户,可以在取消服务后,不用重新启动,在命令行行打入
  psaux
  会显示现在在后台运行的所有服务,看到要杀死的进程后,打入
  kill -9
  (-9代表强制杀掉进程)杀死进程。
  然后进入/etc/sysconfig/network-scripts/目录
  viifcfg-eth0会出现以下内容
  device=eth0
  Onboot=yes
  bootproto=none
  IPADDR=192.168.0.1 #(内网网卡IP)
  netmask=255.255.255.0
  TYPE=ETHERNET
  USERCTL=NO
  PEERDNS=NO
  NETWORK=192.168.0.0(网络号)
  Broadcast=192.168.0.255(广播号)
  上面的设置的意思是:eth0对内的内网网卡,ip地址为192.168.0.1,子网掩码为:255.255.255.0;
  
  viifcfg-eth1会出现以下内容
  device=eth1
  onboot=yes
  bootproto=none
  IPADDR=202.204.208.5 #(外网网卡IP)
  netmask=255.255.255.128
  TYPE=ETHERNET
  USERCTL=NO
  PEERDNS=NO
  NETWORK=202.204.208.0(网络号)
  Broadcast=202.204.208.127(广播号)
  上面的设置的意思是:eth1是对外的外网网卡,ip地址为202.204.208.5。
  网卡的设置就完成了
  
  加入nat客户端ip和名称
  vi /etc/hosts
  格式为:
  ip地址 主机名
  127.0.0.1 host
  
  指定内网网关
  vi /etc/sysconfig/network
  gateway=202.204.208.7 #(网关地址,假如服务端的外网为拨号,就不要指定)
  
  设置DNS服务器
  vi /etc/resolv.conf
  格式为
  nameserver ip地址
  nameserver 202.106.196.115
  都设置好后,从新启动系统,在命令行下打入
  route -a #察看路由表,看一下默认网关是否为202.204.208.7
  假如是的话,服务端的网络配置就已经全部完成。
  
  下面是客户端的网络配置
  因为是win 98系统,所以只给出配置参数,配置方法略
  ip地址为192.168.0.2
  子网掩码:255.255.255.0
  域名服务器:202.106.196.115
  网关:192.168.0.1
  全部网络设置完成
  
  2.2 NAT原理
  2.2.1在进入NAT设置之前,我们要先讨论一下NAT的工作原理
  在引言部分,我们已经提到了一个NAT应用实例,从这个实例中可以看出NAT和防火墙是一体的,换句话说,NAT就是防火墙。NAT对防火墙来说是子集的关系。
  在本节,我们会深入讨论NAT的原理部分,为了更清晰的认识NAT,我们借用INTERNET标准化组织发布的RFC3022文档的部分内容。
  NAT有三种类型:静态NAT(Static NAT)、网络地址端口转换DNAT(destination- NAT)、动态地址NAT(Pooled NAT)。我们主要讨论前面2种nat.
  静态nat解决问题的办法是:在内部网络中使用内部地址,通过NAT把内部地址翻译成合法的IP地址在Internet上使用,其具体的做法是把IP包内的地址域用合法的IP地址来替换。NAT设备维护一个状态表(路由表,所以也称NAT为软路由),用来把非法的IP地址映射到合法的IP地址上去。每个包在NAT设备中都被翻译成正确的IP地址,发往下一级,这意味着给处理器带来了一定的负担。但对于一般的网络来说,这种负担是微不足道的。
  网络地址端口转换NAT,也叫做反向NAT,他解决问题的方法是:在内部网络中,使用内部地址的计算机开设了网络服务(80,21等),当外部ip想访问这些服务时,NAT网关把外部访问ip翻译成内部ip,也就是说,把内部开设的服务,映射到一个合法的ip和端口上,已供外部访问。
  假如想进一步了解他的工作原理,NAT其实就是一种IP包欺诈,也可以说是对IP报头的修改,请看下表
  4位版本
  4位首部长度
  8位服务类型
  16位总长度(字节数)
  16位标识
  3位标志
  13位片偏移
  8位生存时间(ttl)
  8位协议
  16位首部校验和
  32位源ip地址
  32位目的ip地址
  其他选项
  携带数据
  IP数据包格式和报头中的各字段
  NAT网关(外202.204.208.5;内192.168.0.1)收到本地局域网内的客户机(192.168.0.2),发来的ip数据,先判断是否是本地子网中发来的,假如通过,则按照她的目的ip地址查找本地路由表进行转发,NAT在包被继续向前送出之前转换32位源地址192.168.0.1成202.204.208.5。相应的,IP包往回传时依据相同的地址进行转换。
  2.2.2 NAT设置
  我们知道了NAT的原理,就可以进行NAT的配置了,我们前面说过了NAT就是防火墙,在RED HAT9.0下自带防火墙 IPTABLS
  我们在做好网络设置后,假如要实现客户端(win98)通过服务端上网(静态NAT),可以在命令行下直接打入
  iptables -t nat -A POSTROUTING -o eth1 -j SNAT - to 202.204.208.5
  说明:
  -t nat : 调用nat表,调用这个表说明遇到了产生新的连接的包。
  -A :该命令将一条规则附加到链的末尾。
  POSTROUTING:指定正当信息包打算离开防火墙时改变它们的规则。
  -o eth1:输出接口为ETH1
  -j SNAT:跳转,也叫触发条件,当满足Snat规则是便发生跳转
  整条语句的意思为: 当防火墙遇到产生新的连接的包,则在他要离开防火墙时改变他的源ip为202.204.208.5并且从ETH1出口送出。
  
  nat的规则指定完成后,还要打开IP转发功能:
  echo 1 > /proc/sys/net/ipv
推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
author-avatar
小庄2502921871
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有