朕我回答你
用Linux的IP伪装功能实现局域网机器的代理上网,已有多篇文章做过介绍。本文提出的全面解决之道,是作者从网络管理员的角色进行考虑的。通过实例,详细说明了安装、调试Linux代理服务器过程中应该完成的工作和应该注意的事项。
本文所称的代理,系指透明代理(Transparent Proxy)。与Squid等软件的端口代理不同,透明代理仅用Linux内核支持的iptables或者ipchains来实现。
作为全面解决方案,需要管理员在安装好Linux系统之后,完成以下步骤:
(1)配置网卡和Internet连接(普通Modem、ISDN或者ADSL);
(2)设置iptables或者ipchains规则,实现IP伪装和防火墙;
(3)设置DHCP服务,为工作站提供动态IP地址分配;
(4)安装VNC、WebMin等软件,实现对代理服务器的远程管理;
(5)设置WWW服务,为工作站提供默认主页;
(6)修改LILO,加快启动速度。
不同版本的Linux,在安装和设置方面有着一些差别。下面以Turbo Linux 6.1 Workstation中文版(内核版本2.2.15)和中软COSIX Linux 3.0标准版(内核版本2.4.3)为例加以说明。
1. 配置网卡和Internet连接(普通Modem、ISDN或者ADSL)。
连接Internet可以有普通Modem拨号、ISDN拨号和ADSL等方式。其中,前两种方式,在各版本的Linux中,已经普遍支持,只要安装相应硬件的驱动,设置PPP拨号即可。
而ADSL虚拟拨号,只有比较新的Linux发行版本中,例如中软Linux 3.0、Red Hat 7.x,才包含的对它的支持。如果安装软件包中没有,需要在网上下载ADSL虚拟拨号软件,推荐使用RP-PPPOE,当前版本3.2,下载后按说明进行编译、安装即可。
设定用来连接Internet的设备名为ppp0,用来连接局域网的网卡设备名为eth0。如果ADSL Modem是通过网卡与主机连接的,则主机用来连接ADSL Modem的网卡设备名为eth1。为eth0手工分配IP地址192.168.0.254,为eth1手工分配IP地址192.168.1.254。设定ISP提供的DNS服务器地址。
此时,该主机应该能够上网。
2. 设置iptables或者ipchains规则,实现IP伪装和防火墙。
Ipchains是Linux的2.2版内核采用的防火墙规则设定工具,而iptables是Linux的2.4版内核采用的NetFilter防火墙规则设定工具。虽然在2.4版内核的Linux下,仍然可以使用ipchains,但是它的执行是通过调用NetFilter函数来完成的。
在Turbo Linux 6.1下,通过如下语句完成IP伪装:
insmod ip_masq_ftp
ipchains –A forward –s 192.168.0.0/24 –j MASQ
而在COSIX Linux 3.0下,则需要使用如下语句:
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_vs_ftp
iptables –t nat -A POSTROUTING –s 192.168.0.0/24 –j MASQUERADE –o ppp0
可以看出,两组语句除了ipchains与iptables的异同,还分别加载了与FTP相关的模块。 为什么要加载这些模块呢?如果不加载专门用于FTP的IP伪装模块,工作站上的FTP客户端软件,就只能工作在被动模式(Passive mode)。而有些用到FTP功能的软件(包括游戏),是不允许更改工作模式的。例如,畅销的武侠游戏《金庸群侠传之决战光明顶》,运行时要先连到FTP网站获取游戏的更新文件。如果不加载FTP的IP伪装模块,这个游戏就不能运行了。
可加载的IP伪装模块还有其他类型,如IRC,可以根据需要进行加载。
IP伪装实现后,可以根据实际需要,设置其他防火墙规则。在COSIX Linux 3.0下,可以进入X-Windows,使用Lokkit工具来配置防火墙。
3. 设置DHCP服务,为工作站提供动态IP地址分配。
用代理服务器提供DHCP服务,网络设置(例如IP地址、子网掩码、网关、DNS等)改变后,就无需修改每台工作站的设置,只需在DHCP的配置文件中进行相应修改。
DHCP的配置文件名是dhcpd.conf,位于/etc目录下。一个dhcpd.conf文件的举例为:
Subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.199;
default-lease-time 600;
max-lease-time 1200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.254;
option domain-name-servers 202.97.224.68, 202.97.230.4;
option domain-name “newepoch.com”;
}
其中,range规定了分配的IP地址范围,default-lease-time和max-lease-time规定IP地址的租用期限(建议调试时采用较小数值,测试正常后根据需要设定),routers提供了网关地址(代理服务器本身的IP地址),domain-name-servers规定了DNS服务器地址(此地址由ISP提供)。
有的DHCP服务器软件要求手动创建日志文件。例如,在COSIX Linux 3.0中,要执行:
touch /var/lib/dhcp/dhcpd.leases
如果服务器有多块网卡,需要在运行dhcpd的脚本中指定绑定的网卡,例如:
dhcpd eth0
需要注意的是,实验表明,如果局域网中存在Windows平台的DHCP服务器(不论是否提供服务),则Linux的DHCP服务会失效。解决的方法有二:一是确保局域网中不存在Windows下的DHCP服务器;二是将Windows下的DHCP服务器选项设成与Linux的DHCP完全相同,这样,不论工作站的IP地址等设置从哪一台DHCP服务器获得,都能够上网。
4. 安装VNC、WebMin等软件,实现对代理服务器的远程管理。
VNC是一个可以运行在Unix、Linux和Windows平台的小巧快速的远程控制免费软件,目前的版本号是3.3.3r9,包括被控端(服务器)和主控端(客户机)软件。Windows下的被控端软件叫做WinVNC,主控端软件叫做VNCViewer。该软件的网址是http://www.uk.research.att.com/vnc/。
在Turbo Linux 6.1 Workstation下,需要下载和安装VNC,运行命令是vncserver。初次运行,需要设置一个口令。
在COSIX Linux 3.0中,已经包含了VNC软件包。只需在启动时加载即可。
在Windows工作站上,有两种方式对运行vncserver的Linux服务器进行远程监控:一是Windows工作站上的VNCViewer软件,输入服务器地址、和vncserver启动序号,例如:192.168.0.254:1;二是使用Web浏览器,在地址栏中输入服务器地址和vncserver服务端口号,例如:http://192.168.0.254:5801。
COSIX Linux 3.0还提供了另一个远程管理软件WebMin,用Web浏览器的安全方式(https)进行访问。在浏览器的地址栏中输入的地址是:
https://192.168.0.254:1000
输入root口令后,就可以进行管理了。
5. 设置WWW服务,为工作站提供默认主页。
让代理服务器提供WWW服务,将工作站Web浏览器的默认主页设为该WWW服务器上的页面,内容可以是单位介绍、员工通讯录、上网须知、软件下载以及到常用网站的连接等,不但方便初学者上网,还有利于网络故障的及时发现和处理。
大部分Linux发行套件都带有WWW服务器软件Apache。只要在启动时加载即可使用,我们要做的,只是把做好的网页文件放到指定目录下。
Turbo Linux 6.1 Workstation下,Apache的默认主页目录是/home/httdpd/html;而在COSIX Linux 3.0下,默认主页目录是/var/www/html。默认的主页文件名一般是index.html。
6. 修改LILO,加快启动速度。
LILO是Linux的启动管理程序。在默认安装情况下,LILO的等待时间较长,影响了启动速度。修改/etc/lilo.conf文件,将其中的timeout=50改为timeout=5,运行/sbin/lilo,重新安装LILO。就可以大大加快机器的启动。
经过这样的设置,您的Linux机器就是一个功能强大、快速稳定的多功能代理服务器了。作者在一台P100、40M内存的586上进行这样的安装后,为本公司的十余台机器提供服务,曾经连续开机运行28天没有任何问题。当然,高版本、图形界面的Linux要求较高配置,才能充分发挥出优异的性能。