双网卡的应用之一是:Windows NT服务器用作路由器,其实在LINUX下同样可以实现软路由器.
一:在linux下安装双网卡
当我们使用FreeBSD作网关或防火墙时,会要求在系统中安装两块网卡,分别跨越两个网络,一块卡用于外部网络,而另一块用于内部网络。好了,就象大家知道的那样,现在需要让系统支持这些新设备,而对于网络适配器,FreeBSD是通过定制内核来支持的。当然,首先要让内核了解设备所用的硬件资源,对于使用PCI接口的网卡,我只能说,拥有高科技真是幸福,
因为这类网卡在PCI PnP BOIS的支持下,只要在内核中多添一个设备配置就可在新内核引导时自动检测并启动;而对于ISA的卡,就没有这样简单了,不过只要去PnP用jumpless模式,用卡所带的设置程序设好适当的资源,就可以在内核中用相应的配置来通知系统在引导时按这样的资源来启动设备。我们来看看具体步骤:
1、定制新内核以适应新设备
这里有一个问题需要注意一下,众所周知,定制内核至少需要在系统上安装源代码中的"内核原代码"(FreeBSD Kernel Sources)部分,先前没有安装的可以用 /stand/sysinstall添加这部分。
对于PCI网卡,例如你用的是Realtek 8139,可以在内核配置文件中添加一行:
device de0 < ---- 你原有的DC21040 Ethernet adapters
device rl0 < ---- 新加入的Realtek 8139,因为是PCI卡,系统会自动检测卡资源
对于ISA网卡,例如你用的是NE2000兼容卡,同样在内核配置文件中添加与已设定资源相符合的描述行:
device de0 < ---- 你原有的DC21040 Ethernet adapters
device ed0 at isa? port 0x300 net irq 3 iomem 0xd8000 vector edintr
上面第二行是新加入的NE2000兼容网卡,因为是ISA卡,所以一定要指定卡所用的资源以便系统可以在引导时检测到。可能你会问,如果用的都是同样芯片类型的卡,该如何配置呢?可以这样做:
device ed0 at isa? port 0x300 net irq 3 iomem 0xd8000 vector edintr
device ed1 at isa? port 0x320 net irq 10 iomem 0xd8000 vector edintr
可以看到,有多个同样类型的设备时,按照UNIX的编号习惯依次就是ed0、ed1……。不过,在上面的配置中两块卡的BOOTROM资源会发生冲突,但不影响启动,你可以根据情况用卡所带设置程序把它们适当设开即可。
此时已经按要求定制好了新的内核配置,现在就可以按FreeBSD handbook中的描述把新内核编译并安装好。编译工作一切顺利的话我们的系统就已经支持了新的网卡设备,接下来就是为新网卡配置相应的网络接口。
2、添加新网络接口
比较简单直观的方法是用/stand/sysinstall来对新设备配置新接口的一系列参数,当然BSD的传统方法是以修改相应的配置文件来达到目的的,编辑/etc/rc.conf:
hostname="example.host.net"
network_interfaces="ed0 ed1 lo0"
在这里加入新的网络接口以便在引导时用后面ifconfig配置的参数进行初始化
ifconfig_ed0="inet 192.168.0.1 netmask 255.255.255.0" #原有的网络接口参数
ifconfig_ed1="inet 192.168.1.1 netmask 255.255.255.0" #新网络接口参数
defaultroute="xxx.xxx.xxx.xxx" #原有的网络默认路由
好了,安装双网卡的工作就完成了,以后可以根据具体使用情况自行配置NAT、GATEWAY等东东了。
二:ADSL+LINUX软路由器
本解决方案主要针对公司、学校、网吧等需用一条ADSL将整个局网连上INTERNET,适合于10 -50台计算机的中小型网络用户。对于10台以下计算机的用WINAGTE、SYGATE就蛮好用。
让我们来看看具体环境先,某公司总部办公室20间、计算机30台。组成10-100MB对等局域网,用一条ADSL宽带线路跑,要用LINUX得搞台机器吧, INTEL bX主板+PENTIUM II350芯片+128MB内存+8.4g硬盘+9850,2兆显卡+DE220 10MB网卡。软件Turbolinux6.1 核心是2.2.14,按SERVER的安装方式,经过长达34分钟左右的安装,可爱的#提示符出现在大家面前!各位看客也可以根据自己的具体情况安装。
硬件、软件都装好了,下面开始具体配置。(加了#提示符号表示输入命令)
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大小。 考到/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就可以了
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 setup. > > > Enter the DNS information here:
这里填你ISP的DNS地址,,辅助DNS
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 inet addr:61.157.91.227 P-t-P:61.157.91.1 Mask:255.255.255.255 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没有!
4、最后一步:配置ipchains伪装IP。
在 /etc/sysconfig的network文件里保证要有这句: FORWARD_IPV4=true
然后改/etc/rc.d/rc.local这个文件,加入以下内容
route add -net 192.168.0.0 netmask 255.255.255.0 eth0 depmod -a modprobe ip_masq_ftp modprobe ip_masq_irc modprobe ip_masq_raudio /sbin/ipchains -P forward DENY /sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ
以防万一:# echo 1 > /proc/sys/net/ipv4/ip_forward 这样一下下。存盘,退出,重启,完。是不是很简单啊!这样一台最简单的软路由就做好了,其实ipchains功能很强大,这里就不详细再讲了如有需要我会另外找时间再写。
5、配置的你每台客户机,如果用WINDOWNS系列,只要在网络设置的网卡的TCP/IP中加入网关192.168.0.254
注意:如果没用LINUX做DNS的话还要加DNS地址,北京的DNS地址是:211.152.96.111和202.98.127.32
|