局域网通过LINUX主机上网手记

      我的日志 2006-11-14 20:36
前两天接到一项任务,要把一个局域网的机器通过一台机器上INTERNET,这样的事情做过不少,无非是选一台好点的机器装上SYGATE什么的就行了,但是这次不同,人家非要求用LINUX,说什么稳定。——本人对此并无异议,只好放弃最熟悉的WIN,开始试这把牛刀,LINUX其实很早就玩过,不过只是玩玩而已。
***
  首先配置网络,把局域网的机器全部使用私有IP(192.168.0.*,其中DNS和代理用44,别人不愿意用这个嘛),如果大家有兴趣还可以试试DHCP,反正我是干完就好也无所谓了,这里不说。
操作系统这次选择的是TURBOLINUX,这版本自己带了不少东西,不管那么多,反正有SQUID可以做代理应该就可以拉,安装过程还算顺利(就算有麻烦也不会在这里说)。
***
  设置域名服务DNS,其实简单的设个缓存能够找到你的ISP就可以(当然你要架站另当别论,不过只能指向真实IP,如果你有足够多的IP,速度够快还可以搞托管赚钱)
设置DNS要修改这些文件:
/etc/host.conf
/etc/resolv.conf
/etc/named.boot # BIND4
/etc/named.conf # BIND8
# 以下路径以及文件名在named.boot和named.conf中设定
具体的设置请大家翻书吧,最经典的是《DNS 与 BIND》O’REILLY的
/var/named/named.cache # 寻找根DNS
/var/named/named.local # 设置本地主机
/var/named/named.host # 设置域名——》IP解析
/var/named/named.rev # 设置IP——》域名解析
以上的还可以用TURBOLINUX的 TURBONETCFG来设置。完成后记得把NAMED进程重启动一把:
/etc/rc.d/init.d/named restart(可以用的参数start|stop|start)
然后用NSLOOKUP测试,看能不能解析成功,还可以用 ANY、NS 等参数
***
然后开始设置SQUID。
TURBOLINUX所带的SQUID配置文件在/ETC/SQUID/SQUID.CONF(别的系统我可不敢说)
改如下的几行够用就行:
http_port 3128
# 默认代理服务器的端口
cache_mem 24 MB
# 在内存中开辟出缓冲区
cache_dir /var/spool/squid 2048 16 256
# 开辟硬盘缓冲区
# 各种LOG文件(可以只要access.log)
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
pid_filename /var/run/squid.pid # 也可以不要这个进程文件
#自己的DNS服务器
dns_nameservers 192.168.0.44
# 这些都是系统缺省的,核对就行了。如果要设置其他可以看注释,很简单的
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl allowed_hosts src 192.168.0.0/255.255.255.0
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all # 改为 http_access allow all 允许所有机器存取
icp_access allow all
miss_access allow all
设置好以后记得启动SQUID让设置生效
/etc/rc.d/init.d/squid start # 可以用的参数 start|stop|restart
这时候去局域网的WIN98上设置DNS、网关,在IE里设置代理服务器的IP和端口号
我用的是192.168.0.44:3128,你需要REBOOT你的WIN98,然后试试看,应该可以访问WEB了。
成功了吗?如果你只要访问网页这就可以,不过如果你想用OICQ和OUTLOOK还得望下看。
****
最后该设置IPCHAINS:(一定要内核支持IP转发才好,不然还得重连内核)
TURBILINUX的配置在这里/usr/src/linux/configs/kernel-2.2.13-i686.config
如果不是这套系统可不一定在哦。或许会在/usr/src/linux/.config 自己找吧
该文件中如果有这些就不必重连内核了否则自己想办法
CONFIG_IP_FIREWALL=y
CONFIG_IP_MASQUERADE=y
CONFIG_IP_MASQUERADE_ICMP=y
CONFIG_IP_MASQUERADE_MOD=y
CONFIG_IP_MASQUERADE_IPAUTOFW=m
CONFIG_IP_MASQUERADE_IPPORTFW=m
CONFIG_IP_MASQUERADE_MFW=m
否则要连内核或者换一套LINUX(最简单)
如果不是Y是M,表示是模块支持,得加模块
启动ip转发功能:
原先什么也没有长度是0,重起机后也是0
echo 1 > /proc/sys/net/ipv4/ip_forward
相应的模块在/lib/modules/2.2.13/ipv4目录中,装入它们:
depmod -a
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_irc
/sbin/modprobe ip_masq_portfw
/sbin/modprobe ip_masq_user
/sbin/modprobe ip_masq_autofw
/sbin/modprobe ip_masq_quake
/sbin/modprobe ip_masq_vdolive
/sbin/modprobe ip_masq_cuseeme
/sbin/modprobe ip_masq_mfw
/sbin/modprobe ip_masq_raudio
以上的可要手工输入的最好制作一个脚本:ipchains.start
不然每次手工敲还不累死你
现在测试一下IPCHAINS:
# ipchains -L
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
好了,我们运行:
# ipchains -P forward DENY
然后看 ipchains -L,变成了
Chain input (policy ACCEPT):
Chain forward (policy DENY):
Chain output (policy ACCEPT):
继续下去:
# ipchains -A forward -s 192.168.0.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 ------ 192.168.0.0/24 anywhere n/a
Chain output (policy ACCEPT):
这样就好了。测试吧。记得把最后的两行也加入脚本ipchains.start
# ip masq
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/depmod -a
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_irc
/sbin/modprobe ip_masq_portfw
/sbin/modprobe ip_masq_user
/sbin/modprobe ip_masq_autofw
/sbin/modprobe ip_masq_quake
/sbin/modprobe ip_masq_ vdolive
/sbin/modprobe ip_masq_cuseeme
/sbin/modprobe ip_masq_mfw
/sbin/modprobe ip_masq_raudio
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 192.168.0.0/255.255.255.0 -j MASQ
chmod 777 ipchains.start
以后每次REBOOT后要这样启动SQUID和IPCHAINS
/etc/rc.d/init.d/squid start
/etc/ipchains.start # 看你把这个脚本放哪里了
当然,如果要省事,最好把这两行放进系统初始化的文件里,让每次REBOOT的时候能够自动调用。
我的初始化文件在/etc/rc.d/rc.sysinit(你的是不是我就不管了)在该文件的最后加入如下:
/etc/rc.d/init.d/squid start
/etc/ipchains.start
好了,这样你局域网里的机器就不仅可以上网浏览,还可以用OICQ和OUTLOOK等软件了。如果有问题,可以发MAIL和我交流
sandj@china.com

相关链接:
实现一个网桥式防火墙
http://club.sob8.com/columns.php?action=columns


标签集:TAGS:计算机 IT 网络
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}