[Workdocuments]在RedHat8.0上配置NAT与DHCP以及防火墙

作者:罗立辉
日期:17-Oct-2003
出处:http://www.gisway.com
版本:0.1


一 前言

中科院兰州分院家属院上网项目已经启动,而公网ip地址还没有分配下来(本来公网的ip地址已经出现不足的情况)。为了解决家属院上网的问题,这需要让一台或多台计算机局域网共享一条线路访问Internet,要实现这项功能通常有两种方法:

  • 使用NAT (Network Address Translation)

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

  • 其基本的网络图如下:

          Linux采用的是redhat8.0(kernel2.4.18-14)服务器它负责带动局域网内的主机访问Internet,并保护局域网内的主机和
    服务器不受来自Internet的攻击。

    Linux服务器上面向Internet的网卡eth0配置如下:
           IP地址 159.226.138.18
          子网掩码 255.255.255.0
          网关地址 159.226.138.67
          DNS服务器 159.226.138.1 159.226.138.234
          局域网内的IP地址为192.168.0.234, 这个现在主要是为了提供代理服务。Linux服务器的另一个网卡是eth2(配置的时候把1改为了2),其IP地址为: 192.168.1.1 192.168.2.1

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

    作为DHCP服务器:DHCP是BOOTP的扩展,是基于C/S模式的,它提供了一种动态指定IP地址和配置参数的机制。这主要用于大型网络环境和配置比较困难的地方。DHCP服务器自动为客户机指定IP地址,它的配置参数使得网络上的计算机通信变得方便而容易实现了。DHCP使IP地址的可以租用,对于许多拥有许多台计算机的大型网络来说,每台计算机拥有一个IP地址有时候可能是不必要的。租期从1分钟到100年不定,当租期到了的时候,服务器可以把这个IP地址分配给别的机器使用。客户也可以请求使用自己喜欢的网络地址及相应的配置参数。 

    作为防火墙:我们在局域网内运行着本地私有服务,诸如限制某人通过Internet或者避免受到外来攻击,我们希望这些服务仅在局域网内有效,或者某些服务可以公开到Internet上,这可以通过设置相应的安全策略来实现。 

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

    二 配置

    1.NAT服务器配置
    首先安装iptables软件包。查询一下系统上是否安装了iptables软件包:
    # rpm -qa|grep iptables如果没有,那么找到Red Hat Linux 8.0的安装光盘或者到e.pku.edu.cn上搜索iptables,然后下载。 开始安装iptables:
    # rpm -ivh iptables*.rpm
    Preparing...                ########################################### [100%]
       1:iptables               ########################################### [100%] 注意iptables与 ipchains这两个系统是不能同时存在的,因此,有必要确认并停止ipchains的服务:
    # /etc/rc.d/init.d/ipchains stop
    # chkconfig --level 0123456 ipchains off 如果更彻底一点,可以把已经安装的ipchains卸载掉:
    rpm -e ipchains 确定 iptables 是否正常运行 。
    # setup
    选择 System services --> 给 iptables 前点上 “ * ”号,让其随系统一起启动;
    如果在 ipchains 前有"*"号,务必去掉。
    编写脚本内容如下:
    #!/bin/bash
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -t nat -P PREROUTING ACCEPT
    iptables -t nat -P POSTROUTING ACCEPT
    iptables -t nat -P OUTPUT ACCEPT
    iptables -F
    iptables -t nat -F
    iptables -X
    iptables -t nat -X
    echo "1" > /proc/sys/net/ipv4/ip_forward
    modprobe ip_nat_ftp
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_tables
    modprobe ip_nat_irc
    modprobe ip_conntrack_irc
    #iptables -A INPUT -i 11.11.11.76 -s $PRINET -j ACCEPT
    #iptables -A OUTPUT -o 11.11.11.76 -d $PRINET -j ACCEPT
    #iptables -t nat -A POSTROUTING -o 159.226.138.18 -j MASQUERADE
    #iptables -t nat -A POSTROUTING -s 10.0.0.0 -j SNAT --to 159.226.138.18
    #iptables --table nat --append POSTROUTING --out-interface 159.226.138.18 --source 10.0.0.0 --jump MASQUERADE
    #iptables --append FORWARD --in-interface 159.226.138.18 --match state --state ESTABLISHED,RELATED --jump ACCEPT
    #iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 159.226.138.18
    iptables -A POSTROUTING -t nat -s 192.168.1.0/255.255.255.0 -o eth0 -j SNAT --to-source 159.226.138.18 #iptables -A POSTROUTING -t nat -s 192.168.1.0/255.255.255.0 -o eth2 -j SNAT --to-source 159.226.138.18

    保存为natstart
    #chmod +x natstart (
    加上运行的属性)
    编辑/etc/rc.d/rc.local文件,在其末尾加上一句运行刚才编辑好脚本的语句/etc/natstart
    运行:./etc/natstart

    2.NAT用户设置

          因为用户以windows作为Internet的平台是大众的。所以我以windows平台为例来配置。

          右键点击桌面上的“网上邻居”“属性”

    然后双击“本地连接”“属性”

    在出来的画面上把“internet协议tcp/ip”点上后再按”属性“


    然后会出现下面的窗口。请按下面的要求填写。按后点“确定“即可。

    三 DHCP配置

    1DHCP服务器配置
    安装:
    (a) #rpm -ivh dhcp-2.0-5.i386.rpm
    (b) #rpm -ql dhcp | more
    会得到以下列表:
    /etc/rc.d/init.d/dhcpd
    /usr/doc/dhcp-2.0
    /usr/doc/dhcp-2.0/CHANGES
    /usr/doc/dhcp-2.0/README
    /usr/doc/dhcp-2.0/RELNOTES
    /usr/doc/dhcp-2.0/dhcpd.conf.sample
    /usr/man/man5/dhcp-options.5.gz
    /usr/man/man5/dhcpd.conf.5.gz
    /usr/man/man5/dhcpd.leases.5.gz
    /usr/man/man8/dhcpd.8.gz
    /usr/man/man8/dhcrelay.8.gz
    /usr/sbin/dhcpd
    /usr/sbin/dhcrelay
    /var/state/dhcp

    作用:
    /etc/rc.d/init.d/dhcpd , 它可用来控制 dhcp 服务器的行为, :
    启动: /etc/rc.d/init.d/dhcpd start
    停止: /etc/rc.d/init.d/dhcpd stop
    重新启动: /etc/rc.d/init.d/dhcpd restart
    观察运作状况: /etc/rc.d/init.d/dhcpd status

    #vi /etc/dhcpd.conf
    以下是编写的脚本

    # configure file /etc/dhcpd.conf

    # /etc/lib/dhcp/dhcpd.lease

    # added by luolh 2003-11-05 11:18

    default-lease-time 600;

    max-lease-time 7200;

    ignore client-updates;

    ddns-update-style none;

    option subnet-mask 255.255.255.0;

    option broadcast-address 192.168.0.255;

    option routers 192.168.2.1;

    option domain-name-servers 192.168.2.1;

    option domain-name "www.gisway.com";

    subnet 192.168.2.0 netmask 255.255.255.0 {

      range 192.168.2.1 192.168.2.255;

    }

    host luolh {

    hardware ethernet 12:34:56:78:AB:CD;
    fixed-address 192.168.2.2

    }

    然后启动: /etc/rc.d/init.d/dhcpd start 

    2.用户DHCP配置
    在上面NAT用户配置里已经讲解了基本的配置。按那些步骤走下来,最后ip地址指定时:选自动获得ip地址,和自动获得DNS服务器地址。

    四 防火墙设置

       为了限制用户上网和为了避免攻击而采取的措施。

    1.  先禁止所有的连接

    Iptables –t nat –P PREROUTING DROP

    2. ip地址与mac地址绑定

    Iptables –t nat –A PREROUTING –s 192.168.0.88[s1]  –m mac -–mac-source ! 00:50:BA:7F:0D:73[s2]  –j DROP

    3. 输入 #setup

    ”Firewall configuration”

    Security Level: (*) High ( ) Medium ( ) No firewall

    然后把所需的服务和端口打开:如DHCP SSH HTTP FTP 配置的squid代理的8086端口。

    4.显示所有的规则

       Iptables –t nat –L

    5.删除规则

       Iptables –t nat –D  PREROUTING 1…n(这是顺序号)

     [s1]Ip地址

     [s2]Mac地址



    参考信息

    CHINA UNIX - http://bbs.chinaunix.net/


    原文出处

    http://www.gisway.com/WorkDoc/NAT&DHCP.htm

    回上页<-|->回首页