当前位置:  技术问答>linux和unix

[500分]redhat linux9下光纤拨号上网,使用iptables在代理上网时,如何只对局域网开发http服务,其他的FTP、QQ、BT、MSN等服务一律关

    来源: 互联网  发布时间:2015-07-22

    本文导语:  iptables语句该如何写! 急等!!!!!!!!!!!!!!!!!!!!!!! | 看完下面的文档一定很构解决你的问题。 在Red Hat Linux 7.3上配置NAT和封包过滤防火墙   本文档最后更新于...

iptables语句该如何写!
急等!!!!!!!!!!!!!!!!!!!!!!!

|
看完下面的文档一定很构解决你的问题。
在Red Hat Linux 7.3上配置NAT和封包过滤防火墙

 

本文档最后更新于:2003年6月7日 5时5分


--------------------------------------------------------------------------------

 

实际工作中我们会有这样的需求:让多台计算机/局域网共享一条线路访问Internet,要实现这项功能通常有两种方法:

 

l         使用NAT(Network Address Translation)

l         架设代理服务器(Proxy Server)

 

一个典型的应用环境如下图所示:



图中我们把网络划分为两个区域:Private区和Internet区。对外提供服务的Internet服务器也放在Private区,和局域网其它主机使用同一网段地址(当然,也可以不单独设Internet服务器而在接入服务器上安装Internet服务)。Linux接入服务器就是我们下面工作的重点,它负责带动局域网内的主机访问Internet,并保护局域网内的主机和服务器不受来自Internet的攻击。

 

为方便后面的脚本编写,首先来明确几个必要的参数。Linux接入服务器上面向Internet的网卡eth0配置如下,这些数据是从ISP那里得到的:

IP地址 61.156.35.114(只有一个公网IP地址,这么少?足够了)

子网掩码 255.255.255.192

网关地址 61.156.35.126

DNS服务器 202.102.152.3 202.102.134.68

局域网内的IP地址是192.168.100.0/255.255.255.0,我们在局域网内部安装了Internet服务器,地址为192.168.100.1,通过设置Linux接入服务器上的安全规则使它可以对外提供www、smtp、pop3等服务。Linux接入服务器上面向Private的网卡是eth1,其IP地址为:IP地址 192.168.100.254。

 

在接入Internet时,直接连接到Internet上的计算机是安全问题的焦点。无论是一台计算机还是由计算机连接起来的局域网(LAN),其焦点都是与Internet直接相连的机器(或设备),这台机器按照其功能人们通常称之为Internet网关、防火墙或代理服务器,我习惯于称它为Internet接入服务器。

 

作为接入服务器:我们希望我们的局域网可以共享我们的Internet连接,并且根据实际情况的需要,控制局域网内主机或用户能否通过这个网关自由或有限的访问Internet。如果局域网访问Internet的流量较大,使用频繁,我们还希望这台主机能够实现各种缓存功能(DNS缓存、WEB缓存),以减少流量和加快访问速度。

 

作为防火墙:我们在局域网内运行着本地私有服务,诸如共享打印机或共享文件系统,我们希望这些服务仅在局域网内有效,或者某些服务可以公开到Internet上,这可以通过设置相应的安全策略来实现。

 

图中的Linux接入服务器所实现的就是我们常说的代理服务器/防火墙。局域网内的终端通过Linux服务器来访问Internet,Linux 服务器是局域网和Internet连接之间的一个网关(Gateway),这时所有对Internet的访问都会经过Linux服务器。

 

从共享上网的功能来看,NAT的优点是局域网用户通过NAT方式上网时客户端不需要作任何的特殊设置,就和直接使用公网IP地址上网没什么区别;而Proxy则更方便对用户进行权限控制,并且还可以实现访问内容的本地缓存,以此加快访问速度以及内容过滤等等。

 

NAT和Proxy在Linux上的实现是Linux的典型应用之一,并且还可以结合NAT和Proxy配置透明代理(Transparent Proxy),实现两者的完美结合。本文就来介绍一下Linux NAT和封包过滤(Packet Filtering)防火墙。

 

 

§§ 安装iptables

 

开始之前有必要了解一下Linux内核对NAT、防火墙功能支持的历史,Linux内核在不同的版本使用不同的系统来实现这些功能:

Linux 2.0内核使用ipfwadm实现,实际应用中2.0版的内核已经不太常见了;

Linux 2.2内核使用ipchains实现,我的主页上摘录了一篇相当棒的关于ipchains的教程,正在使用Linux 2.2版内核的朋友可以阅读参考:

http://pangty.ta139.com/ipchains/0.htm;

Red Hat Linux 7.3使用的是2.4版内核,Linux 2.4内核实现这部分功能的机制是netfilter和iptables,这个系统可以完成封包过滤(packet filtering)、网络地址转换NAT(network address translation)以及其它对数据包(packet)的操作。

 

netfilter是Linux 2.4.x内核内嵌的功能,由它实现对流经它的数据包的处理,iptables则被定义成一个规则表格,用来描述如何对封包进行处理。netfilter、iptables、连接跟踪、以及NAT功能共同组成了Linux 2.4.x内核的网络安全体系。除了通过NAT让局域网共享线路上网之外,这些功能还可以让你在Linux上创建一个功能完善的防火墙系统。

 

很多文章在讲iptables时都会提到要重新编译内核以提供对netfilter和iptables的支持,这让大多数的新手感到无从下手。实事上,目前广泛应用的各种Linux发行版的内核已经提供了默认支持,除非特别需要,没有必要进行内核的重编译。

 

首先安装iptables软件包。查询一下系统上是否安装了iptables软件包:

 

[root@rh73 ~]# rpm -qa|grep iptables

 

如果没有,那么找到Red Hat Linux 7.3的安装光盘,开始安装iptables:

 

[root@rh73 /mnt/cdrom/Red Hat/RPMS]# rpm -ivh iptables-1.2.5-3.i386.rpm

Preparing...                ########################################### [100%]

   1:iptables               ########################################### [100%]

 

还要注意的一点是,Red Hat Linux高版本(7.1版之后)开始正式支持iptables,但仍会同时提供基于Linux 2.2.x内核的ipchains。这两个系统是不能同时存在的,因此,有必要确认并停止ipchains的服务:

 

[root@rh73 ~]# /etc/rc.d/init.d/ipchains stop

[root@rh73 ~]# chkconfig --level 0123456 ipchains off

 

如果更彻底一点,可以把已经安装的ipchains卸载掉:

 

[root@rh73 ~]# rpm -e ipchains

 

 

§§ 最简单的NAT脚本

 

为了更直观的认识在Linux上实现NAT,我们先来编写一个脚本fw.sh,其内容如下:

 

#!/bin/sh

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -A POSTROUTING -t nat -s 192.168.100.0/24 -o eth0 -j SNAT --to-source 61.156.35.114

 

只有三行,写完后存盘。然后修改文件属性,加上可执行权限:

 

[root@rh73 ~]# chmod +x fw.sh

 

运行这个脚本

 

[root@rh73 ~]# ./fw.sh

 

到客户端试一下。如果你不是使用前面介绍的DHCP给客户端机器自动配置网卡参数,则需要手工的配置客户端网卡的IP地址、子网掩码、默认网关(根据前面安装时的配置,这里应该是Linux服务器上eth1的地址192.168.100.254),以及ISP提供给你的DNS服务器地址。现在在浏览器里输入一个网址 ... ... 如果没有什么意外,现在已经可以上网了!

 

回过头来看看这个脚本:

 

echo 1 > /proc/sys/net/ipv4/ip_forward

 

这一行是通知Linux内核启动ip转发,只有启动了ip转发功能才能使用NAT。

 

iptables -A POSTROUTING -t nat -s 192.168.100.0/24 -o eth0 -j SNAT --to-source 61.156.35.114

 

这一行的意思是:把来自192.168.100.0子网并通过eth0出去的访问请求做NAT,把数据包的源地址修改为61.156.35.114。192.168.100.0/24也可以写成192.168.100.0/255.255.255.0,24代表了子网掩码掩到第24位,即255.255.255.0。

 

如果你的ISP没有分配给你固定的公网地址,那么这一行可以写成:

 

iptables -A POSTROUTING -t nat -s 192.168.100.0/24 -o eth0 -j MASQUERADE

 

modem或isdn等拨号方式上网,假如是通过ppp0拨号上网,可以这样写:

 

iptables -A POSTROUTING -t nat -s 192.168.100.0/24 -o ppp0 -j MASQUERADE

 

这是NAT是一种特例,我们称其为IP伪装(masquerading)。

|
这里是针对一个子网(192.168.100.0/24)做NAT,也可以具体到某台主机:

 

iptables -A POSTROUTING -t nat -s 192.168.100.9 -o eth0 -j MASQUERADE

 

 

§§ NAT——Network Address Translation

 

让我们仔细来了解一下Linux 2.4的NAT。前面我们编写的脚本中使用NAT功能可以带动局域网访问Internet,而Linux的NAT可以做的事情远不止这些。

 

在NAT table中,数据包通常被送到几个不同的目的地DNAT、SNAT和MASQUERADE,通常我们可以根据这个把NAT分为两种不同的类型:Destination NAT(DNAT)和Source NAT(SNAT)。

 

Destination NAT将改变数据包要到达的目的地。使用DNAT我们可以把来自Internet上发送到我们的真实IP地址上的请求转发到内部的某台服务器上,比如我们把内部的两台服务器分别配置成公司的WEB服务器和MAIL服务器,通过设置DNAT规则,可以把外部对我们服务器公网地址的WWW请求,送到局域网内部的WEB服务器上,也可以把MAIL服务的请求,送到内部的MAIL服务器上,这种NAT以前也被称为端口转发。

 

重定向(Redirection)是Destination NAT的一个特例。某些场合我们人为的把经过Linux的数据包送往本机的另外一个程序来处理,比如我们知道使用代理服务器程序的缓存功能可以加快访问Internet的速度,这在使用速度较低的Internet连接时非常有意义。这时就可以把经过Linux服务器访问Internet的请求送给某个代理服务程序,由该代理服务器完成访问请求,我们经常提到的透明代理就是这种方式,之所以称为透明,是因为在这种工作方式下你感觉不到代理的存在。squid可以配置完成这项工作。

 

Source NAT改变数据包的来源地址。使用SNAT最典型的例子就是前面我们那个脚本实现的功能,这时,来自内部局域网通过Linux接入服务器的packet的源地址都被修改为服务器外网卡的公网地址。这样也可以起到隐藏内部地址的作用,无论你从内部的哪台机器上访问Internet,从Internet上看到的,都是你的外网卡的IP地址。

 

伪装(masquerading)是SNAT的一种特殊形式,在使用上和SNAT完全一样。两者的区别在于:在Internet接入时,如果服务器端使用的是DHCP、拨号等没有固定IP地址的接入方式,masquerading可以自动的判断使用哪个IP地址,而SNAT则更多的用于有固定IP地址的场合。

 


|
我不会,但你真够狠的,只开放HTTP,不会有人骂你啊

玩笑话

帮你UP

|
比如你的网关的两块网卡是:
(内网)eth0: 192.168.0.0/255.255.255.0
(外网)ppp0

iptables -t nat -A POSTROUTING -p tcp --dport 80
         -s 192.168.0.0/24 -o ppp0 -j MASQUERADE

sysctl -w net.ipv4.ip_forward=1

|
哥们 问题解决了吗?

你可以去www.linuxsir.org 的论坛上问问,,那里"人多"

    
 
 

您可能感兴趣的文章:

  • redhat linux 9.0 上网设置问题
  • 关于 REDHAT10 下 PPPOE 上网的问题
  • Linux redhat 本本 无线路由上网配置
  • redhat 7.2能用宽带来上网么?
  • 新机器,新redhat系统,无法上网?
  • 红帽redhat下通过脚本和yum安装docker容器引擎的详细步骤 iis7站长之家
  • 安装redhat 9.0怎么不能上网?
  • redhat7.3下怎么设置ADSL拨号上网
  • RedHat9无法上网,求助!!!
  • 请问如何让在Virtual PC、VMWAR中的Redhat linux 7.2 上网
  • 如何在RedHat9.2下面设置代理上网?
  • 我装了redhat9,我的机子在局渔网内,我怎样配置才能上网!急
  • 在redhat9.0中拨号上网的问题。
  • 急急急!!我的redhat9不能上网,怎么办!在先等待!!
  • redhat7.3的上网问题!
  • 高分请教:redhat 7.2 如何设置上网问题
  • redhat9 下如何设置adsl上网??
  • REDHAT共享上网问题?
  • RedHat 9.0 如何拨号上网
  • redhat9下adsl拨号上网的问题(在线等)
  • 愁死了,一开始使用redhat7.3,安装时定制为服务器,squid不能使用,改用redhat9.0,安装时选择服务器安装选项,squid还是不能用
  • 我在redhat7.2中默认自定义安装了ftp,telnet服务如何启动这两种服务。
  • 请问这种情况我该选redhat服务器版,还是redhat客户版?哪个可以多系统共存?
  • redhat linux9.0,打开“网络服务器”,报:无法找到主机“smb:///”……,请检查拼写及代理服务器设置正确性
  • [紧急求助] 怎么打开 redhat9 的服务
  • REDHAT7.3下怎么设置才有FTP和TELNET服务?
  • 如何使用REDHAT作CS服务器
  • 我在REDHAT 9服务器上装了proftpd服务,不知道为什么登陆比较慢?
  • redhat怎么配置samba服务
  • linux redhat怎么重装服务
  • 请问怎么设置Redhat9为内网服务器?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在REDHAT下怎么拨号上网?
  • redhat7.3已经认出了我的内猫,可就是不能拨号!?
  • redhat linux 9 adsl拨号上网的问题。
  • 我怎么找不到redhat8.0的拨号程序?
  • Redhat 9在shell下面怎么用adsl拨号(图形界面没装)
  • 散分问题,如何用Redhat Linux 9.0拨号上网!
  • REDHAT拨号上网(软)
  • redhat7.3怎么拨号呀?
  • 送分,关于redhat7.2下的拨号上网问题
  • REDHAT LINUX多少版本后开始支持ADSL拨号的?
  • 救救我,我在RedHat8.0下激活了拨号网络,在重启后一直在搜寻网络,启动不能继续(不但没有实现上网,并且...)
  • 在RedHat9中,ADSL拨号不断的断线重启,每次都改变IP地址,怎么办?
  • 500分求redhat9.0拨号上网方法
  • redhat linux9.0下如何配置ppp拨号连接?---急
  • redhat/centos 常用信息查看命令整理
  • 请问redhat6.2或redhat7.0有没有汉化版本或汉化包。only redhat serial?
  • Linux/centos/redhat下各种压缩解压缩方式详解
  • 我机器上装了win98SE,win2000 Server,和Mandrake linux,我想再装个RedHat,可是到后来我发现RedHat没有认出ManDrake,我装上RedHat后,Lilo
  • Linux_centos_redhat下tar命令解压tgz文件方法
  • 不是说Liunx是免费发布的嘛,请问哪里可以下载RedHat 7.3或更高版本的redhat的完全安装版,请提供地址,我想装个redhat学学
  • redhat linux/CentOS 6/7 关闭防火墙(iptables)命令,作用:CentOS 防火墙不关行不行?
  • 三个问题,关于RedHat7.2和RedHat7.3的........
  • 根据文件大小查找文件的find命令举例(Linux,centos,redhat)
  • REDHAT8 比 REDHAT7.x要好多少? 是不是对硬件要求比较高? 另外
  • 红帽redhat下通过脚本和yum安装docker容器引擎的详细步骤
  • redhat13.8与redhat9有什么驱别?
  • Redhat/Centos下rpmbuild命令从spec文件或者tar包建立rpm
  • 求救!!安装redhat后,提示重启,但是没有没有redhat的启动选项
  • REDHAT8.0还是REDHAT9.0?
  • 请问:redhat 的桌面是gnome吗,我的redhat 9是默认安装的。
  • 请问如何做到redhat fedora core2和redhat linux enterprise 3 AS共存,谢谢


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3