LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1875|回复: 7

菜鸟redhat9调试笔记

[复制链接]
发表于 2003-6-2 07:44:47 | 显示全部楼层 |阅读模式
我是菜鸟,经常自以为是,所以写的不对的地方请高手指点

5月31
今天是周末,心情比较好,所以决定研究linux的内核编译,之所以想要内核编译,一方面是想要使服务器更加稳定,快速,另外一个原因是我在使用过程中,当要mount NTFS分区的时候,老是提示我内核不支持,我知道RH9的内核是支持NTFS的,所以决定好好编译一下内核,虽然以前我编译内核从来没有成功过。

废话少说,开始编译,菜鸟们看好了,这可是我的调试手记!

1。要编译内核,首先要到合适的编译路径,一般路径都在/usr/src/linux,RH9的路径是在/usr/src/linux-2.4,只有在这个路径你的make config/make menuconfig/make xconfig命令才会生效。
否则不在这个路径编译,会提示make: *** No rule to make target 'config' , stop的错误提示,菜鸟们经常会犯这个错误哦!

2。因为我是菜鸟,所以今天告诉大家的编译方法还是比较保守的,高手就不用看了,首先我们在编译之前最好运行这个命令: make mrproper 如果你以前编译过内核,那这个命令就可以删除以前的建构的痕迹。相信大多数菜鸟是没有编译过的,所以一般不用运行,但是你要是想第2次或第3次编译(我就编译了好多次),那就这个命令就非常有用了。

3。make oldconfig ,大家可能觉得很奇怪我怎么用这个命令,之所以用这个命令,是因为我是菜鸟,前几次自定义的编译内核都没有成功引导系统,无意中发现这个命令,这个命令会读取系统默认的内核,然后生成.config文件,那以后配置编译就在默认的基础上添加/删除就行,不会因为漏掉什么配置而使系统不能引导,相信我没错,如果你是高手的话,那就免了。

4。make menuconfig 开始配置,把你认为不需要的东西都不要编译到内核,比如什么业余电台,scsi,I20,IrDA,isdn,bluetooth,反正要删除的东西你要有绝对把握哦,多删了造成系统不能引导可不要来找我。当然不会忘了加上ntfs的支持,在file systems这一项里,顺便把codepage 936也编译进内核,后面会用到的。保存为.config后退出。

5。make dep 设置依赖关系

6。make clean 准备要建构的源码树

7。make bzImage 建构内核   漫长的时间,去做家务吧

8。make modules  配置模块,也比较漫长,我都把家里的活干完了,还没编译好

9。make modules_install  使用配置的模块

10。make install  把新的内核和相关文件复制到正确的目录,并修改grub.conf文件(我是用grub引导)在grub菜单会添加一个新的内核启动选项,当然你也可以自己修改。


好了重新启动reboot,看看你的新内核能否顺利引导,好棒哦!系统引导后,用free -m一看,内存从原来的56M占用,降到了25M,变化好大哦,在看一下top,cpu idle居然100%,进入xwindows,时间都不到20秒,够快吧!

别忘了正事!看能否加载nfts分区?

mkdir /mnt/ntfs

mount /dev/hdb5 /mnt/ntfs 系统提示
NTFS:Warning! NTFS volume versiion 十Win2K+ : Mounting read-only

ok,果然顺利加载,看来编译是成功的!,下面问题又出来了,进入/mnt/ntfs目录一看,出现一大堆??的文件,使用zhcon都不行,印象中好像都是中文,难道对中文不支持,不至于吧!马上上网寻找资料,哦原来还有参数
重新加载

mount -o iocharset=cp936 /dev/hdb5 /mnt/ntfs

看看,现在不是??,但是是乱码,没关系,加载zhcon,再看,ok了重要显示中文了,知道了吧,为什么一开始要大家把codepage 936编译进去的原因。


现在问题又出来了,我总不能每次手动加载windows分区吧,有个办法,修改/etc/fstab

我的fstab修改如下:

LABEL=/                 /                       ext3    defaults        1 1
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /proc                   proc    defaults        0 0
none                    /dev/shm                tmpfs   defaults        0 0
/dev/hda3               swap                    swap    defaults        0 0
/dev/cdrom              /mnt/cdrom              udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/hdb5              /mnt/ntfs                   ntfs iocharset=cp936    0 0
/dev/hdb1              /mnt/c                  vfat rw,iocharset=cp936    0 0
/dev/hdb6              /mnt/d                  vfat rw,iocharset=cp936    0 0

其中rw参数是读写的意思,默认是只读,ntfs最好是只读,要是写比较危险。

好了再重启看看,是否系统能正常加载windows分区了,呵呵,应该是没有问题的。

希望这篇菜作对广大菜鸟有所提示

原文在http://bbs.xixidns.com/showthread.php?s=&threadid=6898
转载请注明原文出处
 楼主| 发表于 2003-6-4 14:11:05 | 显示全部楼层
6月4日:调试socks5服务器

最近有不少网友老是问我一些QQ如何利用代理的事。其实是很简单的,通过代理猎手寻找一些socks5代理便可。刚好最近在学习linux系统,于是突然想到用RH9来做个socks5代理服务器。ok!说干就干

1。先在北大天网搜索一下socks5的安装包,发现一大堆,最新版本是socks5-v1.0r11.tar.gz,于是下载到我的RH9的服务器上。

2。解压缩软件包

#tar xvfz socks5-v1.0r11.tar.gz

3.开始编译
#cd socks5-v1.0r11
#./configure --with-threads
#make
#make install


4.建立/etc/socks5.conf,其实在软件包里已经有现成的examples

#cd examples
#cp socks5.conf.singlehomed /etc/socks5.conf  (我们挑选一个最简单的配置文件)

默认配置就是

# A Socks5 Config file for a normal, single homed server
permit        -        -        -        -        -        -

这个配置文件是允许任何人都可以使用这个socks5代理,并不需要验证

如果想限制只是某个IP段(192.168.0.0/255.255.255.0)可以访问,可以改成

permit        -        -        192.168.0.        -        -        -

或者只允许某个IP(192.168.0.10)可以访问使用,可以改成

permit        -        -        192.168.0.10        -        -        -

5.ok 运行一下socks5 -t 启动socks5服务,然后用QQ测试一下代理是否生效,记住默认端口是1080
反正我是在FTP软件和QQ上试了 都没问题。

6.如果要停止socks5,只要运行stopsocks -KILL就行,socks5就会停止!

7.使用非默认端口:如果你想让socks5服务启动的时候不启动默认监听端口1080,比如为1234,我们可以运行如下命令
socks5 -b 1234 -t 当然你关掉这个服务,就必须用下面的命令 stopsocks -p 1234 -KILL


8.我们来深入配置一下socks5.conf,使socks5使用用户验证机制

要使用用户验证,首先要建立/etc/socks5.pwsswd文件

内容为:(userA代表用户名。passwdA代表用户userA的密码)
#/etc/socks5.passwd
userA passwdA     
userB passwdB
userC passwdC

然后修改/etc/socks5.conf
添加下列语句
auth -        - u
或者把:
auth  -  - -改成auth -        -  u

添加:
把默认permit - - - - - - 改成permit u - 192.168.0. - - -
即允许来自192.168.0.0/255.255.255.0网段的任何经过用户认证的连接


如果你不想把密码文件存在默认的/etc/socks5.passwd里。想存在自定义的文件,比如/etc/qq.passwd

那就得修改/etc/socks5.conf.添加一项参数

set SOCKS5_PWDFILE /etc/qq.passwd


ok!重启一下服务,这时如果不输入正确的用户名和密码是使用不了socks5代理服务器的,输入正确的用户名和密码便可使用。

以上说的参数,大家可以结合使用,比如限制某个IP段使用socks5服务,而且要使用用户名验证

另外针对/etc/socks5.conf还有一些参数,大家就自己去研究吧

set SOCKS5_BINDINFC 192.168.0.8:1080

忽略ident请求。当客户机没有运行identd时,使用SOCKS5_NOIDENT将降低超时值
set SOCKS5_NOIDENT

指定连接停顿最长时间。超过最大值后,socks5断开连接
set SOCKS5_TIMEOUT 15

socks5将接受SOCKS V4 协议的请求,默认不接受
set SOCKS5_V4SUPPORT

指定同时存在的最大子进程数,Socks5预设为64
set SOCKS5_MAXCHILD 4


作者:frank   2003年6月4日
原文在http://bbs.xixidns.com/showthread.php?s=&threadid=7149
转载请注明原文出处
发表于 2003-6-6 12:46:41 | 显示全部楼层
good!对像我这样的菜鸟很有帮助,兄弟,辛苦了!
发表于 2003-6-7 09:23:50 | 显示全部楼层
不错、不错。。。。
 楼主| 发表于 2003-6-7 17:44:33 | 显示全部楼层
6月6日  重新调试DHCP服务

其实linux的dhcpd服务还是比较简单(当然要是结合BIND的DDNS功能那还是有一定难度的,我们这里暂时不讨论),网上有很多现成的dhcpd.conf的配置文件,基本上抄过来,稍微修改一下就能使用,我今天只想把一些配置的具体使用详细的说一下。

默认RH9如果你装上DHCPD也是没有dhcpd.conf文件,所以必须手动增加这个配置文件,另外有了这个配置文件,有时dhcpd服务也不能正常启动,那是因为少了/var/lib/dhcp/dhcpd.leases这个文件,如果服务不能正常启动,请现/var/lib/dhcp/dhcpd.leases 建一个空的dhcpd.leases文件。

1。我们下来看dhcpd的配置文件,以下是一个最基本DHCP配置文件,基本能满足使用!

------------ Begin Example ------------
# Sample /etc/dhcpd.conf
# (add your comments here)
default-lease-time 600;                     #如果客户端不能请求一个指定的租用期,就使用该参数来定义该地址租用的时间长度
max-lease-time 7200;                        #用来指定租用的最长时间,尽管租用的时间长度是根据客户端的请求决定的。
option subnet-mask 255.255.255.0;           #定义子网掩码,如果不定义该选项,则使用Subnet命令中的子网掩码
option broadcast-address 192.168.1.255;     #指定子网的广播地址
option routers 192.168.1.254;               #指定路由器或者网关的IP ,客户端在获取IP地址的同时获取网关地址
option domain-name-servers 192.168.1.1, 192.168.1.2;          #定义DNS的服务器地址,客户端在获取IP地址的同时获取DNS地址
option domain-name "mydomain.org";          #定义DHCP服务器的域名
subnet 192.168.1.0 netmask 255.255.255.0 {  #指定子网的网段和子网的掩码
range 192.168.1.10 192.168.1.100;           #指定DHCP分配的IP范围
range 192.168.1.150 192.168.1.200;
}
------------ End Example ------------

有了这个配置文件,我们就可以启动dhcp服务,注意还要有dhcpd.leases文件,新版本的dhcp好像自动会产生这个文件
可以这样

#touch /var/state/dhcp/dhcpd.leases
#/etc/rc.d/init.d/dhcpd start   启动服务
#/etc/rc.d/init.d/dhcpd stop    停止服务
#/etc/rc.d/init.d/dhcpd restart  重启服务


有关dhcp的一些事件记录看运行:
tail -vf /var/log/messages

当然你要查询所有的dhcp获取情况你可以查看dhcpd.leases文件,这里记录了所有客户端获取的情况。

2。我们来看如何绑定IP地址,使某个网卡永久获取相同的ip地址,


# Sample /etc/dhcpd.conf
# (add your comments here)
default-lease-time 600;                     
max-lease-time 7200;                        
option subnet-mask 255.255.255.0;           
option broadcast-address 192.168.1.255;     
option routers 192.168.1.254;               
option domain-name-servers 192.168.1.1, 192.168.1.2;         
option domain-name "mydomain.org";         
subnet 192.168.1.0 netmask 255.255.255.0 {  
range 192.168.1.10 192.168.1.100;           
range 192.168.1.150 192.168.1.200;
}
host frank {
  hardware ethernet 00:50:BA:CA:2E:02;   
  fixed-address 192.168.1.12;  }

#定义主机名为frank的网卡mac地址为00:50:BA:CA:2E:02永久获取192.168.0.12的地址,这个地址其他机器是不会抢的         
            

3。如果你用的是RH9,那你的dhcpd.conf,还要在开头加上以上参数,否则启动服务会出错

ddns-update-style interim;

其实大家都不用从头写这个配置文件,RH9有个sample的配置文件,大家只要
cp /usr/share/doc/dhcp-3.0pl1/dhcpd.conf.sample /etc/dhcpd.conf
然后根据自己的实际情况修改一下就好了

以下是我的配置文件,仅供参考
#Start of /etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option domain-name "frankhome.com";
# --- option domain-name-servers ISP's DNS1,ISP's DNS2;
option domain-name-servers 192.168.0.1,202.106.0.20,202.106.148.1;
option time-offset -18000; # Eastern Standard Time
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192.168.0.10 192.168.0.30;
default-lease-time 21600;
max-lease-time 43200;
}
host itrsg-tsc {
   hardware ethernet 00:10:a4:79:0a:bd;
   fixed-address 192.168.0.15;
}
#End of /etc/dhcpd.conf
 楼主| 发表于 2003-6-17 22:34:13 | 显示全部楼层
6月18日,最近忙于研究LFS和Gentoo,所以好久没写调试笔记,大家一定等者我的下一篇吧!
今天给大家将iptables,即linux下的防火墙


1. 安装我不讲了,RH9的rpm安装方式非常简单,大家只要在rh的安装源盘找到相应的rpm包就行。

然后  rpm -Uvh iptables-?.i386.rpm


2. 我们今天调试的环境是一台双网卡的服务器,通过DDN固定ip地址上网,两块网卡分别是
eth0: 211.101.251.4 外部ip地址,直接上网
eth1: 192.168.0.1   内部网卡地址,连接192.168.0.0/255.255.255.0网断局域网

3.客户端A是台WWW,地址是192.168.0.2。我们将利用后面的DNAT功能,让外面的机器能访问这台机器的www服务。其他客户端都在192.168.0.0/24网段,且网关都指向192.168.0.1

4. 如果大家要使用iptables的NAT功能,之前我们要确保系统内核配置的是正确的,我的iptables好几次就因为内核编译错误,造成客户端不能正常使用SNAT功能,甚至不能加载ip_tables模块。这是一般的内核配置,基本上iptables的NAT功能能正常使用,内核版本不同可能显示不一样,大家灵活掌握就行,应该不会出现麻烦。


Networking options  --->
   
  • Network packet filtering (replaces ipchains)
       
  • TCP/IP networking
        IP: Netfilter Configuration  --->
            <M>   Connection tracking (required for masq/NAT) (NEW)
            <M>   FTP protocol support (NEW)
            <M>   IP tables support (required for filtering/masq/NAT) (NEW)
            <M>   limit match support (NEW)
            <M>   MAC address match support (NEW)
            <M>   netfilter MARK match support (NEW)
            <M>   Multiple port match support (NEW)
            <M>   TOS match support (NEW)
            <M>   tcpmss match support (NEW)
            <M>   Connection state match support (NEW)
            <M>   Packet filtering (NEW)
            <M>   REJECT target support (NEW)
            <M>   Full NAT (NEW)
            <M>   MASQUERADE target support (NEW)
            <M>   REDIRECT target support (NEW)
            <M>   Packet mangling (NEW)
            <M>   TOS target support (NEW)
            <M>   MARK target support (NEW)
            <M>   LOG target support (NEW)
            <M>   TCPMSS target support (NEW)  
            <M>   ipchains (2.2-style) support (NEW)
            < >   ipfwadm (2.0-style) support (NEW)


    5. 我们要打开ip_forward,
    直接修改/etc/sysctl.conf 这个文档,把net.ipv4.ip_forward= 1 并把前面的#去掉,或者
    echo "1" > /proc/sys/net/ipv4/ip_forward ,但是下次重起还是变0,所以还是直接修改文档的好。

    6. 我们在使用iptables之前,先要了解iptables的参数:

    ACCEPT
    接受这个封包,也就是可以通过规则检验而放行、顺利通过这个链。

    DROP
    丢弃这个封包,也就不能通过规则检验而被挡掉。

    REJECT
    与 DROP 一样,但会向来源地送出 ICMP 封包,告之对方‘ port unreachable ’的错误信息。

    REDIRECT
    将封包重导至 本机端 的其它 port 。

    SNAT / DNAT / MASQUERADE
    这些都是 NAT 的处理,视要求而修改为特定的 Source Socket 或 Destination Socket 、或动态的根据路由判断後的界面而修改 Source Socket 。

    建立一个新的(自定)链 ( -N )。
    删除一个空的(自定)链 ( -X )。
    改变一个内建链的原则 ( -P )。
    列出一个链中的规则 ( -L )。
    清除一个(内建)链中的所有规则 ( -F )。
    在一个链的最後面新增( append ) 一条规则 ( -A )。
    在链内某个位置插入( insert ) 一条新规则( -I )。
    在链内某个位置替换( replace ) 一条规则 ( -R )。
    在链内某个位置删除( delete ) 一条规则 ( -D )。
    删除(delete) 链内第一条符合的规则 (-D)。
    在 iptables 中,要指定规则是欲作用在那一个规则表上(使用 -t 来指定,如 -t nat),若不指定,则预设是作用在 filter 这个表。


    封包于防火墙中的流向 ( INPUT、OUTPUT、FORWARD )
    相关界面 ( -i 或 -o )
    所属协定 ( -p )
    连线类型 ( -m state )
    封包类型 ( --syn )
    来源地 ( -s )
    来源端口 ( --sport )
    目的地 ( -d )
    目的地端口 ( --dport )


    好了,开始工作!

    首先查看一下机器上的有关于iptables的设定情况
    作法如下:

    iptables -L -n    或者  iptablse -t nat -L -n

    定义参数

    $DDN_IP="211.101.251.4"

    如果你以前调试过iptables那么我们先清除先前的设定

    iptables -F                清除预设表 filter 中,所有规则链中的规则

    iptables -X                清除预设表 filter 中,使用者自订链中的规则

    iptables -F -t mangle        清除mangle表中,所有规则链中的规则

    以此类推:

    iptables -t mangle -X        清除mangle表中,使用者自订链中的规则

    iptables -F -t nat        清除nat表中,所有规则链中的规则

    iptables -t nat -X        清除nat表中,使用者自订链中的规则

    首先我们来设置 filter table 的预设策略

    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT

    当然我们也可以使用DROP,但一般我们不会这么做

    接下来配置nat tables表

    &&一个典型的例子IP 伪装(SNAT应用),即局域网网所有的机器都通过eth0做的透明网关出去,不做其他限制,

    iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE

    假如你的上网方式是adsl拨号上网,adsl接口是ppp0,那么也可以这么设置
    iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE


    好了,现在我们要把这些命令保存为策略文件,好让iptables认出

    /etc/rc.d/init.d/iptables save 系统会根据你刚才输入的命令保存为一个策略配置文件/etc/sysconfig/iptables

    然后我们运行/etc/rc.d/init.d/iptables start 启动iptables,并加载配置文件

    好了现在你的局域网客户端都可以通过这台服务器上网,ftp,qq,www都没有限制,因为我们现在设置的是透明的防火墙。我们总结一下刚才的命令是:
    1. echo 1 > /proc/sys/net/ipv4/ip_forward
    2. iptables -F
    3. iptables -X
    4. iptables -t nat -F
    5. iptables -t nat -X
    6. iptables -P INPUT ACCEPT
    7. iptables -P OUTPUT ACCEPT
    8. iptables -P FORWARD ACCEPT
    9. iptables -t nat -P PREROUTING ACCEPT
    10. iptables -t nat -P OUTPUT ACCEPT
    11. iptables -t nat -P POSTROUTING ACCEPT
    12. iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
    13. /etc/rc.d/init.d/iptables save
    14. /etc/rc.d/init.d/iptables start
    复制代码

    &&另外一个典型的例子是DNAT,利用转址、转 port 的方式,使外网的封包,可以到达内网中的服务器主机,俗称虚拟主机。这种方式可保护服务器主机大部份的 port 不被外界存取,只开放公开服务的通道(如 Web Server port 80),因此安全性较高。

    比如: 凡对 211.101.251.4:80 连线者, 则转址至 192.168.0.2:80

    iptables -t nat -A PREROUTING -i eth0 -p tcp -d 211.101.251.4 --dprot 80 -j DNAT --to-distination 192.168.0.2:80

    同样DNAT还可以利用在DMZ区域的mail,FTP等服务,大家就安需自己写吧!

    以上讲的策略对大多数朋友来说已经绰绰有余了,但有些公司的老板可不是这么想,老板们往往希望员工好好工作,除了能上网收信以外,其他的诸如FTP,QQ一律静止,这样的话iptables的设置就比较大,我们不能简单的MASQUERADE。比如我们现在只开放53(dns)80,25,110三个端口用来平时的www和mail服务,那么我们就可以这样设置
    1. ptables -F
    2. iptables -X
    3. iptables -t nat -F
    4. iptables -t nat -X
    5. iptables -P INPUT ACCEPT
    6. iptables -P OUTPUT ACCEPT
    7. iptables -P FORWARD ACCEPT
    8. iptables -t nat -P PREROUTING ACCEPT
    9. iptables -t nat -P OUTPUT ACCEPT
    10. iptables -t nat -P POSTROUTING ACCEPT
    11. iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to-source 211.101.251.4
    12. 1192.168.0.0/24 这个网段,伪装成 211.101.251.4 出去。
    13. iptables -A OUTPUT -o eth0 -p tcp -s 211.101.251.4 --sport 1024:65535 -d any/0 --dport 80 -j ACCEPT
    14. iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 80 -d 211.101.251.4 --dport 1024:65535 -j ACCEPT
    15. 开放内网可以观看外网的网站。
    16. iptables -A OUTPUT -o eth0 -p tcp -s 211.101.251.4 --sport 1024:65535 -d any/0 --dport 25 -j ACCEPT
    17. iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 25 -d 211.101.251.4 --dport 1024:65525 -j ACCEPT
    18. 你可以送信给别人
    19. iptables -A OUTPUT -o eth0 -p tcp -s 211.101.251.4 --sport 1024:65535 -d any/0 --dport 110 -j ACCEPT
    20. iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 110 -d 211.101.251.4 --dport 1024:65535 -j ACCEPT
    21. 开放内网可以对外网的 POP3 server 取信件。
    22. iptables -A OUTPUT -o eth0 -p udp -s 211.101.251.4 --sport 1024:65535 -d any/0 --dport 53 -j ACCEPT
    23. iptables -A INPUT -i eth0 -p udp -s any/0 --sport 53 -d 211.101.251.4 --dport 1024:65535 -j ACCEPT
    24. 开放查询外网的 DNS 主机
    25. iptables -A OUTPUT -o eth0 -p icmp -s 211.101.251.4 --icmp-type 8 -d any/0 -j ACCEPT
    26. iptables -A INPUT -i eth0 -p icm -s any/0 --icmp-type 0 -d 211.101.251.4 -j ACCEPT
    27. 开放 ping功能
    复制代码

    好了,差不多了大家学的怎么样,反正这些已经够你用了,其他的你就举一反三吧!

    这里还要讲的是我的服务器是运行着squid服务,由于带宽有限,所以虽然开了透明SNAT功能,但还是希望客户端特别是www的访问还是使用squid服务,这样可以节省不少带宽资源,这里我们就可以用到iptables的Transparent功能,让iptables的客户端80端口的访问强行转移到squid的3128端口,

    首先,修改 /etc/squid/squid.conf,找到下面几行,并修改为如下样子:

    httpd_accel_host redhat.frankhome.com    # 请修改为您的 squid 主机名称
    httpd_accel_port 80
    httpd_accel_with_proxy on
    httpd_accel_uses_host_header on
    然后/etc/rc.d/init.d/squid restart

    接着添加以下策略:
    iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.0.0/24 --dport 80 -j REDIRECT --to-ports 3128

    这时候,您的 Transparent Proxy 就起来了!如果您要测试它,可以取消 client 端的 proxy 设定,并将 squid关闭,然後测试是否不能连线(建议用一个未曾浏览过的网址来测试)?然则,再将 squid打开,如果能这样又能恢复连线的话,那就已经成功了!这样有一个好处是:以後您再也不必跑到 client 那边设定 proxy;而且,更好的地方在於:重复性的连线再也无需占用宝贵的对外频宽,速递当然也能'假性'的获得提高

    ok!今天就写到这里,大家学了多少?一定要慢慢消化哦!:)
  •  楼主| 发表于 2003-6-18 13:30:29 | 显示全部楼层
    6月19日,今天就iptables大家比较关心的问题来个补充说明

    1.关于DNAT的补充说明!

    对于用ADSL拨号上网的用户,外部网卡往往获取的ip地址是不固定的,所以虚拟主机,或者WWW,mail,ftp发布可能会有些问题,在此针对ADSL的不固定IP情况设置相应的DNAT策略,使能正常发布内网的FTP,MAIL,WWW。

    我们这里以发布WWW为例,还是192.168.0.2为内部WWW服务器,只不过现在的服务器是通过ADSL上网

    所以我们添加以下策略:
    ptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80
    将80请求转发至192.168.0.2:80端口
    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.2 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.0.1
    返回a.b.b.d时数据源来自同一子网,就将其源地址更改为192.168.0.1,从eth0发出,并在连接跟踪表中查出a.b.c.d是从ppp0进来的,又由ppp0将此数据发出。(我也看不明白为何要有这句话)
    iptables -A INPUT -p tcp --dport 80 -i ppp0 -j ACCEPT
    允许80端口访问的语句。
    然后重新
    /etc/rc.d/init.d/iptables save
    /etc/rc.d/init.d/iptables restart

    其他如FTP发布也可举一反三:
    ptables -t nat -A PREROUTING -p tcp -m tcp --dport 21 -j DNAT --to-destination 192.168.0.2:21
    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.2 -p tcp -m tcp --dport 21 -j SNAT --to-source 192.168.0.1
    iptables -A INPUT -p tcp --dport 21 -i ppp0 -j ACCEPT


    上网的时候,用ifconfig看看ppp0的地址,然后用那个地址看看WWW是否正常发布。呵呵,应该是没问题的哦!


    2.关于封QQ,联众和边峰游戏的补充说明

    相信很多公司的老板会让网管通过防火墙来封锁QQ,联众和边峰游戏,但又不能耽误其他事,我这里有个简单的配置文件服务器也是通过ADSL上网,能简单的实现以上要求:
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -A FORWARD -p icmp -j ACCEPT 开放ping功能
    iptables -A FORWARD -p tcp -s 192.168.0.0/24 --dport 80 -j ACCEPT 开放网页浏览功能
    iptables -A FORWARD -p tcp -s 192.168.0.0/24 --dport 25 -j ACCEPT 开放smtp发信功能
    iptables -A FORWARD -p tcp -s 192.168.0.0/24 --dport 110 -j ACCEPT 开放pop3收信功能
    iptables -A FORWARD -p tcp -s 192.168.0.0/24 --dport 21 -j ACCEPT 开放默认FTP功能
    iptables -A FORWARD -p tcp --dport 4000 -o ppp0 -j DROP 封锁边峰
    iptables -A FORWARD -p tcp --dport 2000 -o ppp0 -j DROP 封锁联众
    iptables -A FORWARD -p udp -s 192.168.0.0/24 --dport 8000 -j DROP 封锁QQ(有时udp4000端口也要封锁)
    iptables -A FORWARD -p udp -j ACCEPT 允许其他UDP服务,比如DNS等

    IPTABLES -A FORWARD -p TCP --dport 1863 -j ACCEPT
    IPTABLES -A FORWARD -p TCP --dport 7801:7825 -j ACCEPT
    IPTABLES -A FORWARD -p TCP --dport 6891:6900 -j ACCEPT
    上面三条是开放了MSN, 不知行不行?
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE



    3.我不想让人家可以PING到我

    这大概是做防火墙用到最多的一种了 你可以在iptables写这句话
    iptables -A INPUT -p icmp --icmp-type echo-request -i ppp0 -j DROP
    发表于 2003-6-19 16:20:23 | 显示全部楼层

    是菜鸟的好朋友

    你真是我们菜鸟的好朋友
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表