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。
|