综合资讯 技术文章 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

电子技术 | 技术资料 | 嵌入式系统 | 单片机专题 | DSP专题
EDA/PLD专题 | 电源技术专题 | 电子制作专题 | 其他综合 | 芯片选型

所在的位置:首页在线阅读嵌入式系统linux 笔记(一)正文
 
系统管理—系统安装配置—路由功能

  • ADSL
  • IPChains
  • ADSL


        本解决方案主要针对公司、学校、网吧等需用一条ADSL将整个局网连上INTERNET,适合于10 -50台计算机的中小型网络用户。对于10台以下计算机的用WINAGTE、SYGATE就蛮好用。

        让我们来看看具体环境先,某公司总部办公室21间、计算机30台。组成10-100MB对等局域网,用一条ADSL宽带线路跑,以前用WINGATE将局域网连上INTERNET,后来觉得不爽我又用WINDOWS2000双网卡做了个NAT地址转换,使用网关和透明协议拖。这下下感觉舒服些了。呵呵,用了不久又发现些不大不小的毛病:比如内部互发OICQ慢啊,访问SINA.COM.CN等个别网站有问题啊等等。MS的东东看似简单但是当你想微调一下系统的时候,你就会突然发现原来人生多么无奈啊。痛定思痛!:(我毅然决定放弃WINDOWS2000,改用LINUX!!

        要用LINUX得搞台机器吧,东拼西凑好不容易搞了一台。各位看官请看: INTEL FX主板+PENTIUM 75芯片+16MB内存+540MB硬盘+512K显卡+DE220 10MB网卡。软件嘛随便找个LINUX发行版,我手头有REDHAT 6.2 核心是2.2.14,按SERVER的安装方式,经过长达48分钟左右的安装,可爱的#提示符出现在大家面前!各位看客也可以根据自己的具体情况安装。

      硬件、软件都装好了,下面开始具体配置。(加了#提示符号表示输入命令)

    1、用ifconfig看看网络配置
    [root@localhost /root]#ifconfig
    lo   Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    UP LOOPBACK RUNNING MTU:3924 Metric:1
    RX packets:23 errors:0 dropped:0 overruns:0 frame:0
    TX packets:23 errors:0 dropped:0 overruns:0 carrier:0

     只有lo没找到网卡。不急,自己配。我是DLINK的DE220 IRQ=3 IO=300,兼容NE2000。在/etc/conf.modules 加两句。
    具体如下:

    [root@localhost /root]#cd /etc
    [root@localhost /root]#vi conf.modules
    alias eth0 ne
    options eth0 io=0x300 irq=3

        IO和IRQ可以根据你自己的网卡设置如果不能插入就按INSERT,加完就按ESC。再按: ,再输入w 存盘,再q 退出。如果不放心就 #more conf.modules 看看写进去没有。
        一般市面上ISA的便宜网卡都兼容NE2000。如果是新手在LINUX下安装网卡的可能会遇到这样那样的问题,多在网上找找看看,一般都能解决。要提醒大家最好别用PNP即插即用模式,在LINUX出了问题不好解决,简直是场噩梦。

    2、下面配置网卡IP地址, 在/etc/sysconfig/network-scripts下有个文件ifcfg-eth0 写成如下:

    DEVICE=eth0
    IPADDR=192.168.0.254
    这是网卡的IP地址,以后客户机的网关就是这个地址。
    NETMASK=255.255.255.0
    NETWORK=192.168.0.0
    BROADCAST=192.168.0.255
    ONBOOT=yes
    BOOTPROTO=none

        重启动就能找到网卡。然后

    [root@localhost /root]#ifconfig
    eth0  Link encap:Ethernet HWaddr 00:40:05:64:11:28
       inet addr:192.168.0.254 Bcast:192.168.0.255 Mask:255.255.255.0
         UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
         RX packets:347573 errors:0 dropped:0 overruns:0 frame:0
         TX packets:40194 errors:0 dropped:0 overruns:0 carrier:0
         collisions:35 txqueuelen:100
         Interrupt:3 Base address:0x300
    lo    Link encap:Local Loopback
         inet addr:127.0.0.1 Mask:255.0.0.0
         UP LOOPBACK RUNNING MTU:3924 Metric:1
         RX packets:23 errors:0 dropped:0 overruns:0 frame:0
         TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
        哈哈,eth0找到网卡了,配置也正确,恭喜恭喜!进行下一步。

    3、下一步做ADSL的驱动。
        去http://www.roaringpenguin.com/pppoe/rp-pppoe-2.6.tar.gz下个驱动程序先,大概85K大小。copy到/root去。然后

    #tar xvfz rp-pppoe-2.6.tar.gz
    #cd rp-pppoe-2.6
    #./go

        开始安装,装好就#make一下下,开始配置ADSL。

    Welcome to the Roaring Penguin ADSL client setup. First, I will run some checks on your system to make sure the PPPoE client is installed properly... Looks good! Now, please enter some information:
    USER NAME
    >>> Enter your PPPoE user name (default):

        这里输入在电信局申请的adsl的帐号

    INTERFACE
    >>> Enter the Ethernet interface connected to the ADSL modem For Solaris,this is likely to be something like /dev/hme0. For Linux, it will be ethn,where 'n' is a number.(default eth0):

        问你用哪片网卡拨号,默认是第一片eth0就可以了

    4、最后一步:配置ipchains伪装IP。
        在 /etc/sysconfig的network文件里保证要有这句: FORWARD_IPV4=true
        然后改/etc/rc.d/rc.local这个文件,加入以下内容

    <SPAN la
    Do you want the link to come up on demand, or stay up continuously? If you want it to come up on demand, enter the idle time in seconds after which the link should be dropped. If you want the link to stay up permanently, enter 'no' (two letters, lower-case.)
    NOTE: Demand-activated links do not interact well with dynamic IP addresses.You may have some problems with demand-activated links.
    >>> Enter the demand value (default no):

        用缺省的no就可以了。

    Please enter the IP address of your ISP's primary DNS server. If your ISP claims that 'the server will provide DNS addresses', enter 'server' (all lower-case) here. If you just press enter, I will assume you know what you are doing and not modify your DNS set up.
    >>> Enter the DNS information here:

        这里填你ISP的DNS地址,成都用61.139.2.69,辅助DNS成都可用202.98.127.32

    PASSWORD
    >>> Please enter your PPPoE password:
        ADSL拨号密码这个东东。

        搞定!爽爽,用#adsl-start 就可以开始拨号。如果连接成功系统会提示你:
    …….connect
        用ifconfig看看。[root@localhost /root]# ifconfig

    eth0   Link encap:Ethernet HWaddr 00:40:05:64:11:28
         inet addr:192.168.0.254 Bcast:192.168.0.255 Mask:255.255.255.0
         UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
         RX packets:347573 errors:0 dropped:0 overruns:0 frame:0
         TX packets:40194 errors:0 dropped:0 overruns:0 carrier:0
         collisions:35 txqueuelen:100
         Interrupt:3 Base address:0x300
    lo    Link encap:Local Loopback
         inet addr:127.0.0.1 Mask:255.0.0.0
         UP LOOPBACK RUNNING MTU:3924 Metric:1
         RX packets:23 errors:0 dropped:0 overruns:0 frame:0
         TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
    ppp0   Link encap:Point-to-Point Protocol
         UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
         RX packets:20498 errors:0 dropped:0 overruns:0 frame:0
         TX packets:19187 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:10

    看见ppp0没有!'

    IPChains


    用Linux+IPChains代替Windows+WinGate
    蓝森林 http://www.lslnet.com 张中华

        任务:办公室有10台电脑,组成局域网,其中1台名为gate的机器配有ISDN卡,可拨号上网,另外9台机器也要上网,由gate机器做代理或网关,共享其ISDN设备。原来的方案是:gate机器上的操作系统是Win98,使用的代理软件是WinGate。现在,gate机器的操作系统换成了Linux,怎么让其它9台机器也能上网?
        经过尝试,我使用IPChains的IP伪装转发功能成功地做到了这一点。我的配置为:蓝点Linux 2.0,Kernel-2.2.16,isdn4linux v3.1pre1,上海贝尔生产的ISDN内置卡,型号为SBT6021。
        下面介绍具体做法。介绍顺序为:内核->ipchains的配置->其它机器的配置。

    0、 前提条件

        前提条件当然就是这台配有ISDN卡,安装了Linux的名为gate的机器,本身必须能够顺利拨号上网。我已做到了,具体操作过程写在我的另一篇文章《在Linux下使用ISDN拨号上网》中。

    1、 内核

        这个方案的原理是:由于这台gate机器建立拨号连接后,具有真正的IP地址,能够正常地访问Internet,而局域网内其它机器却没有真正的IP地址,不能象gate机器那样正常
        地访问Internet,解决办法就是由gate机器代劳其它机器的Internet访问请求,假装是它自己的。把这台gate机器作为局域网的网关,当它收到来自局域网内其它机器的请求数据包时,进行伪装,然后再转发出去;相应地,当伪装后发出去的数据包得到响应返回时,先对该响应数据包进行还原,再转交给回局域网内真正发出请求的那台机器。这种做法叫做IP Masquerade(IP伪装)。
    要Linux内核支持IP伪装这种功能,在编译内核时,必须选中下列选项:

    Network firewalls
    IP: firewalling
    IP: masquerading
    IP: ipportfw masq support
    IP: ipautofw masquerade support
    IP: ip fwmark masq-forwarding support
    IP: ICMP masquerading

        但我不必急于编译内核,如果现有的内核已经包含这些选项了,我又何必重复一遍呢。
    那我怎么知道现有内核是否已经包含这些选项了呢?看内核编译配置文件/usr/src/linux/.config(注意:文件名以"."开头的文件是隐藏文件,要用ls -a才可看到。)我看到其中有下面这7行内容,对应于刚才的7个选项:

    CONFIG_FIREWALL=y
    CONFIG_IP_FIREWALL=y
    CONFIG_IP_MASQUERADE=y
    CONFIG_IP_MASQUERADE_ICMP=y
    CONFIG_IP_MASQUERADE_IPAUTOFW=m
    CONFIG_IP_MASQUERADE_IPPORTFW=m
    CONFIG_IP_MASQUERADE_MFW=m

        "=y"表示内核直接支持(代码已链入内核中),"=m"表示模块支持(代码在另外的内核中,可由内核载入)。于是这就表明,蓝点Linux 2.0的原有内核已包含这些选项了,我就不用重新编译内核啦。
        但仍然得做点事情,首先必须命令内核,启动IP转发功能:
            echo 1 > /proc/sys/net/ipv4/ip_forward
        往/proc/sys/net/ipv4/ip_forward里写入"1"就行了。
        有些功能如ftp, irc等的伪装,需要相应的模块支持,这些模块放在/lib/modules/2.2.16/ipv4目录中,装入它们:
            depmod -a
            modprobe ip_masq_ftp
            modprobe ip_masq_irc
            modprobe ip_masq_raudio

    2、 ipchains的配置
        蓝点Linux 2.0包含的ipchains软件已经足够满足我的要求了,我就不必安装新的,只需配置一下即可。Ipchains是一个包过滤器,功能强大,设置也复杂,但我只想使用其IP伪装转发功能而已,设置得以简化。我这台Linux机器在一个局域网上,局域网的域名为thalia.com,地址为210.96.100.0,这台机器的主机名为gate,地址为210.96.100.10。

        对ipchains过滤器进行设置,就是设置各种链及规则。先看看目前情况如何:

            ipchains -L
        得到类似下面的信息:

            Chain input (policy ACCEPT):
            Chain forward (policy ACCEPT):
            Chain output (policy ACCEPT):

        没什么规则,3条链的策略都是接受。
        由于只是使用伪装转发功能,所以只对forward链进行操作。
        ipchains -P forward DENY把forward链的策略设为DENY,拒绝通过。此后增加可通过的规则,逐渐允许更多的数据包通过,这是一种先紧后松的做法。

            ipchains -A forward -s 210.96.100.0/255.255.255.0 -j MASQ

        增加1条规则,这条规则说明:对来自210.96.100.0局域网内(网络掩码为255.255.255.0)的数据包(-s 210.96.100.0/255.255.255.0),进行伪装处理(-j MASQ)。
        这时候再看一下情况如何:
            ipchains -L
        得到类似下面的信息:
            Chain input (policy ACCEPT):
            Chain forward (policy DENY):
            target prot opt source destination ports
            MASQ all ------ 210.96.100.0/24 anywhere n/a
            Chain output (policy ACCEPT):
            forward链中多了1条MASQ规则。
        要简单地实现共享ISDN上网,这已经足够了。

    3、 其它机器的配置
        配置局域网上的其它Win98, Win2000机器,要点是把缺省网关设为那台Linux gate机器,DNS域名服务器也设为那台Linux gate机器。应用软件如IE,OutlookExpress等不用做任何设置,想象成ISDN装在本机上就行。
        我现在就去设置1台Win98机器试试看。
        (1)在“控制面板 | 网络 | 配置”下,选中“TCP/IP->3Com PCI Ethernet Adapter”(这台机器配的是3Com网卡),点击“属性”按钮,弹出TCP/IP属性对话框。
        (2)到“IP地址”页中,指定IP地址,IP地址为210.96.100.14,子网掩码为255.255.255.0;到“网关”页中,添加新网关210.96.100.10。
        (3)机器重启。
        (4)打开IE,浏览http://168.160.224.103(即新浪网sina.com.cn),看到了新浪的首页;但是浏览http://www.sina.com.cn,却不行。这是域名解析的问题。
        (5)重复(1)步骤,弹出TCP/IP属性对话框,到“DNS配置”页中,启用DNS,主机名写zzh,添加DNS服务器搜索顺序210.96.100.10。机器重启。打开IE,再次浏览http://www.sina.com.cn,这次好啦。

    4、 形成shell文件
        上面对内核和ipchains的配置是逐条命令进行的,已经全部成功通过,现在把它们写成shell文件。
    /etc/ppp/ip-masq-start文件内容如下:
    # IP masq
    echo 1 > /proc/sys/net/ipv4/ip_forward
    depmod -a


    modprobe ip_masq_irc
    modprobe ip_masq_raudio
    ipchains -P forward DENY
    ipchains -A forward -s 210.96.100.0/255.255.255.0 -j MASQ

        让它成为可执行文件:
            chmod a+x /etc/ppp/ip-masq-start
        以后事情就简单了。要开启IP伪装转发功能,下命令/etc/ppp/ip-masq-start。


    返回 上一页 下一页   信息发布:工号01   转引自: 【 】 【打印】 【关闭

    关于我们 ┋ 友情链接


    深圳市福田区海滨广场恒福花园恒华阁11F
    电话:0755-88305872 传真:0755-88305880
    Copyright©2005-2007 无忧电子开发网版权所有

    粤ICP备05064233号