红联Linux门户
Linux帮助

无聊啊~~转点鸟哥大大的东西

发布时间:2009-08-10 10:26:20来源:红联作者:baizx
路由

我?在?路基??面?到?路由的相?概念, 他最大的功能就是在?我????路封包的??方式?方向。 至於路由的?察?可以使用 route 或者是 netstat ?查???定。 好了,那?路由的形式有哪些?您又?如何??路由是否正?呢?


--------------------------------------------------------------------------------
路由表

如同前面?路基??到的,每一部主?都有自己的路由表, 也就是?,您必?要透?你自己的路由表???你主?的封包到下一?路由器上?。 若?送出去後,?封包就得要透?下一?路由器的路由表??送了,此??你自己主?的路由表就?有??啦! 所以?,如果?路上面的某一部路由器?定??,那.....封包的流向就??生很大的??。 我?就得要透? traceroute ????解一下每? router 的封包流向?。

OK!那你自己主?的路由表到底有哪些部分呢?我?以底下??路由表??明:
[root@linux ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 <== 1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo <== 2
0.0.0.0 192.168.1.2 0.0.0.0 UG 0 0 0 eth1 <== 3


首先,我?得知道在 Linux 系?下的路由表是由小?域排列到大?域, 例如上面的路由表?中,路由是由『 192.168.1.0/24 --> 127.0.0.0/8 --> 0.0.0.0/0 (??路由) 』?排列的。 而?主?的?路封包需要?送?,就?查?上述的三?路由????解如何??封包?送出去。

你?不??得奇怪,?什??有???路由呢?其?路由表主要有???情????的:

依?介面而存在的路由:
例如 192.168.1.0/24 ??路由的存在是由於?哥的?部主?上面?有 192.168.1.11 ?? IP 的??! 也就是?,你主?上面有???路介面的存在?,??路介面就?存在一?路由才?。 所以?,?一你的主?有???路介面?,例如 192.168.1.11, 192.168.2.11 ?,那路由至少就?有:
[root@linux ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
.....以下省略.....




手?或??路由(default route):
你可以使用 route ??指令手?的?予?外的路由?定,例如那???路由 (0.0.0.0/0) 就是?外的路由。 使用 route ??指令?,最重要的一?概念是:『你所??的路由必?要是你的?置 (如 eth0) 或 IP 可以直接?通 (broadcast) 的情?』才行。?例??,以上述的?境?看, 我的?境?面?有 192.168.1.11 及 192.168.2.11 ,那我如果想要?接到 192.168.100.254 ??路由器?, 下?:
[root@linux ~]# route add -net 192.168.100.0 \
> netmask 255.255.255.0 gw 192.168.100.254
SIOCADDRT: Network is unreachable


看吧!系?就?回??有?法?接到??域,因?我?的?路介面? 192.168.100.0/24 根本就?有??嘛! 那如果 192.168.100.254 真的是在我?的???路?接上,那其?你??是??做:
[root@linux ~]# route add -net 192.168.100.0 \
> netmask 255.255.255.0 dev eth0
[root@linux ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.1.2 0.0.0.0 UG 0 0 0 eth1


??你的主?就?直接用 eth0 ???置去???接 192.168.100.254 了! 另外,上面路由?出的重?其?是那?『Flags 的 G 』了!因?那? G 代表使用外部的?置作? Gateway 的意思!而那? Gateway (192.168.1.2) 必?要在我?的已存在的路由?境中。 ?可是很重要的概念喔! ^_^


??路由:
除了上面???可以直接使用指令的方法?增加路由??之外, ?有一?透?路由器?路由器之?的?商以?成??路由的?境, 不?,那就需要?外的??支援了,例如: zebra (http://www.zebra.org/) 或 CentOS 上面的 Quagga (http://www.quagga.net/) ?????了!

事?上,在 Linux 的路由??都是透?核心??成的, 所以?些路由表的??都是在核心功能?啊!也就是在????中喔! ^_^



--------------------------------------------------------------------------------
IP Alias 的??用途

我?在 Linux 常用指令?面?? eth0:0 ???置吧? ???置可以在原本的 eth0 上面模?出一???介面出?,以?我?原本的?路卡具有多? IP , 具有多? IP 的功能就被?? IP Alias 了。而?? eth0:0 的?置可以透? ifconfig 或 ip ???指令??成, ?於???指令的用途?翻回去之前的章???,??不再浪?篇幅啊!

那你或???啊:『?? IP Alias 有啥用途啊?』好??!?? IP Alias 最大的用途就是可以?你用?『?急』! 怎??呢?我?就?聊一聊他的??常?的用途好了:

??用:
怎??用???呢??例??,?在使用 IP 分享器的朋友很多吧, 那 IP 分享器通常使用 WWW 介面?提供?定。那?? IP 分享器通常??予一?私有 IP 亦即是 192.168.0.1 ??使用者?? WWW 介面的??。???了,那你要如何?接上?部 IP 分享器呢? 嘿嘿!在不更?既有的?路?境下,你可以直接利用:
[root@linux ~]# ifconfig [device] [ IP ] netmask [netmask ip] [up|down]
[root@linux ~]# ifconfig eth0:0 192.168.0.100 netmask 255.255.255.0 up


?建立一???的?路介面,??就可以立刻?接上 IP 分享器了。


在一????域中含有多? IP ?域:
另外,如果像是在??班或者是?校?位的?, 由於原本的主??路?定最好不要?便修改,那如果要?同??大家互通所有的?????, 就可以?每?同?都透? IP Alias ??定同一?域的 IP , 如此大家就可以在同一??段??行各??路服?的??了,很不?吧!


既有???法提供更多???卡?:
如果你的?部主?需要?接多??域,但?????法提供安?更多的?卡?, 你只好勉?其?的使用 IP Alias ?提供不同?段的??服?了!

不?,你需要知道的是:所有的 IP Alias 都是由???卡模??的, 所以?要?? eth0:0 ?,eth0 必?要先被??才行。而? eth0 被??後, 所以 eth0:n 的模??卡?同?也被??。?得先要?解才行,否?常常?搞???的?置啊! 在路由??的?定?中,常常需要?行一些??,那?? IP Alias 就派的上用?了。 尤其是?校?位的???境?中! ^_^!

基本上,除非有特殊需求,否?建?你要有多? IP ?,最好在不同的?卡上面?成, 如果你真的要使用 IP Alias ?,那?如何在??的?候就?? IP alias 呢?有????的方法可以使用:

透? /etc/rc.d/rc.local:
?『ifconfig eth0:n ....』的指令?入 /etc/rc.d/rc.local ?中,????的?候就能???????介面, 不??方法有?弱?,就是?使用?似『 /etc/init.d/network restart 』的指令?,?介面可能就?被取消。


透? /etc/sysconfig/network-scripts/ifcfg-eth0:0:
?例??,你可以透?底下??方法?建立一????置的?定?案:
[root@linux ~]# cd /etc/sysconfig/network-scripts
[root@linux network-scripts]# vi ifcfg-eth0:0
DEVICE=eth0:0 <==相?重要!一定要??名相同的?置代?!
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.100
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255

[root@linux network-scripts]# ifup eth0:0
[root@linux network-scripts]# ifdown eth0:0


?於?置的?定?案?的更多???明,??考?上 Internet 一文的相??明,在此不再?述!使用??方法有?好?,就是?你使用『 /etc/init.d/network restart 』?, 系?依??使用你的 ifcfg-eth0:0 ?案?的?定值???你的???卡喔!另外, 不? ifcfg-eth0:0 ?的 ONBOOT ?定值?何,只要 ifcfg-eth0 ?????卡的?定?中, ONBOOT ? yes ?,??就??全部的 eth0:n 都??。

透??????的方法,你就可以在??的?候??你的??介面而取得多? IP 在同一??卡上了。 不?依?要注意的是,如果你的 eth0 是使用 DHCP ?取得 IP ??的?,那?由於 ifup 及 /etc/init.d/network ??? script ?程式?撰?的方式,???致 ifcfg-eth0:0 ???定?不?被使用到喔! 所以?你使用 DHCP ?取得 eth0 的 IP ?,你只好使用手?方式 (用 ifconfig) ??定你的 IP Alias 了。



--------------------------------------------------------------------------------
重?路由的??

很多朋友可能都有一?可?的想法,那就是:『我可不可以利用???卡, 利用??相同?域的 IP ?增加我?部主?的?路流量』?事?上?是一?可行的方案, 不?必?要透??多的?定??成,若您有需求的?,可以?考?中人大哥?的?一篇:

????平衡 (http://www.study-area.org/tips/multipath.htm)
如果只是??的以??定好???卡的 IP 在同一??域而已,那您可就大?特?了~ ?什?呢???得我?在路由表???面提??路封包的??主要是依?主??的路由表??吧! 那如果你有???路卡?,假?:

eth0 : 192.168.0.100
eth1 : 192.168.0.200
那你的路由???是如何呢?理?上??成??:
[root@linux ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0


也就是?,?要?送到 192.168.0.0/24 的?域?,都只?透?第一??? ,也就是透? eth1 ??出去,而不管是由 eth0 ?是由 eth1 ??的?路封包都?透? eth1 ?回?,?可能?造成一些??, 尤其是一些防火?的??方面,很可能??生一些?重的??, 如此一?,根本?有?法?成??平衡,也不?有增加?路流量的效果! 更?的是,?可能?生封包????的情??!所以?,同一部主?上面?定相同?域的 IP ?, 得要特?留意你的路由??,一般??, 不???定同一的?段的不同 IP 在同一部主?上面。 例如上面的案例就是一?不好的示?啊!


--------------------------------------------------------------------------------
路由器架?

在同一的?域?路?面可以透??播 (broadcast) ?解到 MAC ? IP 的解析,然後透? MAC ? MAC ??送?料封包, 在不同的?域??就得要透?路由器的?忙。那?什?是路由器?他的主要功能是什?? 底下我?就?聊一聊!


--------------------------------------------------------------------------------
什?是路由器

既然主?想要??料?送到不同的?域?得透?路由器的?忙,所以啦,路由器的主要功能就是: 『???路封包』?! 也就是?,路由器?分析?源端封包的 IP 表?,找出目?的 IP 後,透?路由器本身的路由表 (routing table) ???封包向下一?目? (next hop) ?送。?就是路由器的功能。

那?路由器的功能可以如何?成呢?目前有??方法可以?成:

硬?功能:例如 Cisco, IBM, 3Com 等公司都有生?硬?路由器,?些路由器?有嵌入式的作?系?, 可以??不同?域?的封包?????等功能;

??功能:例如 Linux ??作?系?的核心就有提供封包??的能力。
高?的路由器可以??不同的硬???,?且可以??很多不同的封包格式,通常....?格也不便宜啊! 在??章??面,我???有要探???高?的咚咚,???在乙太?路??最??的路由器功能: ?接??不同的?域。嘿嘿!??功能 Linux 就可以?成了! 就如同路由表是由 Linux 的核心功能所提供的,????封包的能力也是 Linux 核心所提供, 那如何????封包??呢?很??啊,只要??做即可:
[root@linux ~]# echo "1" > /proc/sys/net/ipv4/ip_forward


上面???作就在打? Linux 核心的封包??能力。你可以?上述的指令?入 /etc/rc.d/rc.local ?中, 以使 Linux 可以在??的?候就??封包??的功能, 也可以透?修改 /etc/sysctl.conf ??成????封包??:
[root@linux ~]# vi /etc/sysctl.conf
# ?底下???定值修改正?即可!
net.ipv4.ip_forward = 1

[root@linux ~]# sysctl -p <==立刻???定生效


sysctl ??指令是在核心工作?用?直接修改核心??的一?指令,更多的功能可以?考 man sysctl 查?。 不要?疑!只要???作,你的 Linux 就具有最??的路由器功能了。 而由於 Linux 路由器的路由表?定方法的不同,通常路由器??其路由的方式就有??:

??路由:直接以?似 route ??指令?直接?定路由表到核心功能?中,?定值只要??域?境相符即可。 不?,?你的?域有?化?,路由器就得要重新?定;


??路由:透??似 zebra ??的功能,?些??可以安?在 Linux 路由器上, 而?些??可以??的???域的?化,而直接修改 Linux 核心的路由表??, 你??手?以 route ?修改你的路由表??喔!
?解了路由器之後,接下?你可能需要?解到什?是 NAT (Network Address Translation, ?路位址??) 主?, NAT 是啥?其? IP 分享器就是最??的 NAT 主?啦!嘿嘿,?解了????, NAT 可以?成 IP 分享的功能, 而 NAT 本身就是一?路由器,但 NAT 比路由器多了一?『 IP ??』的功能。怎??呢?

一般??,路由器?有???路介面,透?路由器本身的 IP ??功能????域可以互相?通?路封包。 那如果??介面一?是公共 IP (public IP) 但一?是私有 IP (private IP) 呢? 由於私有 IP 不能直接?公共 IP ?通其路由??,此?就得要?外的『 IP ??』功能了;


Linux 的 NAT 主?可以透?修改封包的 IP 表??料之?源或目? IP ,??自私有 IP 的封包可以?成 NAT 主?的公共 IP ,就可以?上 Internet !
所以?, ?路由器?端的?域分?是 Public ? Private IP ?,才需要 NAT 的功能! NAT 功能我??在防火???及,??章????一下路由器而已啊! ^_^



--------------------------------------------------------------------------------
何?需要路由器?

一般??,???量小於?十部的小型企?是??路由器的,只需要利用 hub/switch 串接各部??, 然後透??一?路?接到 Internet 上即可。不?,如果是超??百部??的大型企??境, 由於他?的?境通常需要考?如下的??,因此才需要路由器的架?:

???路之??及效能的考量:
在一?大?的不同??要串接所有的??可能有??度,那可以透?每???架?一部路由器, ??每???路由器相?接,就能???的管理各??的?路; 此外,如果各??不想架?路由器,而是直接以?路?串接各??的 hub/switch ?, 那由於同一?域的?料是透??播???的,那?整?大?的某一部??在?播?, 所有的????予以回?,哇!?造成大???路效能的??;所以架?路由器????路分隔, 就有助於?方面的?路效能;


部??立?保??料的考量:
在????路基?章?後,您就??得, 只要???路是?接在一起的,那???料透??播?,你就可以透??似 tcpdump 的指令???封包?料, ?且予以?取~所以,如果你的部?之?的?料可能需要?立, 或者是某些重要的?料必?要在公司?部也予以保??,可以?那些重要的??放到一??立的???域, ??外加?防火?、路由器等?接上公司?部的?域。

路由器就只是一???,要如何使用端看您的?路?境的??!上面?是?出一些?用案例。 底下我?先就架?一???路由的路由器?玩一玩吧!



--------------------------------------------------------------------------------
??路由之路由器

假?在?公司的?路?境?中,除了一般??的工作用??是直接?接到?外的路由器??? Internet, 在?部其??有一?部?需要?安全的?立?境,因此?部份的?路??可能是??的情?:



?一、??路由之路由器架?示意?

以上?的架???,?家公司主要有?? C class 的?域,分?是 192.168.0.0/24 及 192.168.10.0/24 , 其中 192.168.0.0/24 是用?做?一般?工?接???路用的,至於 192.168.10.0/24 ?是?特殊的部?用的。PC1 代表的是一般?工的??, PC2 及 PC3, PC4 ?是特殊部?的工作用??, Linux Router ?是??特殊部?用??接到公司?部?域的路由器。在??的架?下, ?特殊部?的封包就能?具有基?的保?了。

由?一你也不???,只要是具有路由器功能的?? (Router A, Linux Router) 都?具有??以上的介面, 分?用??通不同的?域,同??路由器也都?具有一???路由啊! ^_^! 另外,你?可以加上一些防火?的??在 Linux Router 上, 以保? PC2~PC4 的?部??呢!

在 Router A 的部分,由於他具有 Public ? Private IP ,所以?部 Router 必?要具有 NAT 的功能, ??未?我?再介?。今日的重?就在於 Linux Router 那?玩意?!在?主?下, 最好配????卡,一?? 192.168.0.100,另一?? 192.168.10.254 ?? IP。 ?部 Linux Router 的?定??的要命喔!你可以??做的:


--------------------------------------------------------------------------------

Linux Router

在?部主??需要有???卡,?哥在???他定??:

eth0: 192.168.10.254
eth1: 192.168.0.100
那如何?定呢???做就?了:
1. 先?理 eth0
[root@linux ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.10.255
IPADDR=192.168.10.254
NETMASK=255.255.255.0
NETWORK=192.168.10.0
ONBOOT=yes

2. 再先?理 eth1
[root@linux ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.100
NETMASK=255.255.255.0
NETWORK=192.168.0.0
GATEWAY=192.168.0.254 <==???定值很重要喔!
ONBOOT=yes

3. ?? IP ??
[root@linux ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
# 上述指令如果?有??,?他加入 /etc/rc.d/rc.local ?中去!

4. 重新???路,?且?察路由
[root@linux ~]# /etc/init.d/network restart
[root@linux ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.0.254 0.0.0.0 UG 0 0 0 eth1


有???吧!??你的 Linux Router 就 OK 了?!接下??是 PC2 ?作??例。



--------------------------------------------------------------------------------

受保?的?域,以 PC2 ?例:

不?你的 PC2 是哪一?作?系?,你的?境都??是??的:

IP: 192.168.10.20
netmask: 255.255.255.0
network: 192.168.10.0
broadcast: 192.168.10.255
gateway: 192.168.10.254
以 Linux 作?系??例,?且 PC2 ?有 eth0 一??卡?,他的?定是??的:
[root@linux ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.10.255
IPADDR=192.168.10.20
NETMASK=255.255.255.0
NETWORK=192.168.10.0
GATEWAY=192.168.10.254 <==???定最重要啦!
ONBOOT=yes

[root@linux ~]# /etc/init.d/network restart
[root@linux ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.10.254 0.0.0.0 UG 0 0 0 eth0




--------------------------------------------------------------------------------

Router A 的新增路由??:

在??的架?下,您的 PC2 已?可以?接上 Internet 了!只不?,?封包由 Internet ?回??, 由於 Router A ??有?接到 192.168.10.0/24 ?域的路由??,所以?封包『??失』喔!那就麻?了~ 所以,你的 Router A 必?要?外增加一???,????是『?目?? 192.168.10.0/24 的封包?送? 192.168.0.100 去?理』,假? Router A ? Linux 系??,那他??要??:
[root@linux ~]# route add -net 192.168.10.0 netmask 255.255.255.0 \
> gw 192.168.0.100

[root@linux ~]# route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.0 192.168.0.100 255.255.255.0 UG 0 0 0 eth0
# 你?????上??一???存在才行!


如此一?,你的 Router A 及 Linux Router 之?就可以?通,?且可以?? 192.168.10.0/24 的?域?!



--------------------------------------------------------------------------------

PC1 直接? PC2 的?通方式:

在?一?中,你???那? PC1 必?要???路由?定? 192.168.0.254 , 所以? PC1 要? PC2 ?通?,封包?由:

PC1 --> Router A --> Linux Router --> PC2

不?,在?一?中我?知道其? PC1 ? PC2 同?接到 Linux Router 上嘛! 所以 PC1 其?可以直接加入一?路由??,?定? 192.168.10.0/24 的封包目??, 他可以直接?到 Linux Router 上即可,那可以??做:
[root@linux ~]# route add -net 192.168.10.0 netmask 255.255.255.0 \
> gw 192.168.0.100


最後只要 PC2 使用 ping 可以?到 PC1,同?的, PC1 也可以 ping 到 PC2 的?, 就表示你的?定是 OK 的啦!嘿嘿!搞定!而透???的?定方式,您也可以??到一件事, 那就是:『路由是?向的,你必?要?解出去的路由?回??的??』。 ?例??,在??的情?下 (Router A ? PC1 都?有?外的路由?定?),其?封包是可以由 PC2 ??到 PC1 的,但是 PC1 ??有相?的路由可以回?到 PC2 ~所以上?才?要您在 Router A 或者是 PC1 上面?定?外的路由??啊!???,?了吧? ^_^


所以?,用 Linux 作一???路由的 Router 很??吧!以上面的案例??,你在 Linux Router 上面?乎?有作什??外的工作,只要??路 IP ??路介面??好??,然後加上 IP Forward 的功能, ?你的 Linux 核心支援封包??,然後其他的工作咱?的 Linux kernel 就主??你搞定了! 真是好??! ^_^

不???必?要提醒的是,如果你的 Linux Router 有?定防火?的?, 而且?有?定?似 NAT 主?的 IP ??技?,那可得特?留意,因??可能?造成路由?判的??~ 上述的 Linux Router ?中『??有使用到任何 NAT 的功能』喔!特??他留意到!



--------------------------------------------------------------------------------
??路由之路由器?定:zebra

如前所述,系?管理?可以利用 route ??指令手?的?路由??加入核心?中,??方式????路由。 ??路由同?是?路由??加入核心?中,只是??加入的?作交由??服? (daemon) 自???行, 在 Linux 上面常?的路由服?就是 zebra ??套件所提供的。

??路由通常是用在路由器?路由器之?的?通,所以要?您的路由器具有??路由的功能, 你必?要?解到?方路由器上面所提供的??路由?定才行,???部路由器才能?透???定??通彼此的路由??。 目前常?的??路由?定有:RIPv1, RIPv2, OSPF, BGP 等等, zebra 都有支援?些路由?定喔!

在 CentOS 上?,我?使用 quagga ??套件?提供 zebra ,因? quagga 是更新 zebra 而?的, 事?上,你可以?, quagga 就是 zebra 啦!??安?他先:
[root@linux ~]# yum install quagga
[root@linux ~]# ls -l /etc/quagga
-rw-r--r-- 1 root root 410 Jun 2 02:38 ripd.conf.sample
-rw-r----- 1 quagga quagga 30 Aug 29 10:50 zebra.conf
-rw-r--r-- 1 root root 373 Jun 2 02:38 zebra.conf.sample
.....其他省略.....


??套件所提供的各???路由?定都放置到 /etc/quagga/ 目??,底下我?以????的 RIPv2 ?定??理??路由, 不?你得要注意的是,不?你要??什???路由?定,那? zebra 都必?要先??才行! ?是因?:

zebra ?? daemon 的功能在更新核心的路由??;
RIP ?? daemon ?是在向附近的其他 Router ?通??路由??的?送?否。
而各?路由服?的?定?都必?要以 /etc/quagga/*.conf 的?名??存才行,如上表我?可以?? zebra ??服?是有?定好了,不? ripd 的?名?不是 .conf ?尾。所以我?必?要?外作些?定才行。 而假?我?的?路??如下?二所示:



?二、??路由的?易?示

??部 Linux Router 分???不同的?域,且可以透? 192.168.0.0/24 ???域??通。 在?有?定?外路由??的情?下,那? PC1 ? PC2 是?法?通的!另外, zebra 必?要同?安?在?部 Linux Router 上?才行, 而且我?只要?定好??部主?的?路介面 (eth0, eth1) 後,不需要手??入?外的路由?定喔!可以透? RIP ??路由?定?搞定的!


--------------------------------------------------------------------------------

?定 zebra

我?先?定?二右手?那一部 Linux Router,?於 zebra.conf 你可以???定的:
1. 先?定 zebra ?且?? zebra
[root@linux ~]# vi /etc/quagga/zebra.conf
hostname linux.router1 <==?予??路由器一?主?名?,?便取!
password linux1 <==?予一?密?!
enable password iinux1 <==???密?生效!
log file zebra.log <==?所有 zebra ?生的??存到登??中

[root@linux ~]# /etc/init.d/zebra start
[root@linux ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:2601 0.0.0.0:* LISTEN 6422/zebra


仔?看,由於 zebra ??服?的任?主要是在修改 Linux 系?核心?的路由, 所以他???本?介面而已,?不???外部的介面才?!另外,在 zebra.conf ???案?中, 我?所?定的那?密?是有作用的喔!可以?我?登入 zebra ?套??呢! 好了,我??查一查?? 2601 的 port 是否正?的??的呢?
[root@linux ~]# telnet localhost 2601
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Hello, this is Quagga (version 0.98.3).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

User Access Verification

Password: <==在???入??你?定的密?啊!
linux.router1> <==在???入『 ? 』就能?知道有多少指令可使用
echo Echo a message back to the vty
enable Turn on privileged mode command
exit Exit current mode and down to previous mode
help Description of the interactive help system
list Print command list
quit Exit current mode and down to previous mode
show Show running system information
terminal Set terminal line parameters
who Display who is on vty
linux.router1> list
echo .MESSAGE
enable
exit
help
list
quit
show debugging zebra
show history
show interface [IFNAME]
show ip forwarding
show ip route
....其他省略....
linux.router1> show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route

K>* 0.0.0.0/0 via 192.168.0.254, eth0
C>* 127.0.0.0/8 is directly connected, lo
C>* 192.168.0.0/24 is directly connected, eth0
C>* 192.168.10.0/24 is directly connected, eth1
linux.router1> exit
Connection closed by foreign host.


仔?看到,我?登入?? zebra 的??之後,可以?入『help』或??『?』, zebra 就??示出你能??行的指令有哪些,比?常用的?然是查?路由???! 以『 show ip route 』?查?,?果可以??目前的介面???路由都被?示出?了, ?示的?果?中,K 代表以 router ??指令直接加入核心的路由??,C ?代表你的?路介面相?的路由??。

事?上,如果你?想要增加?外的??路由的?,也可以透? zebra 而不必使用 route 指令呢! 例如想要增加 10.0.0.0/24 ? eth0 ??理的?,可以??做:
[root@linux ~]# vi /etc/quagga/zebra.conf
# 新增底下?一行喔!
ip route 10.0.0.0/24 eth0

[root@linux ~]# /etc/init.d/zebra restart
[root@linux ~]# telnet localhost 2601
User Access Verification

Password: <==???入密?
linux.router1> show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route

K>* 0.0.0.0/0 via 192.168.0.254, eth0
S>* 10.0.0.0/24 [1/0] is directly connected, eth0
C>* 127.0.0.0/8 is directly connected, lo
C>* 192.168.0.0/24 is directly connected, eth0
C>* 192.168.10.0/24 is directly connected, eth1


嘿嘿!立刻就?多出一?路由的??,而且最右???示 S,亦即是??路由 (Static route) 的意思。 如此一?,我?系?管理?可就??多了! ?定完 zebra 之後,接下?我?可以?始看看 ripd ??服??!



--------------------------------------------------------------------------------

?定 ripd 服?

ripd ??服?可以在?部 Router 之??行路由??的交???通, ?然啦,如果你的?境?面有?似 Cisco 或者是其他有提供 RIP ?定的路由器的?, 那?你?然也是可以透??? RIP ?您的 Linux Router ?其他硬?路由器互相?通的?! ??少?,??定 ripd 吧!
[root@linux ~]# vi /etc/quagga/ripd.conf
hostname linux.router1 <==??是?定 Router 的主?名?而已
password linux1 <==?定好你自己的密?喔!
router rip <==?? Router 的 rip 功能
network 192.168.0.0/24 <==?????域??行??的?作!
network eth0 <==????介面??行??的?作
network 192.168.10.0/24 <==?????域??行??的?作!
network eth1 <==????介面??行??的?作
version 2 <==??的是 RIPv2 的服?
log stdout <==直接在?幕?出???出的?料

[root@linux ~]# /etc/init.d/ripd start

[root@linux ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:2602 0.0.0.0:* LISTEN 21373/ripd


基本上,??就?定完成一部路由器的 RIP ??路由?定了!在上? ripd.conf 的?定?中, 他?主?以 eth0 及 192.168.0.0/24 ???域的功能??行搜索,如此一?,未?你?行任何路由??的??, 或者是整??域的主? IP ?行更?,你?不需要重新到每部 Router 上更?! 因??些路由器?自?的更新他?自己的??喔!嘿嘿!接下?,同?的?作?你到 ?二左?那部 Linux Router 上面?定一下! 因?整??定的流程都一?,所以???哥就省略啦!



--------------------------------------------------------------------------------

?查 RIP ?定的?通?果

在?部 Linux Router 都?定妥?之後,你可以登入 zebra 去看??部主?的路由更新?果喔! ?例??,?哥登入?二右?那部 Linux Router 後,?且登入 zebra , ?察路由?是??的情?:
[root@linux ~]# telnet localhost 2601
User Access Verification

Password: <==不要忘?了密?啊!
linux.router1> show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
B - BGP, > - selected route, * - FIB route

K>* 0.0.0.0/0 via 192.168.0.254, eth0
C>* 127.0.0.0/8 is directly connected, lo
C>* 192.168.0.0/24 is directly connected, eth0
R>* 192.168.5.0/24 [120/2] via 192.168.0.200, eth0, 00:06:48
C>* 192.168.10.0/24 is directly connected, eth1


如果你有看到上述的字?,嘿嘿!那就是成功啦!那?最左?的 R 代表的是透? RIP 通??定所?定的路由??啦! 如此一?,咱?的路由器?定就搞定?~


透??? zebra 以及 RIPv2 的路由?定的?助,我?可以??的就?路由??分享到附近??的其他路由器上?, 比起??使用 route 去修改 Linux 的核心路由表,???作?然要快速很多! 不?,如果是很小型的?路?境,那?不要使用?? zebra 啊!因?有?多此一?的感?。 如果您的企??境真的有?大,那?玩一玩?? zebra 配合一些??路由?定,嘿嘿!也是可行的啦!

--------------------------------------------------------------------------------
ARP Proxy ?路由器?端在同一?域

如果你一?始??的?路?境就是同一? C class 的?域,例如 192.168.10.0/24 , 後?因?某些因素必?要?某些主?搬到比??部的?境中,例如?一的 PC2 ~ PC4 。 然後又因?某些因素,所以你不能?更 PC2 ~ PC4 的 IP ,也就是?,有?像底下??的?示:



?三、路由器??是同一?域的特殊??

初次?面~看到眼睛快要掉下?哩!怎????的主?都在同一??域??而且?被?定不能?更改原先的 IP ?定, .....真是一????大啊~如此一?,在 Linux Router ??要如何?作路由啊?好??!真是好??~ 因? OSI 第三??路?的路由是一?一?去?定比?的,所以如果???卡上面都是同一??域的 IP ?, 就??生??。那如何?理啊?

既然 OSI 第三??法解?,那?可否以第二?的?料?接???理?看倌????得 OSI 第二?最重要的就是那? ARP ?定, 他可以用??行 IP ? MAC 的??。那?由?三我?知道 PC1 要? PC2 等主??通?,都需要透? Linux Router , 那有?有?法透? ARP 告知整??域?的??,要?送到 PC2~PC4 的封包都需要?? Linux Router 呢? 呵呵!好想法。你可以??想:



?四、路由器??是同一?域的特殊??

也就是?:

? Linux Router 的 eth1 那??域主?想要?接到 PC2~PC4 的主??,由 Linux Router ??接收;
? Linux Router 要?送?料到 PC2~PC4 ?,?必要由 eth0 ??送;
? Linux Router 要?送的?料? 192.168.10.0/24 ,但?非 PC2~PC4 ?,需由 eth1 ?送;
? Linux Router 的 eth0 那??域主?想要?接到 PC1 ?,由 Lniux Router ??接收。
要?到 (1) ? (4) 的要求?不?,我?可以透? ARP Proxy ?玩意?,啥是 ARP Proxy 呢?就是在 Linux Router 上面?先?定『? 192.168.10.20, 192.168.10.30, 192.168.10.40 ?三? IP 的 MAC 都??到 Linux Router 上!』由於是?域?路?,因此都是透??播的方式?到 ARP ?定所需要的 IP ? MAC 的??,所以啦,每一部在 eth1 那端的主?都?『?判』那三? IP 是 Linux Router 所?有, ??就能??封包?? Linux Router 啦!

再接下?,咱?的 Linux Router 必?要?外指定路由,?定:

若目?是 PC2 ~ PC4 ?,?路由必?要由 eth0 ?送出去才行,
若目?不? PC2 ~ PC4 ,且目?在 192.168.10.0/24 的?域?,需由 eth0 ?送出去才行。
也就是?,你必?要指定路由???中,那? PC2~PC4 具有?先???,然後其他的同?域封包才由 eth1 ??送。 ??就能??成我?所想要的?局啦!^_^!看?子似乎很?,其??定方面?挺??的,你可以透? arp 以及 route ???指令??成喔!
1. 先?定 ARP Proxy ,告知 eth1 所在?域 IP ? MAC 的??
[root@linux ~]# arp -i eth1 -s 192.168.10.20 00:11:12:13:14:15 pub
[root@linux ~]# arp -i eth1 -s 192.168.10.30 00:11:12:13:14:15 pub
[root@linux ~]# arp -i eth1 -s 192.168.10.40 00:11:12:13:14:15 pub
# 看?四的?明,我??假? eth1 的 MAC 是 00:11:12:13:14:15 啦!
[root@linux ~]# arp -i eth0 -s 192.168.10.50 00:01:02:03:04:05 pub
# 看?四的?明,我??假? eth0 的 MAC 是 00:01:02:03:04:05 啦!

[root@linux ~]# arp -n
Address HWtype HWaddress Flags Mask Iface
192.168.10.20 * * MP eth1
192.168.10.30 * * MP eth1
192.168.10.40 * * MP eth1
192.168.10.50 * * MP eth0
# 瞧!有三? IP 都?成?於俺的 eth1 的啦!然後一??於 eth0

2. ?始?理路由,需要清除掉 eth0 的路由,?且增加 PC2~PC4 的??路由
[root@linux ~]# route del -net 192.168.10.0 netmask 255.255.255.0 eth0
[root@linux ~]# route add -host 192.168.10.20 eth0
[root@linux ~]# route add -host 192.168.10.30 eth0
[root@linux ~]# route add -host 192.168.10.40 eth0
# ??就?定妥?啦!?你的路由??好?!

[root@linux ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.20 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.10.30 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.10.40 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
# 看到上面?一行,?然我的???卡都是在 192.168.10.0/24 ,
# 不?真正??整??域?送的,?有 eth1 那一?的意思!


瞧!??一?,你的 PC1 就可以 ping 到 PC2~PC4 的主?了!?料的??上面也?有??。 ??作法是相?有?助的?!?於??架?不想更?的?境??。 ^_^! 不?,由??案例你也可以清楚的知道,能不能??其??路由的??才大哩! 而路由是?向的,你必?要考量到??封包如何回?的??喔!

--------------------------------------------------------------------------------
重?回?

?路卡的代?? eth0, eth1, eth2...,而第一??路卡的第一???介面? eth0:0 ...
?路卡的??可使用 ifconfig 直接?定,亦可使用?定?如 /etc/sysconfig/network-scripts/ifcfg-ethn ??定;
路由是?向的,所以由?路封包?送??送到目?的路由??,必?要考?回程?是否具有相?的路由, 否??封包可能?『?失』;
每部主?都有自己的路由表,此路由表 (routing table) 是作?封包?送?的路?依?;
每部可?外 Internet ?送封包的主?,其路由??中?有一???路由 (default gateway);
要? Linux 作? Router 最重要的是??核心的 IP Forward 功能;
重?路由可能??你的?路封包??到??的方向;
??路由通常是用在?? Router 之??通彼此的路由??用的,常?的 Linux 上的??路由套件? zebra ;
arp proxy 可以透? arp ? route 的功能,?路由器?端都在同一??段?;
一般??,路由器上都?有??以上的?路介面
事?上,Router 除了作?路由??之外,在 Router 上面架?防火?,亦可在企??部再分隔出多?需要安全 (Security) 的?位?料的?隔!
文章评论

共有 34 条评论

  1. 被置换的硫酸铜 于 2009-09-02 09:50:14发表:

    看来真是无聊透顶啊!

  2. 被置换的硫酸铜 于 2009-08-30 15:39:30发表:

    鸟哥貌似很强悍啊!

  3. huofootball 于 2009-08-26 11:21:02发表:

    一次讲太多了点,我也在看鸟哥的东西,还没看到网路方面的,一点一点学吧!

  4. baizx 于 2009-08-19 09:20:30发表:

    回 31楼 里面东西不全的~~

  5. 被置换的硫酸铜 于 2009-08-14 03:19:50发表:

    长篇大论。还是繁体字!

  6. Damon_lan 于 2009-08-12 00:18:13发表:

    我的知识太薄弱了。。有点看不懂。。笨死了我!!!

  7. qiannian521 于 2009-08-11 17:47:00发表:

    顶个先!

  8. baizx 于 2009-08-11 10:33:54发表:

    回 27 28楼 这个就是我给自己留着 查询 用得! 因为 有的时候 上不了 鸟哥的网站 又不在自己的电脑旁 或者忘记优盘 而又要用 就会很尴尬!!

    里面有缺陷的 你们喜欢就直接 去鸟哥的网站 或者 自己去下 电子书

  9. hantu 于 2009-08-11 01:00:08发表:

    这么贴还不如直接给出电子书

  10. 逆风飞祥 于 2009-08-10 15:26:21发表:

    看着挺累人的,当时要是学了繁体也不至于今日这种情况饿。

  11. ziyouhun 于 2009-08-10 11:33:51发表:

    学习了,不过就是繁体看着有点累,呵呵,谢谢了

  12. baizx 于 2009-08-10 11:07:01发表:

    没有 VPN 流媒体服务 LDAP服务 Webmin 的详解有点不爽

  13. baizx 于 2009-08-10 11:02:38发表:

    呃 有点图片什么的 没弄过来 是个提醒的 东西~~~

  14. baizx 于 2009-08-10 10:59:31发表:

    ?始安? WWW 套件之前

    ?始??好要?你的 WWW 主??的多功能了??!相信你已?迫不及待的希望?快?你的 Web 主??的更美?、功能更多、?要有留言版????!?不?呀!不?,??要告?你,?急?急!你要仔?的看看你有?有底下的一些?定喔!如果?有的?,底下的套件??法?到原先的功能呢!
    是否已?安?了 PHP 及 MySQL 等套件:
    ??很重要喔!由於目前在 Linux 的 Web Site 上面,大都使用 PHP + MySQL + Apache 的形式在跑的,我?以下的各?套件基本上也都是使用?三?????成功能!所以?,你『一定』也『必?』已??你的 WWW 主?安?上了 PHP, MySQL 及 Apache ?!如果?有的?,??考底下?一篇文章,?安?你的 Web 主?吧!
    PHP+MySQL+Apache 安?方法?介
    是否?於 HTML ?法有初步的??:
    通常我???都是使用??的????????的,目前都是使用 Netscape ?? free 的???的????,至於??的??(就是 php ? mysql ?的??,或者是以 perl ?言?的留言版?的咚咚,再者,也有以 Java ?的????)?都是使用?路上一些前???的???直接套用而已,??有自己?啦(因?功力不足....)。不?,即使如此,???是要建?您最好有初步的 HTML ?法的概念,因?不?是??或??的??,或多或少都一定?用到 HTML 的?法,多少?解一下 HTML 的?,?於你的?????有比?好的?助!底下也建?一?相???的??教??站,你可以去看看喔!
    ?站建置百?箱
    是否一定需要很花俏:
    ??真的是?仁?智的??,因??有人??管你??要怎??作!不?,??也要告知大家一下,由於?路的速度有的?候是很慢的,尤其是夜? 22-02 ?之?的???段,想要?你的????速度?到一定程度的??度,?多的??、?多的?料?、?多的花俏??,有?反而造成大家不?意到你的?站上??的原因,因?......太慢了!所以?,如果你的?站是以一般的??制 ADSL ?架?的?,千?也不要弄得太花俏才好,否?光?一???就要?到隔天早上,我想,???有人?喜???吧!不?,如果你的?站是建置在?立的 T1 上面,呵呵!那就努力的?她??的美?一些吧!
    是否?放?人??:
    不知道你有?有?放?人??呢?如果有?放的?,那?你必?要?解一件事,就是每?使用者的家目?必?要?他的?限??成(至少) chmod 711 或 chmod 744 或 chmod 755 才行,而且,以 Red Hat ?例,每?使用者的家目?都必?有一?名? public_html (可能因??定?有不同)的目?。例如我要??一? vbird 的?人??,那?至少需要??的?性:
    mkdir /home/vbird/public_html
    chmod 755 -R /home/vbird
    以後你的?人??只要放置在 /home/vbird/public_html ?中,然後修改??的?性,就可以?大家???了!此外,如果你想要?你的使用者可以使用 cgi ?言的?,?必?要在 apache 的 httpd.conf ?案中?定一些??才行呢!你可以?考一下底下的 apache 的?性?定??文章:
    Apache 之 httpd.conf ?定???明
    ????:
    ??好了!?安?吧!
    ?始安???器 ( Counter ) 套件
    最近更新日期:2002/01/13
    前言
    ?始安?
    ??主要?示的模式
    利用小批次?(script)??每日人?

    --------------------------------------------------------------------------------
    前言
    有?有??很多的??都有一?小小的??器呢?我?????也有??的一???器喔!在?哥的 Linux ? ADSL 小站左上角,注意到了?!一般而言,如果是自行?????且使用的是免?空?的??主?系?,那?常常?看到他?是使用向外部主?申?一???器的方法。不?,??方法有?大缺?,就是你的??器必?由?人所掌控,如果你需要更多的??器,那?你只好不?的跟?提供的?站要求?!不?,如果是自己架站的?呢?呵呵!我?可以直接在自己的??上安???器啦!你可以?意的增加或修改你的??器,而且,安???器的方法很??喔!??到你安?完了之後??偷笑呢!
    目前最有名的??器套件大概是 wwwcounter ?一套!就我所知的套件最新??是 wwwcount2.6 版的?子,不知道有?有最新的....。?一套??器基本上有??主要的模式,分?是:
    只要按下『重新整理』就可以增加??一次;
    按下『重新整理』後,如果?上一次??的 IP 相同的?,那就不增加次?。
    ???模式最大的不同在於第二?模式的???案中,不但有次?,??包含一? IP ,?案?容有?像??『 2512 192.168.2.100 』,前面的?字是次?,後面的一串咚咚是 IP ,所以?,wwwcount 在第二?模式?自?的判???的 IP 位址是否相同!通常我?使用的都是第一?模式,也可以?作?『灌水模式』,他的???案?容只有一??字,那就是你的次?了!由於?有 IP 的????了,因此只要你不?的按『重新整理』,呵呵!你的??被??次?就?不?的增加、增加、再增加!所以?,在安???套件之前,你就要先想一想,你所需要的模式是哪一?哩!?另外, wwwcount 套件??的模式是第二?,所以你的安?的?候需要特?小心喔!

    --------------------------------------------------------------------------------
    ?始安?
    建?你到中山大?的 FTP 站去搜??下?最新的版本,我???提供的可能不?是最新的?料喔!不?,由於最新的版本在安?的步?上??的版本不太一?,您可能需要特?留意一下。我??介?的是 wwwcount2.4 版,如果您下?的?案比?新的?,那?以下的?料就不太?合您了!你可以按 ?? 下? wwwcount2.4 版!
    安?的方法?在有???的,只要??步?就行了,那我?就?始吧:
    [root @tsai /root]# cd /usr/local/src
    [root @tsai src]# tar -zxvf wwwcount2.4.tar.gz
    [root @tsai src]# cd wwwcount2.4
    Step 1:
    [root @tsai wwwcount2.4]# ./Count-config <==?始?定
    During installation, the directories will be created for you
    if they do not exist and if you have the permission to do so.
    ++
    Continue [y|n]? y <==按下 y 就?了!

    You need to enter the full path of the directory where you system
    keeps the CGI programs. This directory must exist!

    *cgi-bin dierctory [/usr/local/etc/httpd/cgi-bin]: /usr/local/apache/cgi-bin
    上面的路??你的 apache ??的 cgi-bin 的目?有?!

    You need to enter the base directory of the counter related stuff.

    *Base directory [/usr/local/etc/Counter]: /usr/local/Counter
    ?是 wwwcount 安?的目?,我都喜?安?在 /usr/local 底下,所以?定成上面的目?。

    You need to enter the directory of the configuration file.

    * Config directory [/usr/local/Counter/conf]: <==按 enter 就好了!

    You will create this file later by running the program "Gen_conf".

    * Name of the configuration file [count.cfg]:<==同?使用程式??的,按 enter

    You need to enter the directory of the counter data file.

    *Data directory [/usr/local/Counter/data]:<==同?使用程式??的,按 enter

    You need to enter the directory of the Log file.

    *Log directory [/usr/local/Counter/Log]:<==同?使用程式??的,按 enter

    * Name of the log file [Count2.4.log]:<==同?使用程式??的,按 enter

    You entered:
    ++++++++++++++++++++++++++++++
    CgiBinDir=/usr/local/apache/cgi-bin
    BaseDir= /usr/local/Counter
    DigitDir= /usr/local/Counter/digits
    ConfDir = /usr/local/Counter/conf
    ConfFile= count.cfg
    DataDir= /usr/local/Counter/data
    LogDir= /usr/local/Counter/Log
    LogFile= Count2.4.log
    ++++++++++++++++++++++++++++++
    Everything looks ok [y|n]? y <==?定???就按 y 吧!

    Step 2:
    [root @tsai wwwcount2.4]# ./configure
    底下就??始一些??你主?情?的一些咚咚?!

    Step 3:
    [root @tsai wwwcount2.4]# vi Makefile
    如果你想要每按一次就增加一次次?的?,那??入 Makefile
    ?案,找到底下?一行:
    #COUNT_RELOAD= -DCOUNT_RELOAD=1 (大?在第 33 行)
    ??解 # 符?取消,然後?存後退出,??就可以?!

    Step 4:
    [root @tsai wwwcount2.4]# make clean; make
    ???作在??可?行?!

    Step 5:
    [root @tsai wwwcount2.4]# ./Gen-conf
    ???作在?定你的主????相??定!
    First of all you must know your
    .......
    Continue [y|n]? y <== 按下 y 吧!

    * Enter your fully qualified domain name [no default]: tsai.adsldns.org
    上面需要?入你的主?名?!需要主?名???域名? 都需要喔!
    * Enter your IP address [no default]: 192.168.1.2
    如果像我一?是使用?? IP 架站的,那就填我?的?部 IP 吧!
    * Does your host have any nickname [y|n]:? y
    如果你的主?有多?名?,那就按 y 不然的?,按 n 就可以了!
    * Enter your host's nickname (FQDN) [no default]: www.tsai.adsldns.org
    如果上面按 y ???目才?出?,就填另一?主?名?吧!
    * Do you want to allow automatic file creation [[y|n]? n
    通常不希望自行?生?案!?有??,所以按 n ?!
    * Do you want the program to run in strict mode [[y|n]? y
    是的,需要??方式的?示!
    * Do you want to ignore access hits from your own host [y|n]? y
    如果 WWW 的要求?自你自己的 IP ,那?就不要??!
    我??都? y ,因?自己上去看自己的???要??,
    有?偷?摸狗了.....按下 y 之後,以後你自己?上自己的??,
    ??器?不?累加喔!
    * Allow using the rgb.txt file [y|n]? y
    那就使用吧!

    Step 6:
    [root @tsai wwwcount2.4]# ./Count-install
    Your configuration:

    cgi-bin directory= /usr/local/apache/cgi-bin
    conf directory= /usr/local/Counter/conf
    conf file= count.cfg
    digit directory=/usr/local/Counter/digits
    data directory=/usr/local/Counter/data
    log directory=/usr/local/Counter/Log
    log file=Count2.4.log
    rgb file= ./wcount/rgb.txt
    ===================

    Continue [y|n]? y <== 看看你的?定正不正?,?的?就?始安?吧!
    *Do you know the user and group id of httpd' child process [y|n]:? y
    你知不知道 apache 的使用者名??群?!若以 Red Hat ??的
    apache ?安? WWW 的?,那???的名?? apache ,
    如果是以 tarball 安?的?,那就是 nobody ?!
    *Enter user id of httpd's child process [no default]:? nobody
    *Enter group id of httpd's child process [no default]:? nobody
    上面??咚咚都需要?你的?定而?,如果你不知道的?,
    那??入 httpd.conf ?案中,去找一下相?的?定就 OK 了!

    ??就安?完?了!!

    --------------------------------------------------------------------------------
    ??主要?示的模式
    基本上,??就安?完?了!要使用的?候,相?的??,只要在您的???案中,在任何地方加入:

    就可以?示出相?的?形了!而 vbird.dat ???案?放置在 /usr/local/Counter/data ?面,你可以??造出???案:
    cd /usr/local/Counter/data
    echo 1 > vbird.dat
    chown nobody:nobody vbird.dat
    chmod 644 vbird.dat
    由於 Count.cgi ??程式?自?的去?找 /usr/local/Counter/data ?面的?案,而且??的人是 apache ?面?定的 WWW 的??者(在 Red Hat ??使用 apache ??使用者,但是 apache ???是 nobody ),所以你必????案?更?性才能??示出?!至於 Count.cgi 後面的??代表的意??何???就需要您自行去探?了!????程式的??主要的?容?料??上?,希望?大家有??助:(尤其是?示安??例 ?面很?富喔!)
    Documentation
    ?示安??例
    而?於?案的建置方面,您可以持?建立不同的?案???累?的次??料喔!加油?!

    --------------------------------------------------------------------------------
    利用小批次?(script)??每日人?
    那如果我想要每日??上?的人?呢?很??喔!只要利用以下的小批次?,?且在每天的 0:01 分?行一次,就可以?!
    zpath="/home/vbird/public_html/linux_menu"
    y=`date +%d/%b/20%y`
    w=`date +%a`
    person=`cat /usr/local/Counter/data/linux_today.dat`
    echo $y "(" $w ")" $person > $zpath/zperson.tmp
    cat $zpath/zperson.txt >> $zpath/zperson.tmp
    cat $zpath/zperson.tmp > $zpath/zperson.txt
    cat $zpath/zperson1 > $zpath/zperson.html
    cat $zpath/zperson.txt >> $zpath/zperson.html
    cat $zpath/zperson2 >> $zpath/zperson.html
    ?然?,您的?料中就必?先建立 linux_today.dat ?,?且也需要一些相?的 html 的咚咚喔!你可以看一下我?的?行成果哩:
    每日上?人???表
    ?然了,相?的 zperson.txt zperson1 zperson2 都可以直接在上面的?例中以『??原始?』的方式?取得喔!加油?!
    --------------------------------------------------------------------------------

    ?始安? phpBB ????
    最近更新日期:2002/01/13
    前言
    安?中文化版本?程
    管理???注意事?
    如何? Phorum ???的?料?容?成 phpBB 呢?

    --------------------------------------------------------------------------------
    前言
    ???安?完?,也吸引了一些人潮之後,我想,接下?比?麻?的大概就是如何?你的?友??通了!想?初 VBird ?於????西?不熟悉的?候,很多的??都??得知,那?也是很著急的想要架?一??友??通的???。?然可以到一些大型?站上申?留言版,但是那根本就??於事,因?以我?????的特色而言,我?需要的是藉由多方面的???得到相?的???正?的回?呀!所以,???是相?需要的。
    此外,由於我?是使用 Linux ??作?系?,??西本?就是伺服器的一?,如果使用我?自己的系??架????,那不是更棒??可以自己掌控自己的系?,是一件很快?的事情呢!呵呵!OK!那我就到?路上到?去搜??料,最後?於?到有??比?有名的免??????,其中,VBird ?人?喜?的是 phpBB ?一?免????了!
    由於近年? PHP ???路?言,配合 MySQL ??人性化的?料?系?,?搭配 Apache ????人知的??伺服器,是除了微?之外的另一?主流??伺服器了!最重大的特色就是『安全』加上『免?』咯!因此,目前很多的??都是建?在?? PHP ?路?言上面,?然, phpBB ?名思?,一定?上就可以?解?是一? PHP ?言?成的??套件了!他的??很多, VBird ?人是真的?喜?的,只不?有些功能仍嫌不足,故而 VBird 就自己加上一些程式?,??成 VBird 自己想要的功能?!
    ?一篇心得分享主要是以 VBird 修改?的 phpBB 中文版??明的,而版本是截至目前(2002/01/12)?止 phpBB 公告?出的最新版本 Version 1.4.4 版,如果你?於原?的?案比?有?趣,?迎到 phpBB 的?站上去搜?一下?!那?的?明??也?比?完?的!?址?:
    http://www.phpbb.com/
    ?然了,由於 VBird 的 PHP ???功力都是 Zero (零零零.....),所以翻?或者是中文化程度上可能?有??存在,也?迎大家在????的?候,?得提醒我喔!

    --------------------------------------------------------------------------------
    安?中文化版本 phpBB
    基本上,??的安?方法只是? phpBB ?站的?明?料??成中文而已,?什?了不起,如果您的英文好,那?建?直接到??站上看?明就 OK 了!
    ??安???:
    安?前,你需要完全的?解你的系?? phpBB 到底合不合??由於 phpBB 需要:
    PHP 3.015 以後版本;
    MySQL ?料? 3.22 或 3.23 版本均可;
    Apache ??伺服器。
    所以,你得先??你的系?上已?安?好了至少?三??西,?且,?三?咚咚都可以被正常的????行才可以!如果你??有安?妥?的?,那??迎到底下的??上看看如何架?吧:千??得,如果你的 PHP ? MySQL ?有架?成功,那?你就不需要再往下看了,因?,你的?????有用.....
    Apache + PHP + MySQL ?站架?。
    下??移? phpBB ??版套件:
    phpBB-1.4.4 版在 phpBB 的??上可以找到,您可以 ??? ?下?,至於 VBird 改?的中文版可以在 ?? ??下?喔!下?完之後,?依序?行:
    [vbird @tsai vbird]? tar -zxvf phpBB-1.4.4-ch.tar.gz
    ?生一? phpBB 的目?;
    [vbird @tsai vbird]? mv phpBB /home/vbird/public_html
    移?到可以?大家??到的 vbird 的?人??空?;

    以上面?例,由於?是一?可以?大家使用的??版,因此,你可以以一般人身份?安???套件,而不需要?用到 root 的身份!此外,我?他移?到 vbird ??人的?人??的首?去,由於我在 httpd.conf ?面?定? public_html 是 apache 的??首?,如果你的??首?不是??的?,?依你的情??加以改??!
    在上面的例子中,在安?完?之後, Internet 上面的人?可以使用 http://your.domain.name/~vbird/phpBB ?看到我安?的???了!
    ?定???的可?取?限?路?:
    由於 phpBB ?????是以 Web 的界面?安?的,想?然耳,你就必需?你的 phpBB 目?移?到 Internet 可以看到的地方。然而在一?始安?的?候,由於重要的??? config.php 是伺服器??不可?的?性,因此你必需修改一下 config.php ?案的?性:
    chmod 666 config.php
    如果 install.php 程式判?出 config.php 不可?入,那??出????面!因此在安?的?候,?根 phpBB 就不??你安?的哩!另外, config.php ???案的?容也可以稍微看一下!最重要的是???案?面?於???路?的?定需要正?才可以?行!在 config.php ???案的第 39 行的地方,程式需要你?定一下???的路?!以上面的路??例,由於我安?在 http://your.domain.name/~vbird/phpBB 底下,所以第 39 行需要?定成:
    $url_phpbb = "/~vbird/phpBB";
    需要特?注意的是,由於 php 在每一行『程式』的?尾都需要加上『;』符?!??千?不可以少掉喔!
    ?行 install.php :
    ??安??!在一台可以?上你的 Web 主?的?器上,?接上? Web 主?,以 VBird 上面?例,我就在 IE 的?址列填入:
    http://your.domain.name/~vbird/phpBB/install.php
    另外,由於 install.php 已?被 VBird 改?了,所以?明都已??成中文啦!因此,你可以不?吹灰之力就?你的 phpBB ???搞定?!(因?,中文?看的懂吧!!)
    第一步,?定?料?:如果 config.php ?限?定正常的?,那?你?可以看到一??窗,在??窗下面需要?入 MySQL ???料?的相???!通常 MySQL ??的主?名?? localhost ,而如果你具有 root 的身份,那?你可以新建一??料?!如果你只是一般的使用者身份,那?你?需要向?管人?申?一??料?,?取得相?的密????後,才可以??下一步;
    第二步,?定?料?的可用性:第一步?按下『下一步』之後,若一切?利,???生如下的?面: Testing DB Connection...DB Connection Good!
    Selected database phpBB...Database could not be found
    Attempting to create database phpBB...Database Created!
    Creating phpBB tables an inserting default data...
    Creating table cat [OK]
    Creating table config [OK]
    Creating table disallow [OK]
    Creating table forums [OK]
    Creating table hmf [OK]
    Creating table ranks [OK]
    Creating table posts [OK]
    Creating table posts_text [OK]
    Creating table pmsg [OK]
    Creating table sessions [OK]
    Creating table themes [OK]
    Creating table topics [OK]
    Creating table users [OK]
    Creating table online [OK]
    Creating table acess [OK]
    Creating table smiles [OK]
    Creating table words [OK]
    Creating table banlist [OK]
    Creating table forum_mods [OK]
    Creating table forum_access [OK]
    Inserting default data [OK]
    Database Created Successfully!
    如果?有?法安?的?,那?可能就是?料?有??了!???候,可能需要考?一下 MySQL 的咚咚了。VBird 的解?方法:通常是?一??料?名?就可以了!
    第三步,建立『???管理?』??:??版的???定,都需要具有『站?』?身份的管理者才行!所以你必需建立一?站?喔!?然了,站?也可以就是你本人的 ID 啦!
    第四步,建立??版??:?你的高??定吧!
    ? config.php ?限修改回?:
    好了!??限修改回?吧!
    chmod 644 config.php
    新增?料????版:
    好了!我?已?有???了!接著下?就是需要??版的功能了!只要:
    增加?料?;
    增加??版。
    就可以使用你的???了喔!耶!!!?有所有相?的?明??考??版上的[常???]那一?咚咚即可!!!

    --------------------------------------------------------------------------------
    管理???注意事?
    安??程中的??:另外,有?可能??生??的地方要告知大家喔!就是,?你建立了一????的?料?之後(以??教??例,可能就是 phpBB ???料?啦),那????料???的位置???在(如果您使用的是 Red Hat ??的 MySQL ):
    /var/lib/mysql/phpBB
    ??目?中,如果您是以 Red Hat 6.1 那一篇教?的?,那?您的?料???在 /usr/local/mysql/var/phpBB ??目?中!?一您不幸的??料?的?容?定??的?,那?如何是好?!最??的方是就是???料?整?移除掉了!你可以??移除之:
    mysql -u root -p'password'
    mysql> drop database phpBB;
    mysql> exit
    如此一?,?? phpBB ?料??自你的 MySQL 移除了,然後再重新的以 IE?址/istall.php ?重新安?吧!
    ?於私人???:phpBB ?中允??定私人???,就是不公?的???啦!??功能 VBird 很喜?啦,因?可以?入???的身份是由站???定的,因此,您可以很?易的就?定?可以?入你所?定的私人???,有啥好??!最大的好?就在於:?你有一群管理?,而?些管理?所??的??是比?深入的,可能?影?到你的???的?密,那?,使用私人???,?可以很?易的??密文件保存起?!
    ?於回覆信件:由於?的 phpBB 1.4.4 版本中,?於回覆文章者?不?以 E-mail 通知,?且,在通知的??上面也是?示的不是很完整,所以 VBird 私自的?回覆信件的功能加入了中文化版本中,不?,如果您要取消?功能的?,也是很??的,?以 vi ?入到 reply.php ???案中,然後找到:include ('vbird_email.php'); ?一行,在最前面加上??『 // 』,把??功能?成?解,那?一?,回覆信件的功能就自?的被取消?!
    ?於?份:?於?料?的?用中,最重要的部分就是?份啦!您?不希望?友?的?情回?的文章付之一炬吧!所以?,?份是相?中要的!在 phpBB 的?份?中,?在是很??的啦!您只要?定? /var/lib/mysql/phpBB ??目??份下?,?且?重要的???案『config.php』?份,如果您的主?系??定的?,那?每天的深夜4??他?份一下是很不?的抉?,?於自??行的 crontab 功能,?看一下 crontab 的文章。如果哪一天不幸,您的主???了,那也???,只要? MySQL 的?料?他?回去,然後? phpBB 目?安?好(不用 install 喔),再? config.php ?他覆?回去,嘿! phpBB 就回?正常?!?份是很重要的喔!!

    --------------------------------------------------------------------------------
    如何? Phorum ???的?料?容?成 phpBB
    再?跟大家分享一下 VBird 的??,想?初俺是使用 Phorums ?????,他也是相?棒的一????,不?,?人的喜好不同,所以後?才改用 phpBB ?????!不?,如果您想要提供使用者上??案的功能,那?您就必??? Phorum 的最新版本!目前我知道的就只有 Phorum 有提供上??案的功能了!好了!?一篇是在提供 phpBB ,所以其他的我就不多?了!?如何? phorum 的?料??成 phpBB 的呢???的很,就是先? phpBB 的首?上下? phorum2phpBB.tar.gz ???案,或者是 按?? 下?,然後?他解??,???生:

    phorum2phpbb_14.php
    ???案,?他移?到 phpBB ???的目?下,然後在 IE 的?址列?入 IE?址列/phorum2phpbb_14.php ,之後按照他的?明一步一步??料?成 phpBB 的格式,那就 OK ?!很??吧!但是,由於??的?程?非百分之百成功的,也就是?,有些?料仍然?有?失的??,所以?,『?份』?真是件很重要的工作!!
    在??完成之後,由於有些?料更?了,因此文章??主???有??的??,???候,?你以管理?的身份登入???,然後?行『???/??同步化』的?作,??就?????息更新?!
    最後,祝大家使用愉快!!
    架站? phpBB 2.0.xx 安??使用
    最近更新日期:2003/07/02
      在架?好了 Apache ?? WWW 伺服器??之後,你的 Linux 主?上面??已?可以被其他 Client 端以??器??行 WWW ??的取得了!不?,一般??,Apache 通常?提供了????的??,如果想要跟使用者有所交流(就是互?式??),那???的????是?法?成??的需求的!此?,?? phpBB 架站??就?的相?的??而好用?!底下就??一??? phpBB 第 2.0 版的第 5 ?出版本吧!
     
    前言
    phpBB 架?之前的必要套件
    安? ( 或升? ) phpBB 2.0.5
      :全新安?
      :升?版本
    ?於模?
    其他安全的注意事?(很重要!不要忽略)
    漏洞修?
    重?回?
    ?考?源

    --------------------------------------------------------------------------------
    前言:
    在目前的 Linux 版本中 ( 2003年以後的 Linux 版本 ) ,在您安?完 Linux 之後,通常已?都? WWW 伺服器??架?上去了!那就是 Apache ??套件啊!有了??套件之後,您的 Linux 主?就已?具?成? WWW 伺服器的功能了!不?,???不?的!因?目前我?都希望 WWW 伺服器可以?到???者互?的一?功能,而??功能在使用??的 HTML ?法是?法?成的?!而要?到??的功能,除了可以藉由 CGI ??主?端程式所提供的介面外 ( Server side include, SSI ),也可以透? PHP ? MySQL ???套件的功能??成的。那?什?是 CGI, SSI, PHP ? MySQL 呢?底下?略??一?喔!
      什?是 CGI ?
    所?的 CGI 就是 Common Gateway Interface 的??,事?上, CGI 是主?上面的一些程式或者是 scripts ,通常最常?到的就是以 perl ???似程式?言 ( program ) 的程式?所?成的一支程式,另外, bash shell 也可以用?撰? CGI 程式喔!因? CGI 其?是一支程式,?使用者以??器?接上?支程式的?候,由於 Apache 提供了?支程式可以?行的能力,因此,使用者就可以透??支程式??到??交流的目的了!例如很多?站的留言版就是使用 perl ??成的?!(?:perl 其?有??似 BASH ,不?功能更??大!)
     
    不?,也由於?支程式可以在主?上被?行,因此,如果 CGI 程式??的不好,有可能被拿?做?入侵的跳板喔!??可要千?注意,不要在?路上面?拿 CGI 程式?直接安?到自己的 Linux 主?上?!

    --------------------------------------------------------------------------------
    什?是 SSI?
    ??名???有趣, Server Side Include, SSI ,怎??之?『主?端包含者』?是??的,所?的 Server side include ,?穿了,就是所有的『程式?行?程都在主?端, Client 端只??接收最後的??而已』,?是什?意思???例子??,?我?以??器,例如 Netscape ??接到某?站的留言版?,?留言版是以 CGI 程式?成的,????站接收你的要求之後,首先就?在?主?端?行??留言版程式的?行,?行完?之後,再??果透? 80 port ?送到你的??器上面,你就可以看到最?的留言版版面?!??的整?程序看?,在您的 Client 端上面,完全不需要知道主?端做了什??作,就可以接收到你所需要的?息!?就是所?的 SSI ?!
     
    ??有什???呢?最大的??就是方便程式???使用者??的便利性了。怎??呢?在早期的 WWW Server ? client 的?料?送?中,?你的 WWW Server ??出新的程式?,使用者若要使用??程式的功能,?他?的??器也要支援?程式的相?功能才行!??很麻?呢,想像一下,全世界??多部的主?,?你要?上某部主?,就要安?某部主?的相?程式功能,我?每天?上??多的?站,每??站都要求安?新的程式,......想不?掉都很?~
     
    ??,SSI 的功能就很突?出必要性了!因?使用者完全不需要安?新的程式!反正程式都是在主?端?行的,使用者完全不需要知道程式做了什??作,??一?,呵呵!真的方便很多喔!目前大多的 CGI 程式、PHP ?路?言等等都是使用 SSI 的方式??行??的!所以很方便使用呢! ^_^

    --------------------------------------------------------------------------------
    什?是 PHP ? MySQL ?
    事?上, PHP 可以?成是一???程式?言,基本上他就是一堆程式?,?使用者?接到??程式??案後,??程式就?始在主?端?行,最後??生一些 HTML 的?容??,而??些 HTML 的????到使用者端的??器上。因此,使用者是看不到程式?的,只?看到最?的?出?果。由於 PHP 的程式?行效能高,而且相?於 CGI 又比?安全,因此,目前使用上很?泛喔!
     
    至於 MySQL ?是一??料???,什?是?料?呢?就是?使用者?送一些??後,?些??可以被?存到一?特定格式的特定?案,???案就可以?之??料?了!而 MySQL 就是管理?些?料?的???。目前?料???很多,MySQL 就是其中一?。
     
    MySQL 提供一?介面,很多程式( 例如 PHP ) 可以透? MySQL 提供的介面??行?料?的存取,而由於 PHP 是程式,因此?料?就可以被 PHP 程式??的存取??除,所以,就可以做成一?『??』的?站啦!
     
    ?? Linux 提供作?系?平台,Apache 提供 WWW 的?路服?,PHP 提供程式的??,MySQL 提供?料?的??存取,就?合成? LAMP 的???站?!?有更多的相??息,可以?考 VBird 之前?的 WWW 伺服器架? 喔!
     
    ?就是一些相?的???!而?了?作一?美?的?? WWW ?站,很多程式??者利用 PHP 的?良功能,?合 MySQL 提供的?料?介面,?行所?『架站?』??,例如很有名?的 PHPNuke, phpBB 等等,在??,我?要介?的就是 phpBB ??也是很?良的架站?套件啦!
     
    目前 phpBB ??超?架站?已?出到 2.0.5 版本了 ( 2003/06/17 ) ,??得?年前 ( 大?在 2001 年底 ) VBird 才??翻?完成 phpBB 1.4.4 版的 FAQ ,呵呵,?想到一下子 phpBB 就已?出到 2.0.5 版本了!真是快啊!? 1.4.xx 版本不同, 2.0.xx 版本的介面更?漂亮且柔和,?哥真是很喜?!此外, 2.0.xx 版已?重新?出好?次了,而?次的 2.0.5 是最?版本,下一代的 phpBB ?是由 2.2.xx 版本?始??的!( ?: 2.0.0 是在 2002/04/03 ?出的,到 2003/06/17 ?出最?版本的 2.0.5 ,程式更?定,也克服了一些臭?)
     
    在最新的?? phpBB 2.0.5 版中,除了已?克服了一些程式的臭?之外,在?? 2.0.xx 版本上面,最大的特色就是:『在??版的?候,台?的竹?星球就已??作好完全的中文化功能』了!呵呵!真是很了不起喔!我?真的要感?竹?星球的?位同好?行的??中文化工程,?我?使用者在使用的?候,就相?的?手?!另外,在中文化之?,?? 2.0.xx 版本也提供了『外?模?』的功能!所?的『模?』就是一些加?的功能,例如『列印、版面?格、反白光?...』等等的其他使用方式喔!相?的不?吧!
     
    事?上,?? phpBB 主程式?模??哥通通?有????,就只?用~真是不好意思~所以呢,希望大家可以在架完站之後,可以前往 phpBB 官方?站以及??的竹?星球?站上面?予?些朋友支持?鼓?喔!有他?的存在,我?才有??好用的??可以使用啊! ^_^。 phpBB 官??竹?的?站在底下:
     
    phpBB 官方?站:http://www.phpbb.com
    竹?星球官方?站:http://phpbb-tw.net/phpbb/
     
    尤其是竹?星球,有空真的要多多上去??一下模?的使用喔!同?,竹?星球站?群也?了一本『phpBB??架??典』?面更是提到更多的模?相?技能? phpBB 的一些密技喔!底下也列出一些目前? Linux 相?性比?高的?? phpBB 的?格?站喔!
     
    ?哥的私房菜新手???:http://phorum.vbird.org
    Study Area 之酷?????:http://phorum.study-area.org
    摩托?????:http://moto.debian.org.tw/

    --------------------------------------------------------------------------------
    phpBB 架?之前的必要套件:
    在前面我?提到了一些相?的 WWW 伺服器?念,以及 PHP ? MySQL ?有 SSI 等等的概念,相信您???比??解 WWW 的相?技巧了。好了,既然 phpBB ??超?架站?是安?在 WWW 伺服器主?上面的,而且他是 PHP ?成的,?且有用到 MySQL 的?料?,所以?,你就必?要有安?底下的??套件:
     
    Apache :基本上,各大 Linux distributions 都?主?提供 Apache ,所以,拿出光碟,直接安?他吧!
    MySQL:至少需要 3.23 以上的版本,如果您是以 Red Hat 7.0 以上的版本安?的?,那???是???才?!
    PHP:最好使用 4.xx.xx 版本以上的!
     
    事?上,要安?好上面三?套件?不容易,必?要有 RPM ? Tarball 的概念,尤其如果您需要的是手?的方式自己???三?套件的?,那就更麻?了!??如何,?考一下 VBird 之前?的 WWW 伺服器架? 是有?助的!
     
    ?然,除了 LAMP ( Linux + Apache + MySQL + PHP ) 之外,既然要安? phpBB ,?然就要有 phpBB 的主程式包?!?有,需要中文化套件?!所以,如果是完整安?的?,您至少需要三??案喔!?到 phpBB 官方?站下?:
     
    phpBB 下???:http://www.phpbb.com/downloads.php
    phpBB 主程式:http://cesnet.dl.sourceforge.net/sourceforge/phpbb/phpBB-2.0.5.tar.gz
    phpBB 中文化?言包:http://heanet.dl.sourceforge.net/sourceforge/phpbb/lang_chinese_traditional_taiwan.tar.gz
    phpBB 中文?示包:http://heanet.dl.sourceforge.net/sourceforge/phpbb/subSilver_chinese_traditional_taiwan.tar.gz
     
    如果上面的?站?有?法完成您的下?的?,也可到?哥的私房菜?下?喔!下??址?:
     
    http://linux.vbird.org/download/index.php#apache_phpBB-2.0.5
     
    再次?明,?共要三??案啊!

    --------------------------------------------------------------------------------
    安? ( 或升? ) phpBB 2.0.5:
    在??我假?您已?完成了 LAMP 的架?了,所以呢,直接就??行 phpBB 的安??升?吧!不?需要事先?明的是,由於?一版在『全新安?』方面非常的??,但是在『系?升?』???有?麻?,因此,在??操作前,?『千??得?份?料?』,否?一?不小心,呵呵,那就不要怪?哥?有提醒你?!另外,如果是升?安?的?候,?千?注意:『?原本的 phpBB 服?先?掉,例如??目?先移?到其他地方去,避免有其他人???料?』!好了,就?一?全新安??升?的流程吧!
     

    --------------------------------------------------------------------------------
    全新安? phpBB 架站?:
     
    全新安?其?很??的啦!一步一步?操作吧:
     
    建立?料?:
    由於我?要使用 MySQL 的?料?,所以,?然就需要取得?料?的使用?限啦!如果您不是在自己的 Linux 主?上面架? phpBB 的?,?向您的?路管理?申?一??料?的????料?的名?喔!如果您是 Linux 系?管理?,那就好?多了!假?我需要一???? phpbbuser 以及一??料?名?? phpbb2 的?,可以??做:
      # 1. 利用 MySQL 的 root 身份建立?料????:
    [root@test root]# mysql -u root -p
    Enter password: <==?入你的 MySQL 的 root 密?
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 3 to server version: 3.23.56
    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

    mysql> create database phpbb2; <==注意每?指令後面要加上 ;
    Query OK, 1 row affected (0.00 sec)

    mysql> grant all privileges on phpbb2.* to phpbbuser@localhost identified by 'your.password' ; <==???建立的 phpbb2 ?限? phpbbuser ????!
    Query OK, 0 rows affected (0.01 sec)

    mysql> exit
    Bye

    # 2. ????建立的?料????是否可以使用:
    [root@test root]# mysql -u phpbbuser -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 4 to server version: 3.23.56

    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

    mysql> connect phpbb2;
    Connection id: 5
    Current database: phpbb2

    mysql> exit
    Bye

     
    ??就完成?!很??吧!不?,要?得的是:
     
    你的 MySQL 主?名?? localhost ,??是 MySQL 的主?名?,不是 Linux 主?名?!通常 MySQL 的主?名?『一定』是 localhost 喔!
    你的 MySQL ?料?名?? phpbb2 喔!
    你的 MySQL ??? phpbbuser 且密?? your.password 喔!
     
    套件包解??:
    ??下?的三??案必?要好好的?行解??喔!解??的相?位置不能搞?!不然就?法?示完整的中文了!假?我是在 root 的家目?底下解??的,所以:(?:假?三??案都放置在 /root 底下)
      [root@test root]# tar -zxvf phpBB-2.0.5.tar.gz
    ?建立一?目?在 /root 底下,成? /root/phpBB2
    [root@test root]# cd phpBB2/language/
    [root@test language]# tar -zxvf /root/lang_chinese_traditional_taiwan.tar.gz
    ???作在於建立中文化?名在?言目?中!

    [root@test language]# cd /root/phpBB2/templates
    [root@test templates]# tar -zxvf /root/subSilver_chinese_traditional_taiwan.tar.gz

    [root@test templates]# cd /root/phpBB2
    [root@test phpBB2]# chmod 666 config.php

     
    好了!目前你的完整的 phpBB2 的套件就在 /root/phpBB2 ??目?底下?!
     
    ?站目?移?:
    在??你可以使用??主? (Virtual Host) 的功能??定您的 WWW 主?,不?,我??用比???的方式??行 phpBB 的架?!假?您的 phpBB ??要安?在 http://your.host.name/phpbb2 的?,而且,你的?站主?又在 /var/www/html 底下(?些都是??值喔!),那?你可以直接??做:
      [root@test phpBB2]# cd /root
    [root@test root]# mv phpBB2 /var/www/html/phpbb2
     
    好了!未?你只要?入 http://你的主?名?/phpbb2 就可以?入到 phpBB2 ??超?架站??!
     
    ?始?路安?:
    phpBB2 的安?真的是很??的啦!只要在你的??器上面?入你的 phpBB2 的主目?即可!??我?不是安?在 http://主?名?/phpbb2 ??!所以,?我在??器的?址列?入??咚咚?,他?出?如下?面:(?:如果出????,?到您的??器上面,?定好『??』成? big5 即可!)

    上?主要分??部份?填?,首先,主???部分,??考??我?所建立的 MySQL ?料?的??,就?他填??去吧!另外,由於 phpBB2 ?面需要一?系?管理?,所以,您必?要建立系?管理?的相??限喔!填?好了之後,就?他按下『?始安?吧!』(?:如果出?:『您主?上的 PHP 不支援您所??的?料?型?』,通常是忘?安? php-mysql ??套件了!拿出光碟?安?他即可?!)最?的?果?如下所示:

    按下『完成安?』之後,?出?如下?面:

     
    後?安全?定?目:
    因?害怕被入侵我?的 phpBB ,所以,目前 phpBB 要能?作的?,必?要移除一些安??程?使用到的?案,由於?些?案是不需要存在的(只有在安?的?候才?用到),所以,必?要移除之後,phpBB2 才能正常的??作喔!
      [root@test root]# cd /var/www/html/phpbb2
    [root@test phpbb2]# chmod 644 config.php
    [root@test phpbb2]# rm -rf install
    [root@test phpbb2]# rm -rf contrib
     
    完成?定:
    ??一?,??可以?入您的 phpBB ?!在出?的第一次 phpBB ?面中,?以系?管理?的身份登入:

    可以的?,?同?勾?『自?登入』,如此一?,每次您?入 phpBB ?,都?使用?一?身份?登入,?且,如果是以管理?的身份?登入的?,哈哈!最底部?出?一??藏的?目:

    ??就能??您?入 phpBB 系?去?行其他?外的?定?!更多更??的功能可以到竹?星球去??,也可以?一本 phpBB ??架??典??考喔!
     

    --------------------------------------------------------------------------------
    升?到 phpBB2.0.5 版本:
     
    如果原先就有 phpBB 的版本在您的系?上面的?,那?升?到 phpBB2.0.5 也是必?要的啦!因?最起?就比?安全啊!那?要如何升?呢?!事?上,升?是有一定的『危?性』,所以需要?行的?目?不少呢!一步一步?吧!
     
    升??程中,最重要的莫?於『?份』了!所以,??目前您的 phpBB 版本? MySQL ?料?做一??份才好喔!??例子??,如果您的 phpBB2 的程式原本放置在 /var/www/html/phpbb2 的?,那?就?他先移?到 /root 底下吧!然後如果您是以 RPM 安? MySQL 的?,一般??,?料??放置在 /var/lib/mysql 底下,所以,在?份的地方,您可以??做:
      [root@test root]# mv /var/www/html/phpbb2 /root
    [root@test root]# cd /var/lib
    [root@test lib]# tar -zcvf mysql.20030702.tar.gz mysql
     
    在??的情?下,您的 phpbb2 前一版的程式?不??掉,而且?料?也?利的?份了下?,未?如果在升?的?候出了?差?,?可以?原?的?料??原,且程式??是可以救回?的,安全多了呢!
     
    ?料??案取代?升?步?:
    在?份妥?之後,其他的升?步?相???很多!?考上面 完全安? 的步? 2 ?步? 3 的?明,先建立 phpbb2 ??目? ( /var/www/html/phpbb2 ) ,然後?原?的 config.php ?案覆?掉??目?底下的 config.php ,之後以??器??底下???案:
     
    http://你的主?名?/phpbb2/install/update_to_205.php
     
    就?得到底下的?面模?!
     

     
    後??理:
    後?的?理就一?啦!??的很:
      [root@test root]# cd /var/www/html/phpbb2
    [root@test phpbb2]# chmod 644 config.php
    [root@test phpbb2]# rm -rf install
    [root@test phpbb2]# rm -rf contrib
     
    然後就又可以使用你的 phpBB2 ?!升?真的是很??的啦! ^_^

    --------------------------------------------------------------------------------
    ?於模?:
    事?上, phpBB2 最吸引人的地方,在於他可以自行??新的模???行外?,?使得每?人的 phpBB2 的?格都不相同!?且您可以?自己的喜好??定您自己的外?模?!相?的棒喔!如果想?模?有?一步的??,建?您可以到竹?星球去瞧一瞧,就?解什?是 phpBB2 的模?外??!
     
    不?,每次升?之後,?些外?的模?都得要再重新的??一次,真的是很麻?~好在?一次?? 2.0.5 ??是最?版本了!所以不?再?行?外的升??!所以,???底大?修,?人?得?也是不?的啦! ^_^

    --------------------------------------------------------------------------------
    其他安全的注意事?(很重要!不要忽略):
    竹?星球的?式宣告:
    由於改版的?程中出了?小差?,所以竹?星球的?式宣告竟然就此不?去!真是~??我??他改回?吧! ^_^!
      [root@test root]# cd /var/www/html/phpbb2
    [root@test root]# vi language/lang_chinese_traditional_taiwan/lang_main.php
    找到底下?一行:
    $lang['TRANSLATION'] = '繁?中文?化版由 竹?星球PBB2中文?化??小? ?作';
    ?他改成:
    $lang['TRANSLATION_INFO'] = '繁?中文?化版由 竹?星球PBB2中文?化??小? ?作';
     
    ??就 OK 了!
     
    ?早版本升?的???果:
    ?????存在於?早之前的版本,也就是以 phpBB 1.4.4 升?到 phpBB 2.0.0 的?候,由於一些小??,所以升?完?後竟然???『使用者?法??,?且?的使用者也?有?法更新自己的?定』在 phpBB 的官方?站上?表了?明,??是因?一些?位?生??所致!要如何是好?使用 mysql ?增加?位吧!
      [root @test /root]# mysql -u phpbbuser -p
    Enter password: <==????入你的 MySQL 密?!
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 11 to server version: 3.23.41
    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

    mysql> connect phpbb2 ;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

    Connection id: 26899
    Current database: phpbb2

    mysql> ALTER TABLE phpbb_users ADD COLUMN user_timezone float DEFAULT '0' NOT NULL ;
    Query OK, 1 row affected (0.04 sec)

    mysql> exit

     
    在上面中,注意一下特殊的字?,那? phpbb2 指的是你安? phpBB 2.0 的?料?名?;而 phpbb_users 那? phpbb_ ?是??使用??器安?的?候,那?表格字首的?目!!假如你是使用 phpBB 作?你的表格字首,那???就要改成 phpBBusers ?!??改完你的使用者 profile ? ??功能 就恢?正常啦!
     
    建?的升?版本??:
    由台??路危??理中心公?的?息中, PHP ???路?言程式有些漏洞,而?些?法上的漏洞?造成主?被 Cracker 利用 DoS 的方式?攻?,?可能造成主?的?源?力化而??~~?友 Chad 也寄一份?料?我看?,?明 phpBB 1.4.xx 所有的版本由於都使用到此一?法,所以都有可能?造成主?的困?!!?然 phpBB 2.0 ??有??危?小?的??,不??竟?稍微安全一些些吧!由於???的??,所以才?建?您可能的?,?是升?到比?高的版本吧!就是?? 2.0.5 ?!
     
    ?於系?管理?的身份??:(重要)
    ?是?自於竹?星球的大??小竹子?南?博士的建?!phpBB2 的系?管理?具有最大的?限,而??限似乎可能??其他的板主?限相?突而造成不可?期的??!所以最好不要?系?管理??板主呦!重要重要!
     
    ?限的??:
    ? config.php ?限改回?!就是以 chmod 644 config.php ??指令? config.php 的?限改回?吧!
     
    phpBB 官方?站的安全性公告:
    由於 phpBB 使用到 Linux 主?上面的??很多,所以,您必?要?解到??程式??有可能??生一些安全上的漏洞的!建?您??注意 phpBB 的公告?站:http://www.phpbb.com/phpBB/,?面不定期?有很多的技?公告,可以?防您的 phpBB 被破?喔!底下就列出??近期?生的??克服吧!

    --------------------------------------------------------------------------------
    漏洞修?:
    ?是在 2003/06/25 公?的一?漏洞,?然不?直接?您的 phpBB2 造成危害,但是?可以?其他有心人士使用你的系?上面的其他?案!公?在:http://www.phpbb.com/phpBB/viewtopic.php?t=113826,??行修改吧!
      ?? admin/admin_styles.php ???案,?找底下?段文字:
    //
    // Load default header
    //
    //
    // Check if the user has cancled a confirmation message.
    //
    $phpbb_root_path = "./../";
    $confirm = ( isset($HTTP_POST_VARS['confirm']) ) ? TRUE : FALSE;
    $cancel = ( isset($HTTP_POST_VARS['cancel']) ) ? TRUE : FALSE;

    if (empty($HTTP_POST_VARS['send_file']))
    {
    $no_page_header = ( $cancel ) ? TRUE : FALSE;
    require($phpbb_root_path . 'extension.inc');
    require('./pagestart.' . $phpEx);
    }

    if ($cancel)
    {
    redirect('admin/' . append_sid("admin_styles.$phpEx", true));
    }

    ?上面?段文字完整的修改成?底下的模?:
    //
    // Load default header
    //
    //
    // Check if the user has cancled a confirmation message.
    //
    $phpbb_root_path = "./../";
    require($phpbb_root_path . 'extension.inc');
    $confirm = ( isset($HTTP_POST_VARS['confirm']) ) ? TRUE : FALSE;
    $cancel = ( isset($HTTP_POST_VARS['cancel']) ) ? TRUE : FALSE;

    $no_page_header = (!empty($HTTP_POST_VARS['send_file']) || $cancel) ? TRUE : FALSE;

    require('./pagestart.' . $phpEx);

    if ($cancel)
    {
    redirect('admin/' . append_sid("admin_styles.$phpEx", true));
    }

     
    ?是在 2003/06/20 公?的一?漏洞,公?在:http://www.phpbb.com/phpBB/viewtopic.php?t=112052,可能??您的系?造成一些???息!??行修?:
      找出您的 viewtopic.php ,?找到底下的字眼:
    if ( isset($HTTP_GET_VARS[POST_TOPIC_URL]) )
    {
    $topic_id = intval($HTTP_GET_VARS[POST_TOPIC_URL]);
    }
    else if ( isset($HTTP_GET_VARS['topic']) )
    {
    $topic_id = intval($HTTP_GET_VARS['topic']);
    }
    在上面?一段文字之前,新增:
    $topic_id = $post_id = false;
    在同????案,往下找到如下的字眼:
    $join_sql_table = ( !isset($post_id) ) ? '' : ", " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2 ";
    $join_sql = ( !isset($post_id) ) ? "t.topic_id = $topic_id" : "p.post_id = $post_id AND t.topic_id = p.topic_id AND p2.topic_id = p.topic_id AND p2.post_id <= $post_id";
    $count_sql = ( !isset($post_id) ) ? '' : ", COUNT(p2.post_id) AS prev_posts";
    $order_sql = ( !isset($post_id) ) ? '' : "GROUP BY p.post_id, t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, t.topic_type, t.topic_vote, t.topic_last_post_id, f.forum_name, f.forum_status, f.forum_id, f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate, f.auth_vote, f.auth_attachments ORDER BY p.post_id ASC";

    ?他修改?如下模?:
    $join_sql_table = ( empty($post_id) ) ? '' : ", " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2 ";
    $join_sql = ( empty($post_id) ) ? "t.topic_id = $topic_id" : "p.post_id = $post_id AND t.topic_id = p.topic_id AND p2.topic_id = p.topic_id AND p2.post_id <= $post_id";
    $count_sql = ( empty($post_id) ) ? '' : ", COUNT(p2.post_id) AS prev_posts";
    $order_sql = ( empty($post_id) ) ? '' : "GROUP BY p.post_id, t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, t.topic_type, t.topic_vote, t.topic_last_post_id, f.forum_name, f.forum_status, f.forum_id, f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate, f.auth_vote, f.auth_attachments ORDER BY p.post_id ASC";



    --------------------------------------------------------------------------------
    重?回?
    phpBB 是一?架站??,他是跨平台的??,使用 PHP ?路程式?言,在 Linux 作?系?上面,通常 phpBB 是建置在 LAMP ( Linux + Apache + MySQL + PHP ) 系?上。
    phpBB 架?前,必?先??您的 Apache, PHP, MySQL 以及 PHP 相? MySQL 的套件都已?安?妥?,否? phpBB ??法正常的安?在您的系?上面!
    phpBB 最大的??是可以?行外?模?的??,以建立?人的???格!
    phpBB 由於使用 Linux 作?系?的相??源,所以仍然有可能造成安全漏洞,因此,需要???心?路安全通?,您可以在 phpBB 官方?站的公告版面取得最新公告:http://www.phpbb.com/phpBB/viewforum.php?f=14&sid=1f1a2e2db367884c4e7549f0cb90a377

    --------------------------------------------------------------------------------
    ?考?源
    phpBB 官方?站:http://www.phpbb.com
    竹?星球官方?站:http://phpbb-tw.net/phpbb/
    架站? phpBB 2.0.xx 安??使用

  15. baizx 于 2009-08-10 10:56:19发表:

    利用 Xen ?????器

    前言

    ??章?主要是在介? Xen ?????器,那,什?是???器?他有什?用途? 目前有哪些常?的???器?? (Virtual Machine) ?底下我?先??一?。


    --------------------------------------------------------------------------------
    什?是???器

    ???器 (Virtual Machine) ? Apache 的??主? (Virtual host) (?1) 不一?, ???器的目的是希望能?在一部??主?上面『同??作多?作?系?』的一?功能。 ?什?我?需要在一部主?上面同??作多?作?系?呢?可能原因有??:


    ?一部?效型主???多????:
    由於??工?技?的??,近年?的?人??不但越?越便宜,而且功能?越?越?大! 就在前???拜 (2007/09/xx) ,?哥也才收到?部『四核心的、配? 2GB 主???』的?人??! ?在台?政府的中信?案?面也已?有提供了,可??人???在是便宜又好用。

    那?好用的一部??如果拿???路伺服器,???得很浪?!怎??呢? 以?哥的?站 (http://linux.vbird.org/) ??,一部 AMD AthlonXP 2000+ (1.6GHz 的 CPU 速度) 就跑得非常的??, ?作至今??也?有?生突?性大流量?致服?中?的情?,?察?部主?的平均?作情?, 使用 sar ??指令?察看一下,唔!每日平均 CPU ??都在 10% 以下而已。 所以?,?部四核心的??拿???站的主?,根本就是浪?了他的才能。

    如果能??多?服?集中在?部主?上面?跑,?不甚好!才不好哩! 如果?看?基?篇 (?2) ?伺服器篇 (?3) 的介?後, 肯定???主?的服?越??越好,??在服???除?以及主??境的??化上面比?好。 所以?,一部好的主?如果?用於一?特定的用途,?在很浪?。但如果每?服?都需要一部主?, 又?得很??,因?包括主?的硬???、??、??安?、?路?定等等,都很麻?,尤其又?!

    因?上述的??,所以目前有很多?案都在??『在一部??主?上面模?出另一部?器』的功能, 也就是?:『我?希望能?在一部主?上面 "同?" 跑多?作?系?』的意思。如果能?到??的功能,??的硬?可以省略掉很多??, 同?又可以充分的?用??主?的?源,?在很不?啊!


    同?豁弄多?不同的作?系?:
    ??拉回到四、五年前,??的主?能力?是?可以,?不算很?力,而且?格不斐。 但是??多?作?系?都很吸引人,包括 Windows/Linux/Mac/DOS... ,大家都希望能???一下?些作?系?, 然而又不想花?去??一部新的主??玩,???候多重?? (?4) 就成了很重要的一?, 因?他可以?我?在??的?程?中??所想要?行的作?系??操作?。

    不?多重??有???的缺?,那就是『我每次??只能??玩一?作?系?』, 所以如果?想要在多?作?系?之?切??,光是?、??就???火?大起?。 ???候就有些公司?始??能?在一?作?系?上面『模?出另外一?可?行的作?系?』?境, 所以此?就能?在同??操作??作?系?了。??最流行的是 VMWare ?一套??啦!


    ?然早期就已?有?????器的??可以玩,不????竟是使用???模?的, 硬??不直接支援?????器的?境,所以效能上面非常的糟糕!不?拜 Intel/AMD 大力???效型 CPU 之功, 目前的主?硬?大部分都有支援???器的能力,如此一?我?就能?使用快速的???器的?境?!



    --------------------------------------------------------------------------------
    有哪些常?的???器??

    那?目前有哪些常?的???器??呢?他?又各有何特色?底下就??一?:


    老牌子的 VMWare (http://www.vmware.com/)
    早期的玩家大概都有玩??一套???器的??,?套??早期?在 Windows 上面?行, 最大的??就是可以?使用者在 Windows ?境下同?模?出一套 Linux 的?境,同??行??作?系?。 ?哥之前使用?套??的目的是用?捉 Linux 的安??面!在??功能上面 VMWare ?在很不?。

    不?早期的 VMWare 效能不太好,加上??的主?效能也不佳,而且 VMWare 模?的硬?不??原本的主?相同, 因此?哥很不建?大家使用 VMWare ??? Linux 。然而?著?代的?步,目前 VMWare 已??展的相?不?, 同?也提供 Open source 的版本? Unix-Like 平台的 OS 使用,算是很不?的。他也是目前???器市?的??老大!


    已??成熟的 Xen (http://www.xensource.com/)
    Xen 是以 GNU 的 GPL 授???的自由??,目的在於提供效能佳、可支援不同作?系?的同??作、 且?同??作的作?系?彼此互相?立的系??境。Xen 是基於 X86 硬?所??出?的???器?督器 (Virtual Machine Hypervisor) ,?哥?得他最大的??就是效能佳!?哥曾在一部 Celoron 366 MHz, ??? 192MB 的??型??上面模?出一? Xen ?器?上?的同??豁弄,同??? 50 ?同?到?部模?的 Xen ?器上?不??得有延?的??,效能真的是很不?。我?在下一????的介? Xen ??好?西。


    後起之秀 KVM (Kernel based Virtual Machine, http://kvm.qumranet.com/kvmwiki)
    ? Linux ?明者 Linus Torvarlds 喜好?且?之加入核心功能的???器就是?? KVM 的技?! KVM 已?於 Linux 2.6.20 版的核心中加入此?功能,KVM 不但提供完整的 Intel/AMD CPU 的??技?支援, 而且提供完整的???境。?然目前??技??不算很成熟,不?未???也可以?展的很不?呢! 因? Linux 核心本身就有支援啊! ^_^!更多的 KVM 可以?考: http://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine


    酷!炫!有?的 VirtualBox (http://www.virtualbox.org/)
    ?有一套自由??的???器可以用,那就是同?架?在 x86 上面的 VirtualBox ?套??啦! ?套??提供完整的???境,且可支援目前市面上的主流作?系?。 ?哥曾?看??中人前?在他的??型??上面玩??套?西,非常的炫?,而且提供?形化介面, 效能方面看起?也相?的?秀。不?,好像整合度方面的??,偶而模?的作??境??掉, 但是不?影?到原作?系?就是了。想要在 Linux 桌上型??上玩玩???境的朋友,?哥?得?套?西最?合您!


    其?每套???器的??都有其存在的?值,因?他?的功能?目的都不一?。?例??,?哥?? VirtualBox 很?合於想在 Linux 桌上型??上面玩 Windows 的朋友,?然他不??定。至於 Xen ?很?合在一部高效能主?上面同??作多?同版本的 Linux 系?,因??定度相?高,且性能?秀, 可?使用者??的在一部?器上面?作多??立的作?系??分??理不同的?路服?呢!


    Tips:
    ?一章底下的?料?涉到很多硬?的?念以及 Linux 作?系?最底?核心的架??明, 如果您不想要?解?些基?概念,可以直接看 CentOS 5.x 的?例?明即可。


    --------------------------------------------------------------------------------
    初探 Xen

    Xen 的效能?什?能???好? Xen 在使用上面有什??的限制?我的一部主?最多可以支援?? Xen 的模??境? Xen 的模??境有???型? ?些疑?我?都得要先知道一下才好! ?然,最好能?有???的小例子??理 Xen 的模??境?。


    --------------------------------------------------------------------------------
    Xen 的???型?特色

    Xen ?套自由??在???器的模??型方面主要分?半??化 (Para-virtualization) 及全??化 (Full virtualization) ??,其中半??化主要是透?修改 Linux 核心??成的??技?。 半??化技?所?生的???器需要?原本的作?系?相同?佳。使用半??化的?境所具?的特色有: (?5)

    ???器的?作效率????器的效能相?;
    最多可支援到具有 32 ?以上 CPU 的主??境;
    支援 x86/32, x86/32 含 PAE 技?, 及 x86/64 的硬?平台?境;
    良好的硬???程式支援,?乎支援所有的 Linux ?置之??程式;
    Xen 的半??化技?主要是用在相同版本的 Linux 上面,也就是?,如果?想要使用半??化的方式??多????器, 那?那些???器全部都必?是相同的作?系?,甚至要求相同版本?相同核心的 Linux distribution 喔。

    如果?想要安?不同版本的 Linux 或者是其他的 OS (例如 Windows XP) ?,就得要使用全??化技?了。 但是全??化技?是有其限制的,?你的硬??足下列需求?,全??化技?才能??作:

    你的硬?支援 Intel 的 VT 技? (Virtualization Technology, Intel-VT);
    你的硬?支援 AMD 的 SVM 技? (Secure Virtual Machine, AMD-SVM or, AMD-V)。
    此外,上面提到的 PAE 指的是 Intel 的??位址延伸技? (Physical Addressing Extensions, PAE), ??技?可?原本?支援到 4GB ?????的 32 位元硬?平台,可支援到最大 64GB 的???喔! 而且, Xen ?乎可以在所有的 P-II 以上等?的硬?平台上面跑半??化任?,如果不跑全??化的?,其?效能??是 OK 的啦!

    近?由於???器??的流行,加上 x86 ??效能? CPU ?算核心?元的增加,?大 x86 CPU ?造商 Intel/AMD 都?表了新的整合到 CPU 的??技?,分?是 Intel 的 Vanderpool ??技?以及 AMD 的 Pacifica 技?。 ?些技?有的也支援 Xen ,?? Xen 的效能增?不少呢! ^_^



    --------------------------------------------------------------------------------
    Xen 的?作?境解?

    在基???篇?面我?曾???硬?、核心??用程式的??, 所有的?用程式都是在核心?之上?完成的 (?6)。 然後透?核心功能去呼叫?使用硬?元件的命令。好了, ?在?仔?想一想,既然我有多????器,每????器的?境各?有自己的作?系?核心, 也就是有多?作?系?同?存在。如果所有的作?系?都能?完整的控制硬?的?, 那?硬?到底?接受?的指令??作?那?系?的指令?先被?行??是很重要的??, 因?如果??搞不定,那??的硬?系?就只有??一途。

    ?了解?????,Xen 也分成多??? (layer) ??行。他? Linux 的核心修改?後, 再使用??修改?後的核心??,而??後先?入 Xen 的?督器 (Hypervisor) , ?且??第一?在上?的作?系?,我??他? domain-0。 (在 Xen 上面所?的一? domain 就是一????器?!)

    Domain-0 之所以要先被?入是因? Domain-0 含有其他???器??所必?的控制指令, ?且 domain-0 也是控制???置的重要主控系?。 在 domain-0 上?最重要的就是一? xend 的常?程式,其他的 domain 都是由?? xend ?管理的。 至於命名方面,除了 domain-0 之外的其他???器就依序被?? domain-1, domain-2 等等, 我?通?? domain-U ?。?些咚咚的相?性有?像??:



    ? 2-1、Xen Hypersvisor 的功能示意?(?7)


    由上?我?知道 domain-0 真的是很重要的,因?他直接控制 Xen 的?督器 (Hypervisor),而且掌握了??的 Linux ??程式 (drivers)。而其他的???器 (domain-U) ?是透? Xen ?督器????的硬?以及 domain-0 ?成?通。而?了? domain-0 能?? Xen ?合,我?必?要修改 domain-0 的核心才能??利?作。?且需要使用 domain-0 的核心???才可以。 domain-0 是所有???器的?源,所以他可以?量??一?,其他的??服??可以放置到不同的 domain ?中了。

    那? xend 也是很重要的咚咚,他可以管理 domain-0 ?其他 domain 之?的????通, 可以提供一??端? (console) 介面?? domain-0 登入其他的 domain ,所以我?也必?要???玩意?才行。

    早期 Xen 尚未被各 distribution 整合到各自的版本中?,使用者必?要由 Xen 的官方?站下?原始?, 然後自行重新??核心以及?? Xen ??才行。??在的,玩? Xen ??麻?,倒不如不要玩!^_^。 然而在 RHEL 5 (CentOS 5) 以後, Xen 已?包含在原始?出的套件中了,所以我?直接用 yum 就能?安?妥?! 所以要搞定一部 Xen 的 domain-0 已?不再是不可能的任??!^_^

    ?於 Xen 的基本原理有一些??之後,接下?就?我??始在 CentOS 5 上面?行一?小小的??吧!



    --------------------------------------------------------------------------------
    ?定你的硬?是否支援 Xen 的?作\r

    ?然?目前的硬?都很新了,不?有的朋友使用的是?的主??安? Linux ,所以我?必?要留意你的硬?是否支援 xen 的?作。而我?知道 Xen 支援半??化?全??化??模式,??模式的需求?:


    半??化 (Para-virtualization) 硬?需求:
    只要是 64 位元的 x86 主? (x86_64) 都能?支援半??化的?境。如果是 32 位元的主? (x86) ?, ?主?必?要支援的??位址延伸技? (PAE) 才能?使用 xen 喔!那如何??呢?很??,?查 CPU 的??即可:
    [root@linux ~]# cat /proc/cpuinfo | grep flags
    flags : fpu tsc msr pae mce cx8 mtrr mca cmov pat pse36 mmx fxsr sse up


    嘿嘿!?一部主?是?哥的 P-III 800 主?,看吧!??有支援 PAE 喔!所以?然可以玩 Xen ?。


    全??化 (Fully-virtualization) 硬?需求:
    如果?需要全??化的技?支援?,此?需要硬?有支援??化技?才行。 目前在 x86 的主??中, Intel 提供 VT 技?, AMD ?提供 SVM 技?。 ???技?在 CPU 的旗?分?是: Intel (vmx) ? AMD (svm) 。 ?哥在 Core Duo 主?上面的??可以??:
    在 Intel Core 2 Duo 的 CPU 主?上面?? CPU 旗?:
    [root@linux ~]# cat /proc/cpuinfo | grep flags
    flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts
    acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc up pni
    monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
    # 瞧!是有那? vmx 的支援啦!


    至於 AMD 的主?旗??是:(下表感?donyingle兄的提供!)
    在 AMD Athlon(tm) 64 X2 的 CPU 主?上面?? CPU 旗?:
    [root@linux ~]# cat /proc/cpuinfo | grep flags
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
    pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt
    rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic
    cr8legacy 3dnowprefetch ts fid vid ttp tm stc 100mhzsteps
    # 瞧!是有那? svm 的支援啦!



    如果?定你的 CPU 有支援上述的?件後,嘿嘿!那我?就可以?始底下的??啦!如果?有支援呢? 那很抱歉,底下的?料看看就好!



    --------------------------------------------------------------------------------
    所需要的 Xen 套件?核心

    注意: 在?始安?之前,?先?考前一小?以?定你的硬?已?支援 Xen 的半??化功能了!

    ?略?了一下 Xen 的原理、特色之後,在?始玩弄 Xen 之前,我?得?解?作 Xen 所需要的各?套件,?且?利安?後,才能?使用的啊! ^_^。如同前一小?提到的, 要使用 Xen 半??化 (Para-virtualization) 必?要修改核心才能??利的?作。 在以前的版本?需要重新??核心,不?,在新的版本,例如 CentOS 5.x 底下,就已?? Xen 的核心????好了!?可以直接安?即可。所以,?需要安?的套件主要有:

    kernel-xen:修改的 Linux 核心,使可以跑 Xen 的?境;
    xen:主要的 xen 套件,包括?定?、???本、所需的基本函式?等;
    xen-libs:Xen 所需要的函式?等;
    python-virtinst:提供?端?安?的??;
    virt-manager:?一??形使用者介面??,可在?形介面管理 xen 喔!
    在 CentOS 5.x 的?境下,?可以使用 yum 直接?安????套件。安?完?後??必使用新的核心??! 以?哥的例子??,我安?了??核心,包括 kernel-2.6.18-8.1.14.el5 及 kernel-xen-2.6.18-8.14.el5 , 所以在 grub 的?定??中?像??:
    [root@linux ~]# vi /boot/grub/menu.lst
    default=0
    timeout=5
    splashimage=(hd0,0)/boot/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.18-8.1.14.el5xen)
    root (hd0,0)
    kernel /boot/xen.gz-2.6.18-8.1.14.el5
    module /boot/vmlinuz-2.6.18-8.1.14.el5xen ro root=/dev/hda1 rhgb quiet
    module /boot/initrd-2.6.18-8.1.14.el5xen.img
    title CentOS (2.6.18-8.1.14.el5)
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.18-8.1.14.el5 ro root=/dev/hda1 rhgb quiet
    initrd /boot/initrd-2.6.18-8.1.14.el5.img


    ?必?要注意到,?哥使用的?????第0?,亦即是 2.6.18-8.1.14.el5xen 那一?! 然後重新???部 Linux 主?喔!??完成後,??再次的??一下是否? xen 的核心才行!
    [root@linux ~]# uname -r
    2.6.18-8.1.14.el5xen
    # 仔?看,?哥的核心?新的 xen 的核心喔!

    [root@linux ~]# chkconfig --list | grep xen
    xend 0:off 1:off 2:on 3:on 4:on 5:on 6:off
    xendomains 0:off 1:off 2:off 3:on 4:on 5:on 6:off
    # Runlevel 3/5 的 xen 相?服?是有??的才行!

    [root@linux ~]# pstree -p | grep xen
    | |-xenbus(10)
    | `-xenwatch(9)
    |-xenconsoled(2348)---{xenconsoled}(2349)
    |-xenstored(2340)
    # ??看?,????是有??的?子喔!??最後一???!

    [root@linux ~]# xm list
    Name ID Mem(MiB) VCPUs State Time(s)
    Domain-0 0 462 1 r----- 49.2
    # xm ? Xen 的重要指令,list ?列出已?在跑的 xen 系?,??有 domain-0 存在!


    透?上面的??,我??知道 xen ??已??利的??,而且也??前面?到的那?重要的 domain-0 ?! 接下?我?再?聊一聊那 xen 的?定?在哪??


    --------------------------------------------------------------------------------

    xen 的套件??
    我?前面?到?, Xen 在 domain-0 是由一? xend 的服?所管理的,他可以用???、?????到其他的 domain-U ?中。此外, Xen 亦提供?多的指令??系?管理?管理他?的 domain-U 啊!?些重要的???行??:

    /usr/sbin/xend:就是 xend 的???本,使用 python 程式?言?成的;
    /usr/sbin/xm:重要的管理 xen 的指令,可?入 xm help 查?用法。
    至於? xen 有?的?定?,包括一些模?元件的???本都在 /etc/xen 底下,在??目?下的?多?料?:

    /etc/xen/xend-config.sxp:??重要!是 xend 的?定?!?容包括 domain-0 的?型、?路的??方式、 domain-0 的????CPU等?源配置、是否使用 vnc 作? domain-U 的??方式等等。 不?,?哥?得,???案不太需要更?,使用??值就很?用了。


    /etc/xen/:?面含有?? domain-U 的?定??本,包括:xmexample1, xmexample.hvm。 其中,那? xmexample.hvm 可作?完整模?的?考?本喔!


    /etc/xen/auto:如果?想要在系????就自???某? domain-U 的?,可以???定?指定??到??目?中。 ?例??,如果?要在??後立即使用 /etc/xen/xmexample.hvm ?定????某? domain-U , 那可以??做:
    [root@linux ~]# cd /etc/xen/auto
    [root@linux auto]# ln -s ../xmexample.hvm .
    # ?只是??例,?可不要跟著做!因? xmexample.hvm ?需要修改才能?作!\r



    /etc/xen/scripts:?目?有趣了!包括????的??、???路的??、 ???接器的??等等,都是透??目?底下的所有?案??成的!
    在?安?完?,?且使用新核心??後,接下??我??始??理一?小案例吧!



    --------------------------------------------------------------------------------
    第一?泛用?例

    就如同? 2-1 的?子,在主?上的所有 Linux OS 都需要自己能???, 而??流程通常是??的:(?8)

    step 1: 按下?源,主??始?取 BIOS ?料;
    step 2: 取得??的?置?序,?由 MBR 取得???????管理程式;
    step 3: 由??管理程式?入 Linux kernel 及??磁碟 (initrd);
    step 4: Kernel ??硬??入??的??程式,???根目?以?取核心模?;
    step 5: ?始由 /sbin/init 程式?定主?的?境。
    由上述的?作,我?可以知道 Linux ??的重?在於 1. 核心 2. ??磁碟 (initrd) 及 3. 根目? (/) 了。 ?然核心???磁碟我?的 CentOS 5 已?提供了,但是??的??磁碟好像?未主?的加入 Xen 的某些??程式, 因此我?得需要????磁碟?行?定才好。此外,每? Xen domain 的根目?也很??筋的!因?根目?需要很多?料,而且?需要???似 /sys, /proc, /dev, /selinux 等特殊的?案系?哩! 那?如何?理根目?呢?底下就?我???理?理:


    --------------------------------------------------------------------------------

    硬?支援性
    就如同前面??小??到的,如果我?的硬??不支援 xen 所必?要的功能,那??是?法建立好你的 domain-U 的! 在??泛用案例?中我?的重?是??半??化,因此?只要具有 PAE 的支援即可。 ?哥以?低?的 P-III 800 ??行??,硬??查的?果是??的:
    [root@linux ~]# cat /proc/cpuinfo | grep flags
    flags : fpu tsc msr pae mce cx8 mtrr mca cmov pat pse36 mmx fxsr sse up


    ?可以????存在那? pae 的??字,因此我???系?是可以玩 Xen 的半??化技?的! 所以?我????行工作吧!



    --------------------------------------------------------------------------------

    根目?所需磁碟槽
    根目?所需磁碟槽的?源可以有??,一?是??硬碟,一?是利用 dd 建立一?大?案?使用。 ?哥比??向利用 dd ??理你的根目?喔!?可以??做:
    ?例:建立一? 5GB 的大?案
    [root@linux ~]# mkdir -p /disk2/xen
    # 因??哥的 /disk2 ?一??外的硬碟,所以容量比?大啦!

    [root@linux ~]# cd /disk2/xen
    [root@linux xen]# dd if=/dev/zero of=xen.img bs=1M count=5000
    5000+0 records in
    5000+0 records out
    5242880000 bytes (5.2 GB) copied,178.482 秒,29.4 MB/s
    # ???候??始?造一? 5GB 左右的?案,由於硬碟速度快慢的??,
    # ???作可能?消耗?分?到?十分?不等。

    [root@linux xen]# ll /disk2/xen
    -rw-r--r-- 1 root root 5242880000 Oct 10 00:30 xen.img


    ?案是建立起?了,不?如果你的 Linux 有?? SELinux 的?,?需要一些?型的改?才可以! 其??作也不?,??做就?了!
    [root@linux xen]# chcon -t xen_image_t -R /disk2/xen
    [root@linux xen]# ll -aZ /disk2
    drwxr-xr-x root root user_u:object_r:xen_image_t .
    drwxr-xr-x root root system_u:object_r:file_t ..
    -rw-r--r-- root root user_u:object_r:xen_image_t xen.img
    # 如果?有?? SELinux 才需要??做,否?就略?。
    # 反正你要?得 Xen 的?案必?要是 xen_image_t 的安全?容?型。


    ?案建立起?後,就需要?行格式化?~格式化的方法?:
    ?例:???建立的大?案格式化? ext3 的?案格式
    [root@linux xen]# mke2fs -j /disk2/xen/xen.img
    mke2fs 1.39 (29-May-2006)
    /disk2/xen/xen.img is not a block special device.
    Proceed anyway? (y,n) y
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    ....底下省略....


    由於?是?案不是磁碟分割槽,所以?有上述的警告?息,?按下『y』就?啦!



    --------------------------------------------------------------------------------

    ??或安?根目?
    由於 domain-U ? domain-0 其?是一?的系?,因?是半??化嘛!所以,最??的根目??作方法, 就是?原本的 domain-0 的根目???到新的分割槽?就?了! 以?哥的例子??,?可以??的??做:
    [root@linux ~]# mount -o loop /disk2/xen/xen.img /mnt
    # 先????作出?的?料?他??起?,?是特殊??法喔!

    [root@linux ~]# cp -ax /{root,dev,var,etc,usr,bin,sbin,lib} /mnt
    # ???目?的?料是一定需要??的!粉重要!。

    [root@linux ~]# mkdir /mnt/{proc,sys,home,tmp,selinux}
    # ???目?????案系?有?,包括程序、核心?料等目?,所以要先建立

    [root@linux ~]# vi /mnt/etc/fstab
    /dev/sda1 / ext3 defaults 1 1
    devpts /dev/pts devpts gid=5,mode=620 0 0
    tmpfs /dev/shm tmpfs defaults 0 0
    proc /proc proc defaults 0 0
    sysfs /sys sysfs defaults 0 0
    # 我??假?我的根目?所在磁碟槽? SATA 硬碟的第一?分割槽,
    # 所以是 /dev/sda1 。此外,其他的?案系?如 proc, sysfs 都必?要?入!
    # 至於原本在 domain-0 的其他?置,就?他拿掉吧!

    [root@linux ~]# vi /mnt/etc/sysconfig/network
    NETWORKING=yes
    NETWORKING_IPV6=no
    HOSTNAME=xen.test.hostname
    # ???定一下?的主?名?啦!

    [root@linux ~]# vi /mnt/etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    BOOTPROTO=none
    IPADDR=192.168.0.123
    NETMASK=255.255.255.0
    ONBOOT=yes
    # 建?? IP 也?好。但是要注意那? HWADDR 最好能?拿掉不?定!

    [root@linux ~]# umount /mnt
    # ?得???的?料?他卸?掉


    基本上,根目?的?定到??就算?束了!不?,????由於 domain-U 的?料都是由 domain-0 ?的, 而不同的主?其??定不?相同,所以使用上述的作法????有??小??:

    ?必?要手??理一些小?定,包括主?名?, /etc/fstab, IP ??等等;
    即使手??理?上述的?料,?是很可能??法成功的?? domain-U ;
    由於 domain-0 可能?安?比?多的套件,?些?料又在 domain-U ?中用不著,徒然造成硬碟容量的浪?。
    所以,?然??方法最??,不?通常?哥不是很建?您使用啦! ^_^



    --------------------------------------------------------------------------------

    ?定??磁碟映象?以及?端?介面
    由於??的 CentOS ??磁碟 (Initial Ram Disk) ?不包含一些 Xen 的相???程式, 因此搞了老半天也是?法?? Xen 的 domain-U ,?他?死! 所以,我?得先就 initrd ??行一些?外的?定才行。 ??地方非常的重要!因??哥卡在??好?天~最後才??原?是 initrd 的??啊~
    [root@linux ~]# mount -o loop /disk2/xen/xen.img /mnt
    [root@linux ~]# cd /boot
    [root@linux boot]# mkinitrd -v -f --fstab /mnt/etc/fstab --with xenblk \
    > --with xennet --preload xenblk --preload xennet \
    > initrd-2.6.18-8.1.14.el5xen.vbird.img `uname -r`
    [root@linux boot]# umount /mnt
    # ??的各???? man mkinitrd ,上述的?例?是利用 /etc/fstab 的?置??定,
    # ?且加上一些 xen 相?的??程式而已。???程非常的重要!
    # 最???作出一? initrd-2.6.18-8.1.14.el5xen.vbird.img ?案


    除了????磁碟之外,?了要方便我?登入 domain-U 的?境,我?需要?生一??端?介面才行。 因?每? domain-U ?使用到?端介面,然而我?知道 tty1 ~ tty7 ??? domain-0 使用掉了。 ?此,我?必?得要?作出一???的?端介面,那就是 xvc0 ???端介面?。如何?生呢? ??的流程是??:
    [root@linux ~]# vi /etc/inittab
    # 大?在第 51 行的地方加入底下特殊字?的部分:
    5:2345:respawn:/sbin/mingetty tty5
    6:2345:respawn:/sbin/mingetty tty6
    co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav
    # 意思是使用 agetty 建立 xvc0

    [root@linux ~]# init q
    # init q ??指令可以? /etc/inittab 的?定立刻生效而不需要重新??!

    [root@linux ~]# ln -s /dev/console /dev/xvc0
    # 如果 xvc0 ?有主?建立的?,我?需要手??建立??才可以喔!


    做完?一步之後,接下?就是可怕的?定??~



    --------------------------------------------------------------------------------

    ?? xen ???料的?定?
    接下?就是重??啦!因?我?必?要指定 domain-U 的相????定值,包括使用?? CPU 、使用多少???容量, 以及所使用的核心?根目?的所在等等。如前所述,?些?定?主要都在 /etc/xen 底下, 尤其?面的 xmexample1, xmexample2 等?案就是很好的?明文件?,很有?考?值。 ?哥先?一下我的?定是??的:
    [root@linux ~]# vi /etc/xen/centos5
    # ???案的?名可以?便你取,不??定?最好是在 /etc/xen ??目?下才好!
    name = "centos5"
    kernel = "/boot/vmlinuz-2.6.18-8.1.14.el5xen"
    ramdisk = "/boot/initrd-2.6.18-8.1.14.el5xen.vbird.img"
    memory = "128"
    vcpus = 1
    vif = [ '' ]
    disk = [ 'tap:aio:/disk2/xen/xen.img,sda1,w' ]
    root = "/dev/sda1 ro "
    # name: 只是一??示的名?,一般建???名相同即可;
    # kernel: 在 domain-0 上面的?案,用??行 domain-U 的??!非常重要!
    # ramdisk: 就是 initrd 那??案?~??我?才做出?的?名
    # memory: 分配??? domain-U 的???有多少?如果?有?形,96 MB 也可以!
    # vcpus: 使用多少? CPU 的意思;
    # vif: 是否需要?路卡,如果需要?路卡,至少要有?定!但?容可用??!
    # disk: 用?作?根目?的是那?磁碟,??最重要啦!?法?:
    # tap:aio:/完整/路?/?名,???domain-U的磁碟代?,可否?入
    # 以我???例子??,我?之前建立的大?案模?成? domain-U 的
    # /dev/sda1 ,?且? partition ?可?入 (w)。


    特?特?留意的是,上面的?定??中的 kernel, ramdisk 以及 disk 都是以原本的主? (domain-0) 的角度?思考的, 也就是?,??上我?是以 domain-0 的核心?案??行 domain-U 的??,因此????在 domain-U ?中?不存在 /boot ??目?喔!因???上用???的是 domain-0 的?案嘛!

    至於另一?重?就是那? disk ??。我?可以使用模?的方式也可以使用??的 partition ??予?定。 如果是『用?案?模?成? partition』?,使用??逗? (,) 隔?成?三??位,分??:

    tap:aio:/完整路?/?案的名?,?置代?名?,?入?否
    [tap:aio:]:??新的?案?理模式,?的方式?使用:[file:]
    [?置代?名?]:就是模?的?置,?? domain-U ?的 fstab ??起?喔!
    [w]:就是?定可否?入,若唯???[r]
    如果使用?? partition ?模?的?,那???的部分?以『phy:』?取代。?例??,如果我?以 /dev/hda5 ?作? domain-U 的 /dev/sda1 的?,那就??成:

    disk = [ 'phy:/dev/hda5,sda1,w' ]
    如果一切都搞定之後,接下??我???? Xen 的 domain-U 吧!



    --------------------------------------------------------------------------------

    利用 xm 指令???管理 domain-1
    在 domain-0 可以使用 xm ??指令???、??、?除某? domain-U , xm 的指令用法是??的:
    [root@linux ~]# xm [?作] [?定?名] [-c]
    ??:
    [?作]:要某??定??的 domain-U 作何?作之意,常?的?作有:
    create :???? domain-U 的意思,例如?? centos5 ???定??,使用:
    xm create centos5
    destroy :立即由???中,??? domain-U ??除,常用於 domain-U 出???
    list :?目前已???的 domain 都列出?之意;
    console :若有已建立的 domain-U ?,可用 console ?取得 domain-U 的?端介面
    shutdown :??某?已??的 domain。如果想要??全部的 domain-U ,可用
    xm shutdown -a
    [?定?名]:亦即在 /etc/xen/ 目?下的?名?;
    -c :同?建立到??定?的?端介面 (console)


    如果想要??我???建立的 centos5 ???定??的 domain ?,?可以使用『xm create -c centos5 』即可。 那? -c 的作用是可以??直接取得 domain-U 的?端?介面。?哥在 pietty 上面??到 domain-0 , 然後?? centos5 ?? domain 的情?如下所示:



    ? 2-2、?? xen domain-U 的示意?


    在? 2-2 ?中,?入指令後 domain-U 的??流程就?依序的?示在?的?端?上, 感?上就好像坐在??前面看 Linux 主???一?!?在是很不?!最後如果???利成功的?, ?果?像下?所示??:



    ? 2-3、?? xen domain-U 的示意?


    在? 2-3 ?中,最上方圈起?的???息是???息。由於我?是?? domain-0 的所有?料, 因此?同原本?在 /etc/rc.d/rc.local ?案?的?行?程也?被?行。但是 domain-U 的??? domain-0 ?非完全相同,所以就?如上所述出?一些???息啦!?也是我?需要?外?理的部分喔。

    ?你以 root 的身份登入後 (??真的是?端?,?非是 ssh 的?面喔!),???多了一? xvc0 的?端介面, ??介面得先在 /etc/inittab ?面?定好才行!如果一切都 OK 了!恭喜您,你已?登入 domain-U ?! 接下???自行根??的需要??定好?的 domain-U 吧!???? domain ?行呢!

    好了,?在我如何登出 centos5 ?? domain-U 呢??可以??做的:

    直接在 domain-U 的?境中按下 [ctrl]-] ???合??回到 domain-0 的?境;
    直接?? pietty 等??的??;
    利用其他 bash ??束 (kill) 掉使用 xm 所建立的??程序
    有趣的是,即使?使用上述的方法??? domain-U ?, 也不?影?到 domain-U 的???作!而且 root 也不?登出,等到?下次再以『 xm console centos5 』?, ???取得 root 的?作???理??未完成的工作呢!很神奇吧~

    ?在,?跳回 domain-0 的地方,或者是利用另外一? pietty 的???入 domain-0 ,我?使用 xm list ?察看一下各? domain 的??吧!
    [root@linux ~]# xm list
    Name ID Mem(MiB) VCPUs State Time(s)
    Domain-0 0 366 1 r----- 735.2
    centos5 42 127 1 ------ 52.4
    # ????多了一? domain 出?!名?? centos5 啦!
    # ?也???有? State 吧!那? State 的意?是??的:
    # r :? domain 正在使用 CPU ?源在?作中;\r
    # b :?? domain 目前被?置(blockded),很可能由於?? domain 在等待????
    # 的?入?出 (I/O) 之故。
    # p :? domain ?於?停的??,通常由於管理?使用 xm pause 之故。
    # ? domain 在此???, Xen 的?督器?不??理? domain 的?作;
    # s :?? domain 正在???中
    # c :?? domain 已? crash 了,但是??有自?的?掉。通常是因??有?定
    # on_crash 的相??作所致。
    # d :? domain 正在死亡中...因?? domain ?法正?的 shutdown/crashed 之故。


    很??吧!??就完成你的 Xen domain ?~?始??所想要的?路服?分???的放到不同的 domain-U 中吧! 加油!

    例?:?於如何登入 domain-U
    我在?? domain-U 的?候,使用指令?『 xm create domain-U 』?致我使用 xm list 可以看到新的 domain-U 在?作,但我?是在 domain-0 。??此?我?如何登入 domain-U 呢?
    答:
    有??方式,如果想要取得 domain-U 的?端?模式,?使用:

    xm console domain-U

    如果?知道 domain-U 的 IP,?且 domain-U 有???似 ssh/telnet 的服??,可使用?路服?登入。?例?? domain-U 的 IP ? 192.168.100.100,且有?? ssh ,??可以使用:

    ssh username@192.168.100.100

    例?:?於如何?? domain-U
    我使用 xm list ?,?? domain-U 已???了,我?如何???? domain 呢?
    答:
    如果?在 domain-0 上?的?,可以使用:

    xm shutdown domain-U

    ????? domain-U ,如果?端一?,?想要??所有的 domain-U (除了 domain-0 之外),?可以下?:

    xm shutdown -a

    那如果?是在 domain-U ?面呢?想??? domain 就直接?他:

    shutdowm -h now

    即可,就好像一般正常程序??一?喔!那如果?一 domain-U ?法?利??,??可以在 domain-0 上面直接下??除的指令:

    xm destroy domain-U

    例?:?於重?登入的??
    我利用 xm create -c domain-U 的方式取得?端??登入 domain-U 了,?果另外一?使用者使用『xm console domain-U』也?登入? domain,此???生什?????如何解??
    答:
    由於??情?下,一? domain-U ?有一??端?,因此第二?登入者?不?????密?,而是直接以第一?登入者的身份取得??端介面,亦即?者?具有相同的?端介面?所有?源。但如此一???致控制?的??效?,最??果?者都?法控制??端介面。此?建??者均????端介面,然後??一使用者以 xm console 登入,另一使用者?使用?似 ssh 的方式?路登入即可。



    --------------------------------------------------------------------------------

    常???分析
    Xen 的??其?是?不容易的,常常?有一些??情??生。底下我??看看一些常?的??情?, ?您?解到,您?法?? Xen 的可能原因?何?


    --------------------------------------------------------------------------------

    ?有?? Xen 的 xend daemon
    [root@linux ~]# xm create -c centos5
    Using config file "./centos5".
    Error: Unable to connect to xend: Connection refused. Is xend running?


    如上所述,肯定你?有?? xend ?? daemon 的啦!直接??他即可:『/etc/init.d/xend start』



    --------------------------------------------------------------------------------

    使用到??的核心或者 domain-0 未以新 xen 核心??
    [root@linux ~]# xm create -c centos5
    Using config file "./centos5".
    Error: (22, 'Invalid argument')


    然後?到登???看看,亦即是 /var/log/xen/xend.log ??,如果出?如下的??:
    [root@linux ~]# cat /var/log/xen/xend.log
    [2007-10-17 13:18:48 xend.XendDomainInfo 31254] ERROR
    (XendDomainInfo:203) Domain construction failed


    很有可能就是你的核心?案用?。此???查一下你的?定?,看看『kernel』的?目是否?定正?? 我??必要使用 xen 相?的核心???才行啊!



    --------------------------------------------------------------------------------

    SELinux 或者是?案?限的??
    [root@linux ~]# xm create -c centos5
    Using config file "/etc/xen/centos5".
    Error: Kernel image does not exist: /boot/vmlinuz-2.6.18-8.1.14.el5xen


    但我看? /boot/vmlinuz-2.6.18-8.1.14.el5xen ??是存在的,可能原因?何?一般??,??????是 SELinux 的影?所致。?定方法可以用『setenforce 0』然後再重新『xm create -c centos5』??看看, 如果?定可以登入,那表示您的 /boot/vmlinuz-2.6.18-8.1.14.el5xen SELinux 安全格式?容不?。 正?的核心???型??是:
    [root@linux ~]# ll -Z /boot
    -rw-r--r-- root root system_u:object_r:boot_t config-2.6.18-8.1.14.el5xen
    -rw------- root root user_u:object_r:boot_t initrd-2.6.18-8.1.14.el5xen.vbird.img
    -rw-r--r-- root root system_u:object_r:boot_t symvers-2.6.18-8.1.14.el5xen.gz
    -rw-r--r-- root root system_u:object_r:system_map_t System.map-2.6.18-8.1.14.el5xen
    -rw-r--r-- root root system_u:object_r:boot_t vmlinuz-2.6.18-8.1.14.el5xen


    ?自行使用 chcon 指令??理 SELinux 的??吧!


    --------------------------------------------------------------------------------

    Kernel panic 的??
    如果出?如下的可怕?面?:
    ....前面省略....
    Loading ext3.ko module
    Creating root device.
    Mounting root filesystem.
    mount: could not find filesystem '/dev/root'
    Setting up other filesystems.
    Setting up new root fs
    setuproot: moving /dev failed: No such file or directory
    no fstab.sys, mounting internal defaults
    setuproot: error mounting /proc: No such file or directory
    setuproot: error mounting /sys: No such file or directory
    Switching to new root and running init.
    unmounting old /dev
    unmounting old /proc
    unmounting old /sys
    switchroot: mount failed: No such file or directory
    Kernel panic - not syncing: Attempted to kill init!


    出???『Kernel panic』的??非常的多且??,其?主要的原因就是?法??根目?。 因?你核心?案已??行??,?且??磁碟?案 (initrd) 也已??入?! 那什?情?下??法??根目?呢????要??查?:


    1. 用?作?根目?的?案 SELinux ?型不?:

    首先,?先到 /var/log/messages ?面察看一下,如果出?如下?面:
    Oct 17 12:04:17 xen-test kernel: audit(1192593857.395:259): avc:
    denied { search } for pid=29687 comm="tapdisk" name="/" dev=hdc1
    ino=2 scontext=system_u:system_r:xend_t:s0
    tcontext=system_u:object_r:default_t:s0 tclass=dir
    # 上面是同一行,意思是?,??案?取被拒?了,因?程序的格式?:
    # scontext=system_u:system_r:xend_t:s0 ,但是你的?案格式?特殊字?部分,亦即:
    # tcontext=system_u:object_r:default_t:s0
    # 所以???案的?取就被『deny』了!


    ?表示?用?作?根目?的?案 SELinux ?型不?,正?的?案?型是??的:
    -rw-r--r-- root root user_u:object_r:xen_image_t xen.img


    所以?可以使用?似底下的方式??理:
    [root@linux ~]# chcon -t xen_image_t -R /disk2


    似乎?同最??的 /disk2 都需要修改 SELinux 安全?容才行!所以?可以加 -R ??子目?生效!


    2. initrd ??磁碟?有?入正?的模?

    另一?可能原因就是??磁碟??有?入 domain-U 需要的模?,所以?必?要仔?看上面的?出?息有?有???目:
    Creating block device nodes.
    Loading xenblk.ko module
    XENBUS: Timeout connecting to device: device/vbd/2049 (state 3)
    Loading xennet.ko module
    netfront: Initialising virtual ethernet driver.
    netfront: device eth0 has flipping receive path.
    Loading uhci-hcd.ko module


    ?表示已??入了 xen 的相?模?,如果你的?面?有???息?,??考前一小??於??磁碟的?明。?且更新你的 domain-U ?定?吧!


    3. ?定??容??

    很多?候我?都?打?字~?在很麻?~所以如果上述???都???了,接下???查一下你的打字有?有??。 假?我的 xen ?案是放置到 /disk2/xen/xen.img ??,那???地方要注意:
    [root@linux ~]# vi /etc/xen/centos5
    name = "centos5"
    kernel = "/boot/vmlinuz-2.6.18-8.1.14.el5xen"
    ramdisk = "/boot/initrd-2.6.18-8.1.14.el5xen.vbird.img"
    memory = "128"
    vcpus = 1
    vif = [ '' ]
    disk = [ 'tap:aio:/disk2/xen/xen.img,sda1,w' ]
    root = "/dev/sda1 ro"


    模?的?置 (disk ?目?) 以及根目?的所在?置 (root 的?目) 需要配合成功,否?就?失?了! ?然啦,模?的?置也必?要跟??的?案相同才行喔!



    --------------------------------------------------------------------------------

    domain-U 本身的??
    如果??已?到?下面的???:
    unmounting old /sys
    INIT: version 2.86 booting
    Welcome to CentOS release 5 (Final)
    Press 'I' to enter interactive startup.
    正在?定?? (localtime): 三 10月 17 13:24:28 CST 2007 [ ?定 ]
    正在?? udev: [ ?定 ]
    ....中?省略....
    正在?查?案系?
    Checking all file systems.
    [/sbin/fsck.ext3 (1) -- /] fsck.ext3 -a /dev/hda1
    fsck.ext3: No such file or directory while trying to open /dev/hda1
    /dev/hda1:
    The superblock could not be read or does not describe a correct ext2
    filesystem. If the device is valid and it really contains an ext2
    filesystem (and not swap or ufs or something else), then the superblock
    is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193

    [失?]

    *** ?查?案系???生??。
    *** 系???您?入 shell 模式; 然後重新??
    *** ?您?? shell ?。
    Give root password for maintenance
    (or type Control-D to continue):


    注意到上面特殊字?的部分,既然已?出?了 INIT 的字?,?表示 domain-U 已?通?了核心??、 根目???等?作,且已??利的在?行 /sbin/init ??指令了,因此我?可以?信所有的 Xen ?定都是正?的, 可能?生的??就在 /disk2/xen/xen.img ???案?的配置了。?可能需要依???流程一?一?的去?理相?的??喔! 最可能?生的就是在 domain-U 的 /etc/fstab ?~


    --------------------------------------------------------------------------------
    其他半??化的安?方式

    由前一小?的泛用?例我?可以?解,如果 domain-U 的根目??源???自 domain-0 的?, 那?我?必?要手?修改很多?定?,非常的麻?~ 既然如此,有?有可能我?可以自行?安?程式放入根目?的建置呢?也就是?, 那? /disk2/xen/xen.img 的?容其?就是??安?程序而?的,而不是?由??的。 如此一?不就所有??都解?了,而且新安?的系??是很乾?的系?呢! ??如此!目前 CentOS 5 提供一?好用的??,那就是 virt-install, ?可以使用 virt-install -h ?察看可以使用的指令哩。

    但是在?始底下的?例之前,?必?要知道??限制才行:

    最??的安?方式??? domain-0 的根目??? domain-U 使用(就是前面的?例);
    半??化的安?方式『?不支援使用光碟或 DVD 的安?模式』;
    半??化?可透? http, ftp, nfs 等方式?安?乾?的 Linux 系?;
    看到上?的限制您????一跳吧!怎?不能用原版光碟安?喔???~是??! 使用原版光碟或者是原版光碟的 iso ?案安??,?有全??化?境可以?到而已。 那?????,我如何?作或者是取得安?用的伺服器呢?其?我?可以利用各大?院校的 FTP ?站即可啊! 不需要自行?定安?伺服器的。不?,如果你的?境?非???路的?,最好?是自行?定一下安?伺服器比?妥?。 ?了每位不同所在?的朋友,所以底下我?先快速的?一?如何?作一部安?伺服器,然後再?理其他工作吧! ^_^


    --------------------------------------------------------------------------------
    ?作安?伺服器 (Installation Server)

    如前所述,半??化的 Xen ?支援 NFS, HTTP, FTP 等?路方式安?,?不支援原版光碟安?的模式, 因此我?得要找到可提供安?的主?才行。如果您在台?的???路中, 那?可以???家高速?路中心或者是?守大?的 FTP ?站做??源,?例??,如下?址就是一?案例:

    http://ftp.isu.edu.tw/pub/Linux/CentOS/5.0/os/i386/
    ?一?是一家企?呢?那最好使用?部的主?架?成?安?伺服器?安?你的 domain-U 比?妥?。 以下?哥以 NFS 的方式????明一下建置 CentOS5 的安?伺服器?。


    --------------------------------------------------------------------------------

    ??容量大於 5GB 以上的磁碟分割槽:

    由於完整的 CentOS5 原版光碟含有好多的套件,至少也需要 3500MB 以上的容量?容? DVD 碟?的所有?料。 但是?哥的主??初?有?外???充性的??,因此就得要加?硬碟啦! ?哥是?我的 CentOS5 原版光碟放置到俺的 /disk1/yum/centos5 目?下的, ??目??另外一??立的 partition ,?於 partition 的?理方法?自行?考基?篇的?明,??不?述了。


    --------------------------------------------------------------------------------

    ??所有需要的套件:

    先?? CentOS5 的光碟或 DVD 碟,然後直接??即可:
    [root@linux ~]# mount /dev/cdrom /mnt
    [root@linux ~]# mkdir -p /disk1/yum/centos5
    [root@linux ~]# cp -a /mnt/* /disk1/yum/centos5
    [root@linux ~]# umount /mnt


    如果?是使用光碟的?,那?上述的?作就得要?行六次,因? CentOS5 共有六片光碟。 而且每片光碟??有一些重?的?案,因此系??警告?『是否要覆??』此?按下『y』去覆?即可。


    --------------------------------------------------------------------------------

    建立安?所需要的?案??性?料

    一般??,使用 yum 的系?在他 RPM ?案所在的目?下都?有一?名? repodata 的目?, ?目???著?案的相?性以及一些基本的安???。但因?我???料??到自己的主?上, 因此一些基本?料可能就不?吻合,所以我?需要重新?作出??目?才行。 ?作??目?必?要安? createrepo 套件,??的情?下是不?安??套件的, 因此我?可以??做:
    [root@linux ~]# yum install createrepo
    # 就是安?某?套件而已,??套件就是用在?作 repodata 目?的。

    [root@linux ~]# cd /disk1/yum/centos5
    [root@linux centos5]# cp repodata/comps.xml /tmp
    # 先?某些安????他??出?,??利用。

    [root@linux centos5]# rm -r repodata
    # 原本的?料不需要了,?他?除掉再?。

    [root@linux centos5]# createrepo -g /tmp/comps.xml .
    # 重新建立好 repodata 目??!




    --------------------------------------------------------------------------------

    ????定 NFS ?案系?

    接下?就是?定 NFS 啦!?什?要?? NFS 呢?因?他???!哈哈!
    [root@linux ~]# vi /etc/exports
    /disk1/yum/centos5 *(ro)
    # 先?定好 NFS 所要分享的目?所在

    [root@linux ~]# chcon -t public_content_t -R /disk1/yum/centos5/
    # ?定一下你的??目?是可以透? SELinux ?管理分享的!

    [root@linux ~]# /etc/init.d/portmap start
    [root@linux ~]# /etc/init.d/nfs start
    [root@linux ~]# /etc/init.d/nfslock start
    # ?服??他??吧!

    [root@linux ~]# showmount -e localhost
    Export list for localhost:
    /disk1/yum/centos5 *


    如果可以看到最?的?果,那就表示你的 NFS ?作妥?了!

    最?可以知道我?是:

    安??定使用 NFS
    主?名????部主?的 IP, 注意,不要使用 127.0.0.1 ?安?!
    NFS 的路?? /disk1/yum/centos5
    好了,?始?安?乾?的 Linux 系?在 domain-U 上面吧!



    --------------------------------------------------------------------------------
    利用 virt-install 指令安?乾?的 CentOS

    有了 NFS 安?伺服器後,再?我?使用 virt-install ?安??~ 安?的方式非常的??,?可以??做即可:
    1. 先建立我?所需要的大?案?作? domain-U 的磁碟:
    [root@linux ~]# dd if=/dev/zero of=/disk2/xen/centos5.virt.img \
    > bs=1M count=4096
    [root@linux ~]# chcon -t xen_image_t /disk2/xen/centos5.virt.img
    # 我建立了一? 4GB 大小的?案?作?安?之用!??容量??是?用的! ^_^
    # 比?需要注意的是,如果?有?? SELinux ?,?注意修改?案的安全?容。

    2. ?始使用 virt-install ?安?吧!
    [root@linux ~]# virt-install -n centos5_virt -r 256 \
    > -f /disk2/xen/centos5.virt.img --nographics \
    > -l nfs:192.168.1.254:/disk1/yum/centos5
    # -n :後面接你的 domain-U 的名?,??名?的?定??被主?建立在 /etc/xen 底下
    # -r :後面接?要??? domain-U 的???,目前至少需要 256MB 才能??行
    # -f :後面接的就是那?要? domain-U 的大?案?!
    # --nographics :不使用?形介面?安?的意思;
    # -l :後面接安?伺服器的?源。安?伺服器的?法?:
    # NFS ?: nfs:主?的IP:可以安?的目?
    # WWW ?: http://主?的IP/??的/完整目?
    # FTP ?: ftp://主?的IP/??的完整目?


    如果一切?利的?,?在就能??入安??面了!不??注意,您的 domain-0 需要?放防火??人家使用 NFS 喔! 否??是?法?利安?的啦! ^_^

    接下?的?面?哥是以 pietty ?上 domain-0 之後?行?面?取的,因? Xen 的?端?介面?示本?就怪怪的, 加上?哥所使用的?面?小,所以您???怎?字?都?跑掉~真是不好意思~ ?之,跟一般文字介面的安?方式是一模一?啦!?我??始?看看?示吧!


    --------------------------------------------------------------------------------

    1. ?系的??:

    如下?所示,由於?端?模式?有英文?示字元,因此我?直接??『English』吧。 ?注意使用 [Tab] 按?在各?元件之?跳?喔!



    ? 3-1、先???系?料



    --------------------------------------------------------------------------------

    2. ?於 domain-U 安??的 IP ?定:

    一般 IP ?定有 DHCP ?手??定,如果?的主?所在?境具有 DHCP 伺服器,且?的安?伺服器有???部?域?放防火??, 那?了方便,?可以直接使用 DHCP ?定即可,如下?所示:(一般??,?哥都?建?先取消 IPv6 的支援)



    ? 3-2、?定 IP 取得? DHCP 或者是手?直接?予 (Manual)


    ?一?的主?所在?境?有提供 DHCP 的服??,那?的 IP 就得要手??予了。在上??中???『 Manual configuration 』?目,??出?如下?所示的情?,?填入?域?路的 IP ??吧。 在本例中?哥的 domain-U IP ?定? 192.168.1.31/255.255.255.0 ?~



    ? 3-2-1、手??定 IP 的示意?



    --------------------------------------------------------------------------------

    3. ?迎?面?分割槽警告?息:

    接下??是?明?迎的?面,?有,因?我?使用的?案?被??『一?硬碟』而不是一? partition , 所以?有警告?息?明要注意的地方而已。?留意,在??的情?下, 模?的硬碟代?? /dev/xvda 喔!



    ? 3-3、只是?迎?面!



    ? 3-4、只是一?警告?息,直接 OK ?去!



    --------------------------------------------------------------------------------

    4. ?始?行磁碟分割的?作:

    ?入安?模式後,??地方最重要!我???建立了一? 4GB 的?案作?硬碟之用,而??模?硬碟的磁碟? /dev/xvda, 我?知道在安?的?候最重要的?? partition ? / ? swap ,所以就得要?行底下的分割咯! 如下所示,首先我?必?要建立一?客?自?的分割情? (Create custom layout), ?使用 [Tab] 按???如同下?的?明:



    ? 3-5、?定分割的模式,?使用 Custom layout


    接下??入到下?之後,我?必?要建立根目? (/) ?????? (swap),在??我?定根目?? 3200MB, 至於 swap ??定 256MB。建立的方法依序如下:



    ? 3-6、?入分割?面的情?



    ? 3-7、依照?中的?明,分???各???



    ? 3-8、另外一? Swap 的?定方法


    若前???面?定妥?後,最後??看到如下的?示,?查看看是否一?根目??一? swap 呢? 若???的?,就按下 [OK] 吧!



    ? 3-9、最?的分割表??



    ? 3-10、只是警告?????比?????少,不用理?他!



    --------------------------------------------------------------------------------

    5. boot loader 以及????

    ?定到此,我?可以?始??定??管理程式的相??作了。首先,?然一定需要 boot loader 啊! 所以如同下?,我?要使用 Grub ?!



    ? 3-11、使用 grub 作?????


    在??的情?中,domain-U 所使用的?端介面 (console) ?利用 xvc0 ???置??理的, ??部分???出?,所以不必理?他!



    ? 3-12、domain-U 所使用的?端介面?置



    ? 3-13、是否需要????密??不需要吧?



    ? 3-14、??只有一?,所以就不用改了。



    ? 3-15、?然是安?在 /dev/xvda 的 MBR 中!



    --------------------------------------------------------------------------------

    6. ?路?定??:

    再?就是?路??的?定部分,?哥建?您可以先?便?定,未?要使用?? domain-U ?, 再??的?定即可。在???哥都使用??值?指定而已。



    ? 3-16、使用??的 DHCP ? IPv4 即可



    ? 3-17、主?名?也先不要?定,使用 DHCP ??值



    --------------------------------------------------------------------------------

    7. ??? root 密?:

    因?我?使用台???,所以??要仔?的??喔!



    ? 3-18、????必??台?啊!



    ? 3-19、root 密?要?定,不要?便啊!



    --------------------------------------------------------------------------------

    8. 套件安?的??以及???始安?:

    由於我?希望的 domain-U 是用??行伺服器架?的,所以???哥?? Server 而已, 如下?所示。整?安?起?差不多是 1.x GB 的容量而已喔!



    ? 3-20、??? Server 的安??定



    ? 3-21、?是分析套件的相依性?面而已,?等待!



    ? 3-22、??是通知?息,告知你的????被??到??



    ? 3-23、看到否,?始安?的整??程



    ? 3-24、安?完?,?重新??吧!



    ? 3-25、重新??完?後,出?等待登入的?面示意


    整??程非常的??,就如同?在安?一部文字介面的 Linux 主?一般。 ??始安?到?束的整??程中,花?比?多??在?定?目,完整安?差不多 10 分?就搞定了。 ??是因??哥使用?型主??安?的,?哥曾以新 P4 主??安???一整?流程, ?始安?到?束不到 3 分?,?在是非常的快速啊!

    接下??可以查?一下 /etc/xen/centos5_virt ?示的?容, ??案是由 virt-install 主??我?建立的,我的?料如下所示:
    [root@linux ~]# cat /etc/xen/centos5_virt
    # Automatically generated xen config file
    name = "centos5_virt"
    memory = "256"
    disk = [ 'tap:aio:/disk2/xen/centos5.virt.img,xvda,w', ]
    # 仔?瞧,?? xvda 了??就是???定的啦!

    vif = [ 'mac=00:16:3e:2f:4a:ef, bridge=xenbr0', ]
    # 可以直接指定模??卡的??卡?以及使用的?接器

    uuid = "9a968f71-c36b-d48a-5a03-304bb41a639f"
    # 甚至可以直接定??置的 uuid ??呢!

    bootloader="/usr/bin/pygrub"
    # ?有核心了!而是利用 domain-U 自己的核心???的!
    # 要使用 domain-U 的核心???,就得用???定?目才行!

    vcpus=1
    on_reboot = 'restart'
    on_crash = 'restart'


    接下???始使用 xm create -c centos5_virt ?????乾??暇的 domain-U ?!



    --------------------------------------------------------------------------------
    CentOS5 所提供的一??例

    ?然 virt-install 已?有?好用了,不?在某些情?下?是?法?行的。首先, virt-install 要求 domain-U 在安??一定要?予 256MB 的???,如果?的???少於 256MB ?,肯定?法?行 virt-install ~ 再者在 SELinux ??的情?下,可能??有?法?行 virt-install 的情??生。 ?好, CentOS5 提供了一?可以??安?程式的核心?我???行安??程! 接下?我??以 CentOS5 官?所提供的 kernel file ??行安?的?作喔!

    其?整??程挺??的,最重要的就是必?要使用 CentOS5 官?所提供的核心???磁碟映像?, 有????西就能??理安?的程序了。底下我?就一步一步??理???定吧!


    --------------------------------------------------------------------------------

    0. 建立?路??所需的 DHCP 伺服器

    在??的情?下 Xen 使用的?路?境?利用?接方式 (bridge) ?????的?路?境。 但在??模式底下 domain-U 在安??,取得 IP 的方式主要?利用 dhcp ?定, 使用手?的方式??定 IP ?是不可行的方案!除非要?成利用 NAT 的模式??理。 假?我?都先不更改 Xen 的???境,那?我?就得要?? Xen 的?路模式?建立一部 dhcp 伺服器了。

    ??的 dhcp 伺服器建置方法??考伺服器架?篇的介?, ?哥在???利用一些??很快的?整?流程?理一下吧! 需要注意的是,如果?的?域?已?有一? public 的 dhcp 了,那?您在建置??? domain-U 用的 DHCP ?, 特?留意不要影?到其他的 dhcp 主?喔!?哥??假?我的 domain-U 的 MAC ? 00:16:3E:00:00:11 , 所以有???? MAC ??理喔!
    1. 先?查?的 domain-0 是否有安? dhcp 呢?
    [root@linux ~]# rpm -qa | grep dhcp
    dhcp-3.0.5-5.el5
    # 如果?有出?上述的套件?,?自行使用 yum install dhcp 吧!

    2. 修改 DHCP 的?定?
    [root@linux ~]# vi /etc/dhcpd.conf
    ddns-update-style none;
    subnet 192.168.1.0 netmask 255.255.255.0 {
    option routers 192.168.1.254;
    option subnet-mask 255.255.255.0;
    option domain-name "xen.test";
    option domain-name-servers 168.95.1.1;
    range 192.168.1.20 192.168.1.25;
    default-lease-time 21600;
    max-lease-time 43200;
    host dic1 {
    hardware ethernet 00:16:3E:00:00:11;
    fixed-address 192.168.1.31;
    }
    }
    # ?哥就是利用那? hardware ethernet ?控制某??卡?源的要求的啦!

    3. ????察
    [root@linux ~]# /etc/init.d/dhcpd start
    [root@linux ~]# netstat -tlunp
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    udp 0 0 0.0.0.0:67 0.0.0.0:* 22285/dhcpd
    # 重?在那? port 67 ?~

    4. 防火?的?理!
    [root@linux ~]# iptables -I INPUT -p udp --dport 67 -j ACCEPT
    [root@linux ~]# iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
    # 重?在?放用?端?於主?的???!??要?定好!


    如此一? DHCP 主?就?定好了,??吧!再??始其他的?理吧!



    --------------------------------------------------------------------------------

    1. 建立 domain-U 所需要的??磁碟

    同?的,利用 dd ??指令?建立他吧!?哥依??我的映像?放置到 /disk2/xen 底下去。
    [root@linux ~]# dd if=/dev/zero of=/disk2/xen/centos5.office.img \
    > bs=1M count=3072 oflag=direct
    [root@linux ~]# chcon -t xen_image_t /disk2/xen/centos5.office.img
    [root@linux ~]# ll -Z /disk2/xen/centos5.office.img
    -rw-r--r-- root root user_u:object_r:xen_image_t centos5.office.img


    除了要建立??大?案之外,不要忘?那?可?又可怕的 SELinux ?型也需要同??更! ??大家都很容易忘?!包括?哥在?~ @_@



    --------------------------------------------------------------------------------

    2. ?定?端?介面

    ???作在前面的小?中已???了,??特?再列出?,因?如果??有作???作, 很可能在 domain-U 的地方??您?法使用 console 的方式登入 domain-U ,??您可能需要使用?似 ssh 的?路??方式才能?登入 domain-U 哩! 而且,如果?有作???作,你的 domain-0 ??一直在 /var/log/messages 出?一些??~?在??~ ?作的方法很??:
    [root@linux ~]# vi /etc/inittab
    # 大?在第 51 行的地方加入底下特殊字?的部分:
    5:2345:respawn:/sbin/mingetty tty5
    6:2345:respawn:/sbin/mingetty tty6
    co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav
    # 意思是使用 agetty 建立 xvc0

    [root@linux ~]# init q
    # init q ??指令可以? /etc/inittab 的?定立刻生效而不需要重新??!

    [root@linux ~]# ln -s /dev/console /dev/xvc0




    --------------------------------------------------------------------------------

    3. 下? CentOS5 用?安? Xen 的核心?映像?

    CentOS5 官?提供的可安? Xen 核心在底下的??,分? i386 ? x86_64 版本:

    i386: http://mirror.centos.org/centos/5/os/i386/images/xen/
    x86_64: http://mirror.centos.org/centos/5/os/x86_64/images/xen/
    ?哥使用的是 i386 的版本。下???理的方式可以??做:
    [root@linux ~]# cd /boot
    [root@linux boot]# wget \
    > http://mirror.centos.org/centos/5/os/i386/images/xen/vmlinuz
    [root@linux boot]# wget \
    > http://mirror.centos.org/centos/5/os/i386/images/xen/initrd.img
    # 先下?????案下?,?了方便??,所以?哥????名修改一下:

    [root@linux boot]# mv vmlinuz centos5_xen_vmlinuz
    [root@linux boot]# mv initrd.img centos5_xen_initrd.img
    [root@linux boot]# restorecon /boot/*
    # 最後一??作 (restorecon) 在?理 SELinux 的??啦!


    所以我?已?取得 CentOS5 官?所提供的核心?映像?了!???理?定??~



    --------------------------------------------------------------------------------

    4. 撰?『安?用』?定?

    接下?我?得先就可安?的核心??行?定?的??。我??比?有趣的地方在於??部分:

    我具有 NFS 安?伺服器,?伺服器 IP ? 192.168.1.254,路?? /disk1/yum/centos5
    domain-U 在安??的 MAC 假?? 00:16:3e:00:00:11,且透? DHCP 取得 IP;
    使用 kickstart 方式?安?,而 kickstart 的?定?放置到安?伺服器的 /disk1/yum/centos5/ks.xen.centos5.txt ?
    什?是 kick start 呢?我???在前一小?使用 virt-install 安??,不是有很多的???面?? 所?的 kick start 就是?所有的???目都?入某一??定?,如此一?,就可以免除手?去挑?的困?了。 因此,我??有???案需要建立。首先,我?建立 Xen 的?定?,?案如下:
    [root@linux ~]# vi /etc/xen/centos5_xen_install
    kernel = "/boot/centos5_xen_vmlinuz"
    ramdisk = "/boot/centos5_xen_initrd.img"
    extra = "text ks=nfs:192.168.1.254:/disk1/yum/centos5/ks.xen.centos5.txt"
    name = "centos5_xen_install"
    memory = "128"
    disk = [ 'file:/disk2/xen/centos5.office.img,xvda,w', ]
    vif = [ 'mac=00:16:3e:00:00:11, bridge=xenbr0', ]
    vcpus = 1
    on_reboot = 'destroy'
    on_crash = 'destroy'
    # 上面比?特?的只有那? extra 而已,那?是核心的?外???明!


    我??得建立 kick start 的?定??容。其?你的 CentOS 本?就有 kickstart 的?定?了, ?情??考你自己的 /root/anaconda-ks.cfg ?案,您就?得?!更??的 kickstart ?先?考如下??:

    http://freesf.tnc.edu.tw/docs/rh/rhl-cg-zh_TW-9/ch-kickstart2.html
    ?哥???作???的?定而已:
    [root@linux ~]# vi /disk1/yum/centos5/ks.xen.centos5.txt
    # 1. ?安?有?的?定,尤其是 NFS 的?定最要?!
    install
    nfs --server=192.168.1.254 --dir=/disk1/yum/centos5

    # 2. ?系的支援以及????表
    lang en_US.UTF-8
    langsupport --default en_US.UTF-8 zh_TW.BIG5 zh_TW.UTF-8 zh_HK.UTF-8 \
    zh_CN.GB18030 en_US.UTF-8
    keyboard us

    # 3. ?路?定,?住,要? NFS 安?伺服器同?域才行!
    network --device eth0 --bootproto dhcp

    # 4. 密??防火??有 SELinux ???的相??定
    rootpw --iscrypted $1$NGE.r9ik$D9iqc2bfdpi1DYvqC2CwP.
    firewall --enabled --port=
    authconfig --enableshadow --enablemd5
    selinux --enforcing
    timezone Asia/Taipei

    # 5. ??管理程式,注意那? driveorder ?目,我?的硬碟是??的喔!
    bootloader --location=mbr --driveorder=xvda --append="console=xvc0"
    reboot

    # 6. 磁碟分割表的操作以及安?的套件?料
    clearpart --all --initlabel --drives=xvda
    part /boot --fstype ext3 --size=100 --ondisk=xvda
    part / --fstype ext3 --size=2048 --ondisk=xvda --asprimary
    part swap --size=512 --ondisk=xvda
    %packages
    @core
    # 如果?曾?安?? Linux ,那?上面的??????,??不??解。
    # 比?特殊的是 rootpw 那??目,?哥是由 /etc/shadow ??加密的密??的,
    # 如此? root 的密?也?定妥?,而且是加密?的?料。
    # 在本案例中的 root 密?? 123456789 喔!

    [root@linux ~]# chcon -t public_content_t \
    > /disk1/yum/centos5/ks.xen.centos5.txt


    如此?????定?料?他?定好了。接下?就是?行安?的流程喔~



    --------------------------------------------------------------------------------

    5. ??安??程

    ??安?真是太??了!直接?? Xen 即可啊!?下?:『xm create -c centos5_xen_install』吧! 然後在出?一小段??的 IP ??、硬???、套件?料分析等?面後,就?主?的?入??安?套件的?面! 接下?我?啥事都不需要?心,所有的安??程 kickstart 系?都??我?搞定的。 ??上,?要做的就只是...喝茶看??吧!不?如果?的 domain-0 系?非常的高效能, 老??,喝茶的???在是不?用~ @_@,因?可能 3 分?就安?完?了~ ^_^

    kickstart 就是??好用!?可以??一??定放在?的安?伺服器上面,未?想要安?一模一?的?境?, 直接在安?的?程?入???案即可,我?不需要?手?挑?有的?有的啦! ^_^



    --------------------------------------------------------------------------------

    6. 修改成?可以正常??的?定?

    在上述第四?步??,我?所建立的 /etc/xen/centos5_xen_install 是??用?安?用的?定?。 既然已?安?妥?了,???案就不能??的使用,否?每次都?重?的?入安?的?面, ?一直不?的重新安?....

    所以接下?我?得要修改一下?定?才行。?定?可以改成底下的模?喔:
    [root@linux ~]# vi centos5_xen_run
    name = "centos5_xen_run"
    memory = "128"
    disk = [ 'file:/disk2/xen/centos5.office.img,xvda,w', ]
    vif = [ 'mac=00:16:3e:00:00:11, bridge=xenbr0', ]
    vcpus = 1
    on_reboot = 'restart'
    on_crash = 'restart'
    bootloader = "/usr/bin/pygrub"
    # 其?就是加入那? pygrub 的?行?而已。??案的作用就是
    # 作?一????入器??入 domain-U ??所需使用的核心???磁碟。


    接下?如果想要使用??完成的 domain-U ?登入?,?使用:『 xm create -c centos5_xen_run 』???吧! ??的?面如下所示,????,怎?透??端?可以跟在?幕前面一?模?!?能看到 grub 哩! 真是有?棒的!



    ? 3-26、?? domain-U 的?面


    ??好?所需要的????後,嘿嘿!就能?在 pietty 之?的?境完整的操作你的 domain-U 了! ??在的,用在教?上,?在是很棒的一?好主意!


    --------------------------------------------------------------------------------



    --------------------------------------------------------------------------------



    --------------------------------------------------------------------------------
    ?考?料

    ?1:Apache 是一? WWW 伺服器??,??主? (virtual host) 的概念可以?考底下??:
    http://linux.vbird.org/linux_server/0360apache.php#www_adv_virtual
    ?2:?哥的著作之一,Linux 基?篇,?路文件??考:
    http://linux.vbird.org/linux_basic
    ?3:?哥的著作之一,Linux 伺服器架?篇,?路文件??考:
    http://linux.vbird.org/linux_server
    ?4:多重??,一部主??有多?作?系?,可在??的?候??想要?行的 OS。??考:
    http://linux.vbird.org/linux_basic/0156installfc4.php#moreOS
    ?5:??考 Xen 的 Users' Manual version 3.0:
    http://www.cl.cam.ac.uk/research/srg/netos/xen/readmes/user/user.html
    ?哥??的?份:http://linux.vbird.org/linux_security/xen/user.pdf 也有??中文版:http://www.linuxsir.org/main/?q=node/188
    ?6:?於硬?、核心??用程式的相?性??考:
    http://linux.vbird.org/linux_basic/0110whatislinux.php#whatislinux_os
    http://linux.vbird.org/linux_basic/0320bash.php#bash_what
    ?7:?於?示的?明可以?考?明兄的一篇文章:
    http://linux.vbird.org/somepaper/20070214-xen_on_sles_10.pdf
    ?8:?於更多的??流程?相???,可以?考底下??:
    http://linux.vbird.org/linux_basic/0510osloader.php

    ?

    其他?考?料:
    axa ?友在酷??的一篇 Xen ?明,?然是?? Gentoo 版本,不?很值得一看:
    http://phorum.study-area.net/printview.php?t=35725
    The Xen virtual machine monitor:http://www.cl.cam.ac.uk/research/srg/netos/xen/index.html
    Xen Clustering with CentOS 5:http://meshier.com/2007/06/13/xen-clustering-with-centos-5/
    Xen 的?路模?情?:http://wiki.xensource.com/xenwiki/XenNetworking
    CentOS 5 的 Xen ?例:http://wiki.centos.org/HowTos/Xen/InstallingCentOSDomU
    YHTSAI的部落格:http://www.yhtsai.idv.tw/blogs/index.php?blog=4
    Fedora Xen Quick Start:http://fedoraproject.org/wiki/FedoraXenQuickstartFC6
    安? Windows 在 Linux 下:http://linux.vbird.org/linux_security/xen/xen_install_windows.pdf
    Xen 的其他??解?:http://www.lslnet.com/linux/f/docs/linux-5520.htm
    一些?於?路的?定方式:http://linux.chinaunix.net/bbs/redirect.php?tid=910815&goto=lastpost
    http://www.debian-administration.org/articles/360
    http://phorum.study-area.org/index.php/topic,52293.msg266975.html

  16. baizx 于 2009-08-10 10:55:36发表:

    ?易 Cluster 架?

    原理:

    --------------------------------------------------------------------------------

    什?是 Cluster ? Cluster 的??
     
    什?是 Cluster 呢?目前常?的 Cluster (?集)架?有??,一?是 Web / Internet cluster system,??架?主要是??料放置在不同的主?上面,亦即由多部主?同???一?服?;而另外一??是所?的平行?算了!平行?算其?就是?同一??算的工作,交?整? Cluster ?面的所有 CPU ??行同步?算的一?功能。由於使用到多? CPU 的?算能力,所以可以加快?算的速度。目前比?常?於平行?算功能的,通常需要在超???上面才看的到,?些超???主要是用在天文、?事、物理等需要很精密的、大量的?算的工作中,而考?到?定性,?通常是用在 Unix 系?上面的硬?架?上。不?,目前由於 PC 上面的 CPU 的?算功能越?越?大了~因此,?然很多程式??者就??筋到 PC 上面??作平行??的系??!我??篇短文主要在介?的就是『平行?算』?一?的 Cluster 了!
     
    由於 Cluster 主要是用在平行?算上面的,而所?的平行?算是使用到多? CPU 的?算功能,因此可以?您的大型?算的程式很快的?行完?!因此,如果你的工作?境?中,常常?使用到很耗 CPU ?算功能的程式?,就可以??使用 Cluster ??行工作?!??可以?省您不少的???!此外,我??篇短文主要是在 X86 架?下的 PC ?架? Cluster 的喔!
     
    不?,也需要特?留意的是,由於我?的 Cluster 是?一?工作平均分?所有的 node (?:一? CPU 在一? Cluster 架?下,就??一? node ?!),所以,?一您做成的 Cluster 系??中,所有的 node ?非完全相同的?算等?,那?先做完工作的 node ???停工作,?等到所有的 node 都?行完?後,才?在?行下一?~所以啦!?烈的建?在同一? cluster 的架?中,?量所有的 CPU 都使用相同的 CPU 型?,???比?好一?喔!
     

    --------------------------------------------------------------------------------

    Cluster 的主?架?
     
    最??的 Cluster 其?就是以一?主?架???行?料的?算工作的,?示如下:

    上面的 Master ? Slave 指的都是 CPU 喔!
     
    Master 那部?器上面必?要有可以?工作分配?各? node 去工作的函式?,也就是 MPI ,他最重要的功能就是?工作?他分配下去的啦!而最重要的??就是:(1)MPICH;(2)??器(compiler, 例如 Fortran);
     
    什?是?路功能呢?如果 master ? slave 是在同一部?器?中,例如? CPU 的主?板,那???就不需要?路功能啦!不?,如果我是使用四台? CPU 的 PC 呢?呵呵!那??四部主?就需要以高速?路架??行??啦!此外,?需要在?四部主?之?建立可以互通?息的通??定才行,?方面的功能就含有:(1)R Shell, 亦即?? RSH;(2)NIS,使 Master ? Slave 具有相同的??群???;(3)NFS,使?取?入的?料可以在同一? partition 上面;
     
    Slave 就是??的??自 Master 的任??他做完就是了!
     
    整?主?架?大致上就是??啦!因此,可以知道的是,我?需要的就是上面那些咚咚?!
     

    --------------------------------------------------------------------------------

    ?成 Cluster 所需要?外功能 ( RSH ) ??? ( MPICH )
     
    由上面的 Cluster 主?架??中,我?知道 Master ? Slave 之?的?路?通很重要的一?咚咚,那就是 R Shell ?!此外,?有?一?工作?送?不同的 node ??行?算的任?,就需要 MPICH ??函式???行!??的?一????玩意?吧!
     
    RSH:
    在我?的 Linux 主?上面工作,通常使用 BASH ?? shell ???? kernel 工作的?息,以使主?正?的工作;而如果在不同的主?之?,那就可以使用 R Shell ??行指令的下?喔,如此一?,我?就可以直接在 A ?器,向 B ?器下?工作的指令,而不需要登入 B ?器呢~那就是 RSH 的主要功能啦!最常?的 RSH 指令就是 rcp ? rsh 了!有?趣的朋友??知道以 man ?查?一下?指令的用法?!
    需要附?一提的是,?? RSH 是『相?危?』的一?服?喔!由於我?可以直接登入 RSH 主?,?且在上面?行指令的下?,?了避免?要?入密?的??,因此通常 RSH 已??信任主??定好了,不?,由於 RSH ???一些 port ??? Clients 的需求,而偏偏?些 port ? daemon 都?挺危?的,因此,『Cluster 最好是?定在?部?域?中,?使用私有 IP ,比?能?避免危?』喔!此外,那? Master 也必?要?定好一定程度的?密防火?喔!
     
    MPICH:
    MPI 是 Messages Passing Interface 的??,他本身是一??格很?密的通???,主要的功能是在?理平行?算之?各? node 的?料交?,?注意, MPI ?不是一套??喔!而至於 MPICH 就是符合 MPI ????通??定的一套??了!因此,我?可以?由 MPICH ????提供的 MPI 函式???成平行?算的功能喔!也就是?,我?所?的程式,只要能?使用 MPICH 提供的函式?,那??程式就可以?行平行?算?候所需要的功能了,?就可以避免程式??者?要去?理通???上面的??,而可以?程式??的重心著重在程式本身的??上面!
    MPICH 是由 Mathematics and Computer Science Division的 Argonne ??室所?展,??的?料可以?考:http://www-unix.mcs.anl.gov/mpi/mpich/
     
    除了?????之外,?需要 NIS ? NFS 喔!所以啦!要建置一? Cluster 的?,身?系?管理?的您,必?要??的技能真是相?的多的,至少需要:
     
    熟悉 Linux 的操作技巧;
    熟悉 Linux 基??路???定;
    熟悉 Linux 相?的 Server 架?(?方面??考?哥的私房菜架站篇);
    ?解 RSH 的相?功能??定技巧;
    ?解 MPICH 的?定?相?功能;
    熟悉至少一?程式?言。
     
    ?真的是不好?啊!?哥也是新手玩弄 Cluster ?~大家一起研究研究吧! ^_^

    --------------------------------------------------------------------------------
    架?流程
    要架? Cluster ?然就是需要多部的 PC ???啦!不然怎??? Cluster 呢?您?是吧!所以,??如何,在架? Cluster 之前,??必要??您的『所有硬?以及?路功能都是完整?缺的!』否?就?法??下去啦!另外,建? Cluster 的所有主??格?量相同,可以避免等待的困?呢!底下就??一?整?架?流程吧!
     

    --------------------------------------------------------------------------------

    整?架?
     
    整?架?的架??中,需要的所有???:
     
    Master 主?安?需要:
    防火?的?定(含 NAT 架?);
    RSH
    NIS Server
    NFS Server
    Compiler Install
    MPICH Install
    其他特殊功能
     
    Slave 主?安?需要:
    防火?的?定
    RSH
    NIS Client
    NFS Client
     
    基本上,?乎所有的工作都是在 Master 上面做啦! Slave 最大的任?就是?行?自 Master 所要求的?算工作,因此,Slave 能?越??越好~至於 Master 上面,由於我?都是在 Master 主?上面下?工作指令,而?不能老是在?幕前面下?指令吧!因此上,Master 通常?有???路介面,分?是?外的 Public IP ???的 Priavte IP。而既然 Master 有提供 Public IP 的?定,自然就比??心所?的?客入侵??,所以啦,您的 Master 主?,要?就不要?放 Public IP ,要?就?必要?定很?密的防火?,?且不必要的服?就?量??他~?竟我?的 Cluster 是要用?做??算?作的,所以不必要的?路?定服?,?然就是??他啦!底下?哥?以自己的一???案例?行?明的啦!?考看看吧!
     

    --------------------------------------------------------------------------------

    ?哥的一??例??
     
    在我??案例?中, Cluster 主要的功能?:?行 MM5 ???象模式的?算以及 Models-3/CMAQ ??空?品?模式的?算,而由於???咚咚都是使用 PGI Fortran 90 做? Compiler ,因此,我就必?要?行 PGI 的安?啦!而我的硬?架?主要是??的:
     
    Master : ?? CPU 主?,使用 AMD MP 的 CPU ,?且有一? 120 GB 的硬碟,此外,由於我的?值模式需要 PGI Fortran ,所以就必?要安? Server 版的 PGI Fortran 喔!
    Slave : 共有三部 Slave ,每一部均?? CPU 的 AMD MP 的 CPU ,?且有一? 120 GB 的硬碟;
    ?接 Master ? Slave 的? 10/100/1000 的 Switch ,?然,四部主?(1 x master + 3 x slave)都是安? Intel 的 1GB ?路卡喔!
     
    硬??接有?像??:

    那?底下就??一?怎?安?他吧!
     

    --------------------------------------------------------------------------------

    系?安?( Red Hat 9 )
     
    我的??系?使用的是最新的 Red Hat 出版的 Red Hat 9 ,?用??玩意?最大的原因是因? Red Hat 是目前支援的 Linux ??最多的一? Linux Distribution 了,安?他之後,就比?不?欠?欠西的,此外,很多的??都是以 Red Hat 做???的平台,因此我就??他?做?我的系?平台啊!另外,需要留意的是,由於 Slave ?不需要使用到?形介面的功能,他??是用在?算上面,因此我?有在 slave 上面安??形介面的打算~至於 Master ?安?了 KDE ??咚咚喔!好了,Linux 的安?相信大家??都要很熟悉了,所以我就不再?安?的??步?,?提??特?需要注意的地方?:
     
    Partition 方面:
    因?我的硬碟?在是在?大的,?且在 Slave 上面也是 120 GB 的硬碟,如果不? Slave 的硬碟使用的?,?在?得很浪?,因此,一?始我就???四部主?的硬碟全部都以 NFS 分享到?部?域?中,而?了避免跟系?的?案放在一起,因此,我就?硬碟分割出除了必要的 partition 之外,其他的就??在 /disk1 ??目??中,四部主?的 parition 都相同,分?是:
     
    / : 10 GB
    /var : 5 GB
    /tmp : 3 GB
    Swap : 3 GB ( 因?我每部 Linux 主?上面都有 1.5 GB 的??? )
    /disk1: 96 GB
     
    安????的套件:
    所有的主?都需要底下的套件安?(?:因?原本的????的很?,所以如果找不到相同的字眼,那就是我??啦!):
    Administrattion Tools
    Development Tools
    Editors
    Engineering and Scientific
    FTP Server
    Kernel Development
    Network Servers
    Server configuration Tools
    Sound and vedio
    System Tools
    Text-based Internet
    Windows File servers
    不?, Master 需要?外再增加 X Window 方面的支援,例如 KDE ? X-Window System ???主要的套件要勾?喔!
     
    系?安?大致上就是?些吧,如果有疏漏的,?未?在安?完?之後,再以原本 Red Hat 9 的光碟?重新安?他吧!反正 Red Hat 系?都是以 rpm ?安?的,挺容易安?的喔!整?安?完?後,?花不到?分?呢!
     

    --------------------------------------------------------------------------------

    防火? ( 含 NAT 主? ) ??路?定
     
    由於我?的 Cluster 主要是用在?值?算,因此,?然不需要?外?放?路服?啦!所以,最好就是以私有 IP ??行?路的?定是比?好的!此外,最好?是要?定好防火?的啦!我的?域????是??的:
     
    Network/netmask:192.168.10.0/255.255.255.0
    Master:(?外)140.116.xxx.yyy;(??)192.168.10.30, Gateway ??外的 Gateway 喔!?且有?定 NAT 啊!
    Slave:192.168.10.10, 192.168.10.20, 192.168.10.40 三部,Gateway ? 192.168.10.30
     
    ?路??的各??案是??的:
     
    各?主?的主?名??修改:/etc/sysconfig/network
    各?主?的?路卡?定?目?修改:/etc/sysconfig/network-scripts/ifcfg-eth0
    各?主?的 DNS 查?系??修改:/etc/resolv.conf
    各?主?的?部主?名?查?系??修改:/etc/hosts,我的 /etc/hosts 如下:
    127.0.0.1 localhost localhost.localdomain
    192.168.10.10 node1.cluster
    192.168.10.20 node2.cluster
    192.168.10.30 server.cluster
    192.168.10.40 node4.cluster
     
    而我的每部主?先?所有的?路服?都?他?掉去,?剩下 SSH ???路?定存在而已~所以,我利用 Red Hat 提供的 ntsysv ??指令????????的?目有:
     
    atd
    crond
    iptables
    keytable
    network
    random
    sshd
    syslogd
    xinetd
     
    至於防火?系?的??上面,由於 Master 主? (192.168.10.30) 具有 NAT 的功能,所以必?要修改一下他的防火??制,因此,就有??不同的防火??制 scripts ?!另外,由於?心外?的入侵攻?,因此,在?? Cluster 的系??中,我的 iptables 防火??制是使用『MAC(?路卡卡?)』?做??定的基?,而不是使用 IP 啊!?什?呢?因?反正我?允?我自己同?域?的?部?????而已,?然?有必要?? IP 啊!所以?,就必?要收集四部主?的?路卡?允?他?入?。此外,由於我可能?不在 Cluster 前面操作,因此??用一?部主?的?路卡卡?,好?他能??入 Cluster 呦!底下就?我的防火??制?他列出?一下:
     
    Master: #!/bin/bash
    # This program is for iptables' rules
    # VBird 2003/05/02
    #
    # 0. PATH and modules
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    export PATH
    modprobe ip_tables
    modprobe iptable_nat
    modprobe ip_nat_ftp
    modprobe ip_nat_irc
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_conntrack_irc
    #
    # 1. clear the rules and make the policys
    iptables -F
    iptables -X
    iptables -Z
    iptables -F -t nat
    iptables -X -t nat
    iptables -Z -t nat
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -t nat -P PREROUTING ACCEPT
    iptables -t nat -P POSTROUTING ACCEPT
    iptables -t nat -P OUTPUT ACCEPT
    #
    # 2. NAT services
    echo "1" > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j MASQUERADE
    #
    # 3. Trust network and conditions
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m mac --mac-source XX:YY:ZZ:WW:QQ:PP -j ACCEPT
    # 上面?一行就是?路卡的卡?啦!

     
    Slave:
    Slave 的防火??制跟 Master ?乎一模一?,只是因?在?部啊,所以不需要?? NAT 的服?即可!上面的?改一改先~
     
    好啦!?路的?定?防火?就到???止,要?得喔,你的?路必?要已?能?正?的??了!如果?是?法???路,或者是防火??制?是有??,那??外的那??路卡的?路??是先?他拔掉吧!比?安全一些些的啦!等到都?定妥?,尤其是防火?,然後才???他吧!
     

    --------------------------------------------------------------------------------

    NFS 架???
     
    由於我????要?定 NIS ,?且每部主?的 /disk1 都要分享出去,因此,每部主?都必?要?放 NFS 的服?喔!?且,每一部主?的?定都可以相同?!??比?容易??定?~此外,比?不一?的地方在於 Master ?一部,由於我的 Cluster 所有的??都在 NIS 的管制之中,因此,我? Master 的 /home 也分享出?,?且每部 Slave 主?都?? Master 的 /home 才成!
     
    ?? NFS 在 Cluster ?中是相?重要的,?什?呢?因?我?不是在四部主?上面工作?,而?四部主??去?取的『?料』其?都是『在本?上面可以看的到的』?料才行,??包括底下我??持?介?的 mpich ????的函式?呢!也就是?:『在 Cluster ?面,所有的?器?使用到的?料必?都在相同的目??中!』所以,?就是?什?我?要? /home ?行分享,以及?行 NIS 的?定了!此外,因?我的 Server ?部 Master ?器分享出去的目?中,已?含有 /disk1 ?? partition,此外,?通通?他??在 /cluster/server 底下,因此,可以建?:『未?在安?所有的 Cluster 需要的套件?料?,例如 Compiler 以及 MPICH 等等,都可以安?到 /cluster/server ??目?底下,以使所有的主?都能?使用同一? partition ?源的?料喔!』
     
    ?定程序:
     
    Master:
    1. ?? portmap ?且?定????:
    [root @server root]# /etc/rc.d/init.d/portmap start
    [root @server root]# chkconfig --level 35 portmap on
     
    2. ?定 NFS 分享出去:
    [root @server root]# vi /etc/exports
    /home 192.168.10.0/24(rw,async,no_root_squash)
    /disk1 192.168.10.0/24(rw,async,no_root_squash)
    [root @server root]# exportfs -rv
    [root @server root]# /etc/rc.d/init.d/nfs start
    [root @server root]# chkconfig --level 35 nfs on
     
    3. ?定??的???:
    [root @server root]# mkdir -p /cluster/node1
    [root @server root]# mkdir -p /cluster/node2
    [root @server root]# mkdir -p /cluster/node4
    [root @server root]# mkdir -p /cluster/server
     
    Slave:
    1. ?? portmap ?且?定????:
    [root @node1 root]# /etc/rc.d/init.d/portmap start
    [root @node1 root]# chkconfig --level 35 portmap on
     
    2. ?定 NFS 分享出去:
    [root @node1 root]# vi /etc/exports
    /disk1 192.168.10.0/24(rw,async,no_root_squash)
    [root @node1 root]# exportfs -rv
    [root @node1 root]# /etc/rc.d/init.d/nfs start
    [root @node1 root]# chkconfig --level 35 nfs on
     
    3. ?定??的???:
    [root @node1 root]# mkdir -p /cluster/node1
    [root @node1 root]# mkdir -p /cluster/node2
    [root @node1 root]# mkdir -p /cluster/node4
    [root @node1 root]# mkdir -p /cluster/server
     
    ??程序:
     
    Master:
    ?底下?些指令???行一下,如果成功後,?指令?入 /etc/rc.d/rc.local ?中
    [root @server root]# mount -t nfs -o bg,intr server.cluster:/disk1 /cluster/server
    [root @server root]# mount -t nfs -o bg,intr node1.cluster:/disk1 /cluster/node1
    [root @server root]# mount -t nfs -o bg,intr node2.cluster:/disk1 /cluster/node2
    [root @server root]# mount -t nfs -o bg,intr node4.cluster:/disk1 /cluster/node4
     
    Slave:
    ?底下?些指令???行一下,如果成功後,?指令?入 /etc/rc.d/rc.local ?中 [root @node1 root]# mount -t nfs server.cluster:/home /home
    [root @node1 root]# mount -t nfs -o bg,intr server.cluster:/disk1 /cluster/server
    [root @node1 root]# mount -t nfs -o bg,intr node1.cluster:/disk1 /cluster/node1
    [root @node1 root]# mount -t nfs -o bg,intr node2.cluster:/disk1 /cluster/node2
    [root @node1 root]# mount -t nfs -o bg,intr node4.cluster:/disk1 /cluster/node4
     
    呵呵!??就?定成功了!我?每一部主?『看起?』就好像有 400 GB 的硬碟空?啊!可怕了吧! ^_^
     

    --------------------------------------------------------------------------------

    NIS 架???
     
    NIS 的?定也是很??,不?主要?是需要分? NIS Server ? NIS Client ?部份??定的!?注意,在?定之前,就已?要? NFS 搞定喔!?些流程都是有一定程度的相?性的呢!
     
    Master:
    在 Master 上面需要?行的工作很多喔!首先,一定要修改 ypserv.conf 以及其他相?的?案的?!
    1. ?? time ? time-udp ????先要??的 daemon
    [root @server root]# chkconfig --level 35 time on
    [root @server root]# chkconfig --level 35 time-upd on
    [root @server root]# /etc/rc.d/init.d/xinetd restart
     
    2. 建立 NIS 的?域名? (我??是?定? cluster ):
    [root @server root]# nisdomainname cluster
    [root @server root]# echo "/bin/nisdomainname cluster" >> /etc/rc.d/rc.local
    [root @server root]# echo "NISDOMAIN=cluster" >> vi /etc/sysconfig/network
     
    3. 建立 NIS ?定?:
    [root @server root]# vi /etc/ypserv.conf (在???案?增加三行即可)
    127.0.0.0/255.255.255.0 : * : * : none
    192.168.10.0/255.255.255.0: * : * : none
    * : * : * : deny
    [root @server root]# touch /etc/netgroup
     
    4. ?? NIS:
    [root @server root]# /etc/rc.d/init.d/ypserv start
    [root @server root]# /etc/rc.d/init.d/yppasswdd start
    [root @server root]# chkconfig --level 35 ypserv on
    [root @server root]# chkconfig --level 35 yppasswdd on
     
    5. ?作?料?:(每次有更?使用者???,就必?要?行??步?!)
    [root @server root]# /usr/lib/yp/ypinit -m
    [root @server root]# chkconfig --level 35 ypserv on
    [root @server root]# chkconfig --level 35 yppasswdd on
     
    Slave:
    至於 NIS Client ?是需要?定 yp.conf ???案呢!
    1. 建立 NIS 的?域名? (我??是?定? cluster ):
    [root @node1 root]# nisdomainname cluster
    [root @node1 root]# echo "/bin/nisdomainname cluster" >> /etc/rc.d/rc.local
    [root @node1 root]# echo "NISDOMAIN=cluster" >> vi /etc/sysconfig/network
     
    2. 建立 NIS 查?的主?名?:
    [root @node1 root]# vi /etc/yp.conf
    domain cluster
    ypserver server.cluster
     
    3. 修改密???方式:
    [root @node1 root]# vi /etc/passwd (在???案的最底下新增如下一行)
    +::::::
    [root @node1 root]# vi /etc/nsswitch.conf
    passwd: files nis nisplus
    shadow: files nis nisplus
    group: files nis nisplus
    hosts: files nis dns
     
    4. ?? NIS:
    [root @server root]# /etc/rc.d/init.d/ypbind start
    [root @server root]# chkconfig --level 35 ypbind on
     
    呵呵!不?唆!?上就?定妥?啦!
     

    --------------------------------------------------------------------------------

    RSH ?定
     
    ?? RSH 已?提?了,主要的功能是提供 Master 可以使用 R 指令(如 rsh, rlogin, rcp 等等)??行 slave 端主?的操控的!所以啦, RSH daemon 主要是在 slave ?器上面架?的喔!? Master 就??啦!Master 只要能??行 R command 即可!?然是如此,不?,在我的???中,最好 Master 也?? RSH 比?好一些些?!在底下的?定?中,我?假? Server 上面的所有使用者都可以使用 R command 呢!?定的方法很??啊!
     
    Slave & Master:
    底下的?定在 Master ? Slave 上面都需要?作喔!?定一?即可! 1. ?? RSH ?!
    [root @node1 root]# chkconfig --level 35 rsh on
    [root @node1 root]# /etc/rc.d/init.d/xinetd restart
     
    2. ??可使用 R command 的主??定?:
    [root @node1 root]# vi /etc/hosts.equiv
    server.cluster +
     
    特?注意,由於 RSH ??就是不支援 root 使用 R command ,所以您必?要到 master 上面去,?以一般身份使用者?行 R command 的??才行喔!不要直接以 root 工作,??法成功的啦!(?示 permission deny 的啦!)
     
    Master:
    由於 RSH Server 上面的?定中,您的 User 家目?必?要存在一?名? .rhosts 的?案,原本我的 Server 上面就有一?名? test 的使用者,而?且?了?我未?新建立的使用者都能?使用 R command ,所以我在 Master ?部?器上面做了??的?作喔: [root @server root]# vi /home/test/.rhosts
    server.cluster
    [root @server root]# vi /etc/skel/.rhosts
    server.cluster
    [root @server root]# chmod 644 /etc/skel/.rhosts
     
    ??就妥?的?定好了 RSH ?!
     

    --------------------------------------------------------------------------------

    安? Fortran 90 的??程式 PGI pgf90 ( PS. server version )
     
    我由 PGI 的官方?站下?了最新的 PGI Server 套件,?特?留意的是,由於 PGI 有??模式,一?是工作站(Workstation)一??是伺服器(Server)模式,其中,工作站?能提供?一主??操作,?法?行 Cluster 的功能的!因此,??必要下? Server 的版本,?且是支援 Linux 版本的喔!不要搞混了! PGI Fortran Server version 的下??址在??地方:http://www.pgroup.com/downloads.htm,?自行下?吧!比?需要留意的是,?上面???站下?的版本?是分享??的版本,您安?之後可以具有 15 天的免?使用期限,超?期限之後,又需要重新安?一次,很是麻?的啦!如果您的 Cluster 是用??行??研究的,那?在??完成之後,可能需要去他的?站??,????的?用差?可就很大了~因?未?我的 Cluster 需要一直不?的?作,因此是需要去??的啦!?且,我只?用到 Fortran ????器,因此,我就直接使用 PGIHPF ??版本???安?而已,而不是使用全部 ( 含 PGI Fortran ? C ) 的版本喔!因???的?差差了?~三?台?啊!安? Fortran 真是很??的啦!假?您? linux86-HPF.tar.gz 放置在 /root/software 底下,?:(?:以下的?作?只要在 Master 上面?行即可喔!)
      1. 建立 pgi fortran 在 /cluster/server/program/pgi 底下:
    [root @server root]# cd /usr/local/src
    [root @server src]# mkdir pgi-fortran; cd pgi-fortran
    [root @server pgi-fortran]# tar -zxvf /root/software/linux86-HPF.tar.gz
    [root @server pgi-fortran]# ./install
    接下??有一些??,?依序回答您的??喔!
    至於授?嘛!?建立吧!
    最重要的地方,是在第三???,他??你要安?的目?,???
    /cluster/server/program/pgi
     
    2. 修改?人??:由於 RSH 不以 root 工作,所以我以使用者 test ???:
    [root @serer root]# vi /home/test/.bashrc
    # 加入??行?於 PGI 的咚咚:
    PGI=/cluster/server/program/pgi
    export PGI
    PATH=$PGI/linux86/bin:$PATH
     
    3. ?定查?路?:
    [root @server root]# vi /etc/man.config
    # 加入?一行:
    MANPATH /cluster/server/program/pgi/man
     
    ??就好了??!??!??是??就完成了!很是??吧! ^_^要注意的是:
     
    ?得 pgf90 必?要?所有的 node 都能??的到,所以一定要安?在 Server 的分享出去的目??中,我??的例子就是安?在 /cluster/server/program/gpi ??目??中?!
    ?行?要能??行,?然是必?要?目?在 PATH ????底下,而我的 pgf90 是在 /cluster/server/program/pgi/linux86/bin 底下,所以,您的 PATH 必?要含有??目?才行!
     
    大概就是如此?!
     

    --------------------------------------------------------------------------------

    安? MPICH
     
    前面我?提?了,安? MPICH 是平行?算?面最重要的一?工作了!因?我?就是靠他??我??成?作的啊!那?怎??安?呢?又是??得不得了啊!首先,?先下? mpich 吧!下?的?址在底下,我是以 mpich 1.2.5-1a ???的喔!
     
    http://www-unix.mcs.anl.gov/mpi/mpich/download.html
     
    假?您? mpich 下?在 /root/software ?面,?且??要安?到 /cluster/server/program/mpich ?中,而且?安? Fortran 而已的?,可以??做:
      1. 建立 mpich 在 /cluster/server/program/mpich 底下:
    [root @server root]# cd /usr/local/src
    [root @server src]# tar -zxvf /root/software/mpich.tar.gz
    [root @server src]# cd mpich-1.2.5
    [root @server mpich-1.2.5]# ./configure --enable-debug \
    > -fc=pgf77 -f90=pgf90 \
    > --prefix=/cluster/server/program/mpich
    [root @server mpich-1.2.5]# make && make install
     
    2. 建立可以利用的主???:
    [root @server mpich-1.2.5]# cd /cluster/server/program/mpich/share
    [root @server share]# vi machines.LINUX
    node1.cluster:2
    node2.cluster:2
    node4.cluster:2
    server.cluster:2
    # ???案?中,格式? <主?名?>:<主?的 CPU ??>
     
    3. 建立需要的??:(又是以 test ??喔!)
    [root @server root]# vi /home/test/.bashrc
    # 加入?一些?料:
    PATH=$PATH:/cluster/server/program/mpich/bin
    export PATH
    MPI_HOME=/cluster/server/program/mpich
    MPI_ARCH=$MPI_HOME/bin/tarch
    export MPI_ARCH MPI_HOME
    [root @server root]# vi /etc/man.config
    # 加入?一行:
    MANPATH /cluster/server/program/mpich/man
     
    呵呵!??就已?完成了 MPICH 的安???定了!就跟你?很??吧!但是呢,要??可就得需要特?留意了,因? root ??是不?使用 RSH 的,所以??一定要使用一般身份的使用者,??我以 test ??人做???的使用者喔!所以,?以 test 的身份登入主?,?且,?? test 必?要在所有的主?上面都可以被查?的到才行(??考 NIS 的?定喔!)。
      [test @server test]$ cp -r /cluster/server/program/mpich/examples/ .
    [test @server test]$ cd examples
    [test @server examples]$ make pi3f90
    [test @server examples]$ mpirun -np 8 pi3f90
    # 上面那? -np 後面接的就是使用 CPU 的??啦!因?我有 8 ? node ,
    # 所以?然就以最大的 CPU ?????看看,如果要看到底 CPU 有?有??的?,
    # 可以先登入各? slave 的主?,然後?行『 top -d 1 』??察 CPU 的使用率,
    # 再?行上面??程式,就能?知道 CPU 有?有?作了! ^_^
     
    呵呵!?想到 PGI 的?用版本就能?提供多? CPU 的 Cluster ?作,真是?他很高?!??既然可以??成功了,自然就可以去向 PGI 的官方?站??了!???用不低,但是挺值得的啊!

    --------------------------------------------------------------------------------
    其他主?相??定:
    除了一些基本的 Cluster ?定之外,您的主?其?可能?需要其他的?定?目的!最常?的可能就是 X-Window System 的 server/slave 架?了!您?不希望老是呆在 cluster 前面吧?!粉吵的呢!???候,或?就?希望可以在 Client 端?接上 Server 的 X Server ?!
     

    --------------------------------------------------------------------------------

    X-Window Server/Slave 架?
     
    架?一?很??的 X Server 真的是很容易,容易到?你?很想笑出?~在上面的?境?定好了之後,?注意:『您的主???是在 run-level ?三的文字模式底下,也就是?有 X Window 存在』才?!???候,要?定完成 X Server ,?要修改一??案,?且??一支程式即可!先?明一下我的?境:
     
    X Server 主?的 IP 是 192.168.10.30,作?系?是 Red Hat 9;
    X Client 的 IP 是 192.168.10.100 ,作?系?同?是 Linux ? Windows 2000 。
     
    X Server 的?定:
    由於我?需要?????自 X Client 的要求,???候需要重新做一下?定: 1. 先?份原先的?定?:
    [root @server root]# cd /etc/X11/gdm
    [root @server gdm]# mv gdm.conf gdm.conf.bak
     
    2. ???定?,只要底下?行即可!
    [root @server gdm]# vi gdm.conf
    [xdmcp]
    Enable=1
     
    3. ?? gdm :
    [root @server gdm]# gdm
    [root @server gdm]# netstat -uln
    udp 0 0 0.0.0.0:177 0.0.0.0:*
    # 如果有出?上面?行就?了!
    [root @server gdm]# echo "/usr/bin/gdm" >> /etc/rc.d/rc.local
    # 上面?行在?定????? gdm ?!
     
    X Client 的?定(在 Linux 上面):
    如果您的 X Client 同?是 Linux ,那?:『在?目前?? Client 端?接到 X Server 端?行 X ?窗』的功能,只要?行??步?就可以了! 0. ??必要在 X Window ?中,?入 X Window 的方式有:
    [root @client root]# startx

    [root @client root]# init 5
     
    1. 在 X Window 的?面?中,?用一? shell ,然後?入:
    [root @client root]# xhost + 192.168.10.30
    192.168.10.30 being added to access control list
    [root @client root]# init 3 (?? X Window)
    2. 在文字介面下?入:
    [root @client root]# X -query 192.168.10.30
    .....(?入 X Window ?!)

     
    X Client 的?定(在 Windows 上面):
    如果您的 X Client 是在 Windows 上面,那?就必?要?外的??行其他的??了!目前您可以???? Exceed ??????,或者是先『?用』 X-Win ????!都是用在 Windows 上面模??接到 Linux X Server 用的??啦!我??是以 X-Win ?套程式做?介?的,您可以在各大?的 FTP ?站上面捉到????,?然,也可以在我??下? 5.4 版。
    http://linux.vbird.org/download/#x-win54
     

    在 Windows 上的安?步?,就是?行他即可啊!然後一直?他下一步就是了!
     
    ?行 X-Win32 ??程式,在出?如下的?示後,按下 Evaluation ???用按?;

     
    按下??按?;

     
    在右下角的小?示?中,例如: ?他按下那? X ?,就?出?如下的?示:

     
    按下 Add 之後,?出?如下的?示:

     
    上面?? XDMCP ???目,然後?? Next 之後,?出?:

     
    重要的地方在於 Query ????,以及 192.168.10.30 ?? IP 指向喔!都?定好之後,?他 Save 一下,?出?:

     
    上面的?示?中,?他按下?定吧!然後呢?在右下角的 X 小?示中 ( ) 按一下 X 之後,就?出???我?建立的 My Linux X Server ????,?他??下去的啦,呵呵!就?出??:

    很棒吧!??就能在 Windows 上面???入 Linux 使用他的 X Window 功能?!
     
    後?:?然架?一? X Server/Client 是很??的一件事,不?,如果您的?器?不是在 LAN ?面的?,而是在 Internet 上面?行 Server/Client 的 X 系?架?的??,?特?留意的是,由於 X Window 的?形介面需要一直???形到您的工作?上面?,如此一?,???耗掉大部分的??喔!在我的??案例?中,??到我的 X Server/Client 之?流量???到 2000 Kbits/second, 亦即是 250KBytes/second ,??得流量的算法吧?!如果是 ADSL ?接架?的?,目前已??常? 下?/上? = 1.5M/386K 的??速度,不?,即使下??到 1.5M 了,不?在我的案例中竟然高?了 2.0M 的??!呵呵!?解吧!所以?,?? X Window 的 Server/Client 架???必在?部?路架?就好,不要想?上 Internet 啊!?等的快睡著.....

    --------------------------------------------------------------------------------
    重?回?
    Cluster 可以是平行?算的一?,主要除了? CPU 系?外,也可以用在多主?架?下的一?增快?值?算的方式;
    平行?算的 Cluster 主要是藉由主?的架?去?行的,其主要的?定都在 Master 上面?定的, Slave 主要是?算功能而已,
    Cluster 上面相?重要的地方在於 NFS 的?定,因? Master/Slaves 都需要?取同?的?料,所以 NFS 分享的?案?料就?其重要了;
    除了 NFS 之外,?需要 MPI ??平行?算的函式?之安?,有了 MPI ,Cluster 才能真的?作起?;
    在 Cluster ?中,所有的主?之指令的?通主要亦?? RSH 的?作;

    --------------------------------------------------------------------------------
    ?考?源
    Marty's Linux Cluster 架?日?:http://web.csie.chu.edu.tw/~cs87668/cluster.htm
    ?裕麟先生的小文章:http://www.se.ntou.edu.tw/~ylchang/MyDocuments/MPICH-ins.txt
    ?家高速??中心:http://binfo.ym.edu.tw/edu/seminars/200201.files/frame.htm
    MPICH官方?站:http://www-unix.mcs.anl.gov/mpi/mpich/
    ?易 Cluster 架?

  17. baizx 于 2009-08-10 10:54:30发表:

    ?易 OpenWebMail ?定


    前言

    ?子?件?於一般人??,是越?越重要了,像?哥通常就是使用?子?件?跟大部分的朋友??, 而且,重要的文件?公事也?乎是使用?子?件???的呢!而在一般的?人??上面,我?通常是使用?似 Outlook express/Netscape/Mozilla 之?的 Client 端??,?透? POP3/SMTP ?定?收?信件。

    不?,?憾的是,?子?件其??不安全!??在一些 安全通? 上面就可以查?的到了,不?是 MTA/MUA 都可能有漏洞的!而且,除了漏洞??之外,更麻?的是,?告信件的大量?行, 造成我?用?端的??浪?,真的是很??!但是,?子?件又是??的重要, 不能不收??子?件啊!那怎??????候我?就可以使用 Web 介面的 MUA ??行?子?件的收?啊!

    那??? webmail 的地位是甚?呢?是否只要有 webmail 就不需要 mail server 了呢??然不是??!webmail 其?可以被?成是一? MUA ?看待,也就是?,您可以?他想成? outlook express 同等?的?用??;而透??? webmail 我?可以? mail serve r?行?子?件的存取。也就是?, webmail 要能?使用,必?要架?在具有 WWW 及 Mail Server 的服?上面才行!??者之?的??可以??的??看:

    Server 端 Client
    -------------------------
    | Apache/Webmail<---|<---- Mozilla/IE(??器)
    | | |
    |<---SMTP-----| |
    | | |
    | /var/spool/mail/accout |
    `-------------------------'
    也就是?,? Client 端以??器登入主?後,主?透? webmail 提供的服?,?登入的使用者可以?取?主??自己的?件,?且,也可以透?主?的 smtp ?定??行?件的寄?!


    --------------------------------------------------------------------------------
    架?前?知

    如同前面的?明,webmail 要能?正?的?作,其??需要 www/mail ???服?的存在才行!此外,由於 webmail 需要能?正?的存取主??的?件?案 (/var/spool/mail/account),所以,我?必?要提供 webmail 足?的?力?存取才行。因此,您必需要?定:

    WWW Server (Apache) 已??利?作;
    Mail Server (Postfix/sendmail) 已??利?作;
    webmail 要求的前置??必?已?安?:例如 openwebmail 需要 perl / suidperl / perl(CGI) / perl-Text-Iconv / perl-Compress-Zlib 等等的套件呢!其中 suid 方面的??,?是提供 webmail 存取?力的套件。
    所以?,在您架? webmail 之前,?先??您的主?提供的 WWW/Mail 服?是正???的!此外,前?套件也必?要?有??的安?才行!

    底下我?以目前相???,?且是由台?成大博士董仲?主??起的 Openwebmail ??套件??行安?!??西很不?喔!您可以在底下的???中下?? Red Hat/Fedora 有?的 RPM ?案:
    http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/packages/
    或者是下?原始?案 (tarball):
    http://turtle.ee.ncku.edu.tw/openwebmail/download/release/
    底下?哥?以 FC1 及 Mandrake 10.0 作???的基??安? openwebmai 喔!

    --------------------------------------------------------------------------------
    OpenWebMail 的安?:

    因? openwebmail 本身就有?? Red Hat/Fedora ?出 RPM ?案,所以我??然就直接以??好的 RPM ?案?安?即可!那如果是非 Red Hat/Fedora 怎??????,可以使用原始??安?啊!


    --------------------------------------------------------------------------------
    FC1 的 RPM 安?

    ?先?定 Postfix 或者 sendmail 已?安?完?,此外, Apache 也已?安?好了!如果想要快速的架?好您的 Postfix + SASL ??的?,可以??做:(更??的???查?: http://linux.vbird.org/linux_server/0390postfix.php)
    # 0. 先?定所有的套件都已?安?了,主要有:
    postfix-2.0.16-1
    cyrus-sasl-2.1.15-6
    cyrus-sasl-md5-2.1.15-6
    cyrus-sasl-devel-2.1.15-6
    cyrus-sasl-plain-2.1.15-6
    如果?有忘??上去的,????的安?啊!?且,?移除底下的套件
    sendmail
    fetchmail
    mutt

    # 1. 先?定一下 /usr/lib/sasl2/smtpd.conf 存在,且?容?:
    pwcheck_method: saslauthd

    # 2. ?定一下 /etc/sysconfig/saslauthd ?容?:
    MECH=shadow

    # 3. ?定一下 main.cf ?面有:
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_local_domain=
    smtpd_recipient_restrictions =
    reject_unknown_sender_domain
    reject_unknown_recipient_domain
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination
    smtpd_client_restrictions =
    permit_mynetworks
    hash:/etc/postfix/access
    permit_sasl_authenticated
    reject_rbl_client relays.ordb.org
    reject_rhsbl_client dsn.rfc-ignorant.org
    smtpd_sasl_security_options = noanonymous

    # 4. 然後?? saslauth 及 postfix ??就可以啦!


    然後,?先下? FC1 所需要的前?套件,???至: http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/packages/fc1/ 下?所有的 RPM 套件,然後再安? openwebmail 2.40 版,整?安?流程: 1. 安? openwebmail :
    [root@test root]# rpm -ivh perl* # 假?所有的RPM都放在 /root 底下。
    [root@test root]# yum update
    # ???作?只是要升???的套件而已;

    [root@test root]# rpm -ivh openwebmail-2.40-1.i386.rpm
    # 注意:在??的情?下, openwebmail ???案?料安?至? apache 有?的路?
    # 也就是 /var/www/data ? /var/www/cgi-bin 底下,所以,如果您已?? apache
    # 以 tarball 方式安?,?致?有不同的 WWW Root 路??,最好使用 tarball
    # ?安?您的 openwebmail 啊!

    2. 初始化?定:
    [root@test root]# cd /var/www/cgi-bin/openwebmail
    [root@test openwebmail]# ./openwebmail-tool.pl --init
    # 因? openwebmail 支援相?多????制,因此,我?必?在使用 openwebmail
    # 之前,先? openwebmail 的相??定做好!上面 openwebmail-tool.pl --init
    # 就是在?成??的目?。此外,??步???行??的一段??喔!?耐心等候!

    [root@test openwebmail]# cd etc
    [root@test etc]# vi dbm.conf
    # 找到?修改成底下?行:
    dbm_ext .db
    dbmopen_ext .db
    dbmopen_haslock yes
    [root@test etc]# cd ..
    [root@test openwebmail]# ./openwebmail-tool.pl --init
    Welcome to the Open WebMail!

    This program is going to send a short message back to the developer,
    so we could have the idea that who is installing and how many sites are
    using this software, the content to be sent is:

    OS: Linux 2.4.22-1.2199.nptl i686
    Perl: 5.008003
    WebMail: Open WebMail 2.40 20040816

    Send the site report?(Y/n)
    sending report...

    Thank you.


    3. ?一步?定:
    [root@test openwebmail]# cd etc
    [root#test etc]# vi openwebmail.conf
    # 找到?一行:
    default_language en
    # 改成??子:
    default_language zh_TW.Big5


    一般??,?定成??就足?您?作 openwebmail 了,不?,您的 WWW 主?必?要能提供 perl 的?行?境,因? openwebmail 就是以 perl ?成的啊!以 apache ?例,您必?要知道如何?? perl 的 CGI ?行?境: [root@test root]# vi /etc/httpd/conf/httpd.conf
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

    AllowOverride None
    Options None
    Order allow,deny
    Allow from all

    AddHandler cgi-script .cgi .pl


    至少上面的?定要?定妥?才行啊!好了,那?如何使用 openwebmail 呢?直接在您的??器上面?入:
    http://your.linux.server/cgi-bin/openwebmail/openwebmail.pl
    就可以使用 openwebmail ?!很??吧!不?,如果?一您的??一直?法成功的?,可以指定一下???制看看: [root@test root]# cd /var/www/cgi-bin/openwebmail/auth
    [root@test auth]# vi auth_unix.pl
    # 找到底下:
    my $passwdfile_plaintext = $conf{'passwdfile_plaintext'} || '/etc/passwd';
    my $passwdfile_encrypted = $conf{'passwdfile_encrypted'} || '/etc/master.passwd';
    # 改成??:
    my $unix_passwdfile_plaintext="/etc/passwd";
    my $unix_passwdfile_encrypted="/etc/shadow";

    # 或者是修改底下???案成?:
    [root@test root]# vi \
    /var/www/cgi-bin/openwebmail/etc/defaults/auth_unix.conf
    # 其?容只需?
    passwdfile_encrypted /etc/master.passwd
    # 改?
    passwdfile_encrypted /etc/shadow
    # ??就算完成了。




    --------------------------------------------------------------------------------
    MDK10.0 的 Tarball 安?

    如果您是使用 MDK 作?您的 Linux 系??,由於 OpenWebMail ??有????作?系???? RPM ?案,所以,??我?以 Tarball ??行安?。首先,?先??一下您的 Postfix ? Apache 已?安?妥?。底下我?就完整的??一??!(同?的,更??的 Postfix + SASL 的 SMTP 身分?????查?: http://linux.vbird.org/linux_server/0390postfix.php ) # 0. 先?定一下底下?些套件都已?安?了(使用 rpm 的方式?安?的)
    [root@test root]# rpm -qa | egrep '(sasl|postfix|imap)'|sort
    cyrus-sasl-2.1.15-10mdk
    imap-2002d-8mdk
    libpostfix1-2.1.1-0.1.100mdk
    libsasl2-2.1.15-10mdk
    libsasl2-devel-2.1.15-10mdk
    libsasl2-plug-anonymous-2.1.15-10mdk
    libsasl2-plug-login-2.1.15-10mdk
    libsasl2-plug-plain-2.1.15-10mdk
    postfix-2.1.1-0.1.100mdk
    # 若?有安?任何一?套件,?使用 urpmi ?安?喔!
     
    # 1. 建立 saslauthd ???制? smtp ???案:
    [root@test root]# vi /etc/sysconfig/saslauthd
    #SASL_AUTHMECH=pam
    SASL_AUTHMECH=shadow
    # 事?上,就是????制修?成? shadow 就是了。
     
    [root@test root]# mkdir /etc/postfix/sasl
    [root@test root]# vi /etc/postfix/sasl/smtpd.conf
    pwcheck_method: saslauthd
    mech_list: plain login
    # ?一版的 postfix 比?奇怪,他的???案??就是放置在??喔!

    # 2. 修? postfix 的?定? master.cf:
    [root@test root]# vi /etc/postfix/master.cf
    # 找到??:
    smtp inet n - y - - smtpd
    # 改???:
    smtp inet n - n - - smtpd

    # 3. 修? postfix 的?定? main.cf:
    # 基本上,?容就有??似底下??:
    # Postfix 在 MDK 10.0 底下的???定?料:
    readme_directory = /usr/share/doc/postfix-2.1.1/README_FILES
    sample_directory = /usr/share/doc/postfix-2.1.1/samples
    html_directory = /usr/share/doc/postfix-2.1.1/html
    sendmail_path = /usr/sbin/sendmail.postfix
    setgid_group = postdrop
    command_directory = /usr/sbin
    manpage_directory = /usr/share/man
    daemon_directory = /usr/lib/postfix
    newaliases_path = /usr/bin/newaliases.postfix
    mailq_path = /usr/bin/mailq.postfix
    queue_directory = /var/spool/postfix
    mail_owner = postfix
     
    # 使用者的?定?料!
    mynetworks_style = host
    delay_warning_time = 4h
    smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) (Mandrake Linux)
    unknown_local_recipient_reject_code = 450
    smtp-filter_destination_concurrency_limit = 2
    lmtp-filter_destination_concurrency_limit = 2
    smtpd_sasl_path = /etc/postfix/sasl:/usr/lib/sasl2 # <== 就是?一行
    smtpd_sasl_application_name = smtpd
    relayhost = [seed.net.tw]
    #上面?行很重要,如果想要以?? IP 架站,就需要 ISP 的 relay host 才行!
    #???料??考:(因?我的主?在seednet底下,所以....)
    # http://phorum.study-area.org/viewtopic.php?t=18621
    # http://phorum.study-area.org/viewtopic.php?t=22806
    myhostname = hostname.domain.name # <==????入您的主?名?
    mydomain = domain.name # <==???是?域名?
    myorigin = $myhostname
    inet_interfaces = all
    mydestination = $myhostname
    mynetworks = 127.0.0.0/8
    alias_maps = hash:/etc/postfix/aliases
    alias_database = hash:/etc/postfix/aliases
    mail_spool_directory = /var/spool/mail
    debug_peer_level = 2
    debugger_command =
    PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
    xxgdb $daemon_directory/$process_name $process_id & sleep 5
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_local_domain =
    smtpd_recipient_restrictions =
    reject_unknown_sender_domain
    reject_unknown_recipient_domain
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination
    smtpd_client_restrictions = hash:/etc/postfix/access, permit_sasl_authenticated,
    reject_rbl_client relays.ordb.org,
    reject_rhsbl_client dsn.rfc-ignorant.org
    smtpd_sasl_security_options = noanonymous
    notify_classes = resource, software
    message_size_limit = 31457280
    mailbox_size_limit = 1000000000
    header_checks = regexp:/etc/postfix/header_checks
    body_checks = regexp:/etc/postfix/body_checks

    # 4. 其他相?的?案:
    /etc/postfix/access
    /etc/postfix/header_checks
    /etc/postfix/body_checks
    /etc/postfix/aliases
    # 相??定??考上面提供的??啊!

    # 5. ?始??:
    [root@test root]# /etc/rc.d/init.d/saslauthd start
    [root@test root]# /etc/rc.d/init.d/postfix start


    ??就完成了 Postfix 的安???定,再接下??是 Apache 的安???定了。 # 0. 利用 urpmi ?安?所需要的所有的套件!
    [root@test root]# urpmi apache2 php MySQL
    Preparing... ###########################################
    1:libmysql12 ###########################################
    2:libapr0 ###########################################
    3:apache-conf ###########################################
    4:apache2-common ###########################################
    5:perl-Data-ShowTable ###########################################
    6:perl-Mysql ###########################################
    7:apache2-modules ###########################################
    8:apache2 ###########################################
    9:libphp_common432 ###########################################
    10:perl-CGI ###########################################
    11:MySQL-client ###########################################
    12:MySQL-common ###########################################
    13:php-ini ###########################################
    14:apache2-mod_php ###########################################
    15:MySQL ###########################################
    # 因?我再最早安??,??有?? WWW ,所以要安?的?料就很多!
    # 另外,?您做好 urpmi 的?定才行!

    # 1. ?始?? httpd ?!
    [root@test root]# /etc/rc.d/init.d/httpd start

    # 2. ? MySQL 在???不?自???, httpd ??自???!
    [root@test root]# chkconfig httpd on
    [root@test root]# chkconfig mysql off
    [root@test root]# chkconfig --list | grep 3:on
    httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off


    千?注意,我?目前??有要使用 MySQL 的??,所以,?然就要? MySQL ?他??啦!而 httpd ?是需要在??的?候就?以??才行, 所以上面的第二?步?才需要如此的?定喔!?在,您就可以在您的?址列?入您的主?名?,看看能不能?? http 提供的 WWW 服?呢?!

    ?在,?注意,??的??下, MDK 10.0 的 WWW 主??是放置在 /var/www/html 底下的,但是 MDK ??有??的 data 目?,所以我?就必?要?予?定啦!您可以??做: # 0. ? openwebmail 解??,?且移?到??的目?下:
    [root@test root]# cd /usr/local/src
    [root@test src]# tar -zxvf /disk1/software/openwebmail-2.40.tar.gz
    [root@test src]# cd cgi-bin/
    [root@test cgi-bin]# mv openwebmail/ /var/www/cgi-bin/
    [root@test cgi-bin]# cd ..
    [root@test src]# rmdir cgi-bin
    [root@test src]# mv data/openwebmail /var/www/html/openwebmail_data
    [root@test src]# rmdir data
    # 同??注意,您的主?上面必?要有 perl 模?的存在了才行!
    # 我的 perl 模?有底下??多:
    perl-MailTools-1.59-2mdk
    perl-Crypt-SSLeay-0.51-3mdk
    perl-Term-Readline-Gnu-1.14-5mdk
    perl-Digest-SHA1-2.04-1mdk
    perl-Mysql-1.22_19-9mdk
    perl-MDK-Common-1.1.11-2mdk
    perl-HTML-Parser-3.35-2mdk
    perl-File-Slurp-2002.1031-3mdk
    perl-Tk-800.024-4mdk
    perl-SGMLSpm-1.03ii-6mdk
    perl-SDL-1.20.0-8mdk
    perl-ldap-0.31-2mdk
    perl-Glib-1.021-3mdk
    perl-Gtk2-1.023-3mdk
    perl-IO-Tty-1.02-9mdk
    perl-Gtk2-TrayIcon-0.03-3mdk
    perl-Authen-SASL-2.04-2mdk
    perl-Locale-gettext-1.01-11mdk
    perl-TimeDate-1.16-3mdk
    perl-HTML-Tagset-3.03-7mdk
    perl-URI-1.25-1mdk
    perl-Gnome2-Vte-0.02-1mdk
    perl-devel-5.8.3-5mdk
    perl-XML-SAX-0.12-3mdk
    perl-Convert-ASN1-0.16-4mdk
    perl-Data-ShowTable-3.3-9mdk
    perl-5.8.3-5mdk
    perl-DBI-1.40-2mdk
    perl-Libconf-0.33-2.1.100mdk
    perl-XML-Parser-2.34-1mdk
    perl-CGI-3.00-2mdk
    perl-URPM-0.94-11mdk
    perl-Expect-1.15-6mdk
    perl-Digest-HMAC-1.01-11mdk
    perl-base-5.8.3-5mdk
    perl-libwww-perl-5.76-3mdk
    perl-XML-NamespaceSupport-1.08-3mdk
    # 另外,也需要加入??必要的模?,您可以使用 FC1 的相??案,下??:
    # http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/packages/fc1/
    # rpm -ivh perl-Text-Iconv-1.2-fc1.i386.rpm perl-Compress-Zlib-1.16-12.i386.rpm
    # ??就可以啦!

    # 1. 初始化?定:
    [root@test root]# cd /var/www/cgi-bin/openwebmail
    [root@test openwebmail]# ./openwebmail-tool.pl --init
    # 因? openwebmail 支援相?多????制,因此,我?必?在使用 openwebmail
    # 之前,先? openwebmail 的相??定做好!上面 openwebmail-tool.pl --init
    # 就是在?成??的目?。此外,??步???行??的一段??喔!?耐心等候!
    [root@test openwebmail]# cd etc
    [root@test etc]# vi dbm.conf
    # 找到?修改成底下?行:
    dbm_ext .pag
    dbmopen_ext none
    dbmopen_haslock yes
    [root@vbird etc]# vi openwebmail.conf
    # 找到?修改成底下?行:
    domainnames auto
    auth_module auth_unix.pl
    mailspooldir /var/spool/mail
    ow_cgidir /var/www/cgi-bin/openwebmail
    ow_cgiurl /cgi-bin/openwebmail
    ow_htmldir /var/www/html/openwebmail_data
    ow_htmlurl /openwebmail_data
    logfile /var/log/openwebmail.log
    [root@test etc]# cd ..
    [root@test openwebmail]# ./openwebmail-tool.pl --init

    creating db /var/www/cgi-bin/openwebmail/etc/maps/b2g ...done.
    creating db /var/www/cgi-bin/openwebmail/etc/maps/g2b ...done.
    creating db /var/www/cgi-bin/openwebmail/etc/maps/lunar ...done.
    Welcome to the Open WebMail!

    This program is going to send a short message back to the developer,
    so we could have the idea that who is installing and how many sites are
    using this software, the content to be sent is:

    OS: Linux 2.6.3-14mdk i686
    Perl: 5.008003
    WebMail: Open WebMail 2.40 20040816

    Send the site report?(Y/n) y
    sending report...

    Thank you.

    # 2. 修????制:
    [root@test root]# vi /var/www/cgi-bin/openwebmail/auth/auth_unix.pl
    # 找到:
    my $passwdfile_encrypted = $conf{'passwdfile_encrypted'} || '/etc/master.passwd';
    # 修改成:
    my $passwdfile_encrypted = '/etc/shadow';

    # 或者是修改底下???案成?:
    [root@test root]# vi \
    /var/www/cgi-bin/openwebmail/etc/defaults/auth_unix.conf
    # 其?容只需?
    passwdfile_encrypted /etc/master.passwd
    # 改?
    passwdfile_encrypted /etc/shadow
    # ??就算完成了。


    然後?到您的主?:http://hostname/cgi-bin/openwebmail/openwebmail.pl ,就能?看到您的 OpenWebmail ?!同?,如果?是?法看到相?的咚咚,?查?您的登??!

    --------------------------------------------------------------------------------
    一些其他的?定:

    除了既有的?定之外,如果您想要其他的?定?,??提供????的?定: # 1. ?路硬碟:
    如果不想提供?路硬碟的?,可以在底下的?案:
    /var/www/cgi-bin/openwebmail/etc/openwebmail.conf
    加入?行:
    enable_webdisk no

    # 2. 提供 ssh ??:
    如果不想提供?路??的?,可以在底下的?案:
    /var/www/cgi-bin/openwebmail/etc/openwebmail.conf
    加入?行:
    enable_sshterm no

    # 3. ?登入更??:
    如果不想在?址列?入??的一段文字,可以修改成?:
    vi httpd.conf (?依照您的系??修?!)
    ScriptAlias /webmail /var/www/cgi-bin/openwebmail/openwebmail.pl
    or
    ScriptAlias /webmail.pl /var/www/cgi-bin/openwebmail/openwebmail.pl
    然後重新?? apache ,如此一?,您可以在?址列?入:
    http://hostname/webmail or http://hostname/webmail.pl
    就可以?入 openwebmail ?!




    --------------------------------------------------------------------------------
    ???解?

    ?是?法?行 openwebmail:

    一般??,安?好 openwebmail 之後,??是立即可以使用了,不?,如果您一直?法?入 openwebmail 的?迎?面,那??特?留意:


    在 openwebmail.conf ???定??中,是否填?了??的???制(auth_unit.pl);
    在 auth_unix.pl ???定??中,是否填?了正?的密????案?
    您的 WWW 是否提供 perl 的 CGI ?行?境?
    仔?查? /var/log/httpd/error_log 及 /var/log/openwebmail.log ?解???!


    ?自???的?友留言
    ?哥好:
    最近?好在? openwebmail,拜?主站上的文件安?下去,
    ??有一些部份在安??可能需要?外注意的,在此提供?您。
    我的 distribution 是用 MDK 9.2,因此我是照 MDK 10.0 的
    Tarball 安?作下去的,不?我的 postfix + LAMP 是用 rpm
    ?的,因此我直接跳到 openwebmail 安?。

    文中提到:
    ?在,?注意,??的??下, MDK 10.0 的 WWW
    主??是放置在 /var/www/html 底下的,但是 MDK
    ??有??的 data 目?,所以我?就必?要?予?定啦!
    您可以??做:

    但我在 ./openwebmail-tool.pl --init ?仍?碰到要找
    /usr/local/www 底下的 cgi-bin 的情形,所以???是要
    ln -s /usr/local/www /var/www

    另外,文件中下? ./openwebmail-tool.pl --init ?次,
    但事?上第一次?行?系??告?我 dbm.conf 的??不?,
    所以我????先改 dbm.conf 再?行即可?

    以上是我粗?的看法,其?不管怎??,可以正?的初始化才是重?。

    最後是安?後不能改密?的??,研究後??在
    cgi-bin/openwebmail/etc/defaults/auth_unix.conf
    除了更改 passwdfile_encrypted 外,也要? passwdmkdb ?定成none 才行。

    ???是我安????相?之?,提出?供?哥?考。也???哥文件的分享。




    --------------------------------------------------------------------------------
    ?考?源

    OpenWebMail 的下?: http://turtle.ee.ncku.edu.tw/openwebmail/download/
    OpenWebMail 台?主站: http://turtle.ee.ncku.edu.tw/openwebmail/
    Ultraman 的 OpenWebMail ?作: http://linux.vbird.org/somepaper/20030317-openwebmail.php

  18. baizx 于 2009-08-10 10:53:52发表:

    ?易 APT/YUM 伺服器?定

    前言:
    如果您曾?自行安??某些套件的?,那?您或???得:『RPM 是比 Tarball 好安??有?啦,但是每次?了解?套件之?的?性相依??,真的是很?,尤其是 RPM ?案在不同的作?系?版本之?也?法相容!』是的!??!?了要解???套件之?的?性相依??,又要保留 RPM 套件的易安??查?的特性,所以就有一些套件管理方法出?啦!比?有名的就是 APT ? YUM ???咚咚啦。(?:?然,Mandrake 的 urpmi 也是很棒的工具。)
     

    --------------------------------------------------------------------------------
    甚?是 APT/YUM 呢?他?如何?作?
     
    ?所皆知的, RPM 是目前 Linux 世界?面用的最多的套件安?方式。不?,由於 RPM 所管理的套件在安?的?候必?要考?到不同套件之?的相依性,?在系?管理??理系?的升?/更新上面是很??的!?了克服????,所以有 APT/YUM 之?的??出?。APT ( Advanced Package Tool ) 最早是由 debian ?? distribution 所?展出?的,而 YUM ( Yellow dog Updater, Modified ) ?是由 Duke University 所?起的??之一,??者的目的都是『?了要解?安? RPM 套件?的?性相依??!』,而不是?外再建立一?套件安?模式喔。首先,我??一??甚? RPM 套件?有?性相依的???又,甚?是?性相依的??啊?
     
    ?性相依的??大多?自於函式?的引用,?例??,我?前面 SSH ? Telnet 伺服器章?中提到的 SSH 伺服器需要使用到 SSL ??套件的加密?制,所以自然就需要 SSL 的函式?,???候,如果您?有安? SSL 的?,那? SSH 就不??您安?了!?就是?性相依的??啦。也就是?,?我?要安? A 套件,?果 RPM 套件管理?告?你?需要 B 套件,而安? B 套件?,?又???缺少 C 套件~真是??相扣啊!??死了~
     
    要知道某?套件的最低要求是哪些套件?,可以使用 rpm -qR packagename ,至於某?套件提供哪些?案?可以使用 rpm -q --provides packagename 。?些??都??在 RPM 套件?面。
     
    如果?於 RPM ?有疑?,??考基???篇的 RPM ? SRPM 那?章??。好了,既然每一? RPM 套件的?? (header)?面都????套件的?性相依??,那?如果我?可以????的?容??下??且?行分析,不就可以得知每?套件在安?之前需要?外安?哪些基?套件??也就是?,我?在伺服器上面先以分析工具?所有的 RPM ?案?行分析,然後??分析??下?,只要在?行安?或升??先查????的?案,就可以知道所有相??的套件?案!??!是??。他的整??作流程有?像??:
     
    伺服器端:
    首先,在 APT/YUM 伺服器上面放置了所有的 RPM 套件(?包括?自原版光碟?供?商?行的??套件);
    然後以相?的功能去分析各? RPM ?案的相依性,?些??可以解?所?的?性相依??,然後??些?料??成?案存放在伺服器的某特定目??;
     
    客?端:
    Client 端如果需要安?/升?/?除某?程式?,?先下?伺服器上面??的?性相依?案(利用的?定?是 WWW 或者是 FTP);
    ?由比?伺服器端??的???料?行分析,然後取得所有相?的套件,一次全部下?下??行升?安?。
     
    如此一??克服了?性相依的???!是的!就????啊!整??示如下:

    ?一、APT/YUM 伺服器的架?。
    您的 APT/YUM 伺服器上面可以?有多?版本的 Linux distributions 的 RPM 套件,?且需要提供 WWW/FTP 等服?,而 Client 端?是藉由主?的 WWW/FTP 等?定??行 RPM ?案的取得喔。
     

    --------------------------------------------------------------------------------
    是否需要架? APT/YUM 伺服器
     
    APT/YUM 的功能也只是在管理 RPM 套件而已,只是他比??的 RPM 指令要好的地方在於他克服了?性相依的??,所以用?端可以很方便的?行安?/升??移除的?作。那?是否意味著我就得要架? APT 或 YUM 伺服器呢?
     
    ?可不一定?。如果您只有一部主?,而且上面的?路服?很少,?且也?有提供甚?重要的服?,那?架? APT/YUM 伺服器就?有??需要了。?甚?呢?因?很少用到 APT 的?制啊,而且直接找?路上面有的 APT/YUM 伺服器即可,??架?啦!要注意的是,架? APT/YUM 伺服器?,您必?要有?用的硬碟空?、?用的??以及提供至少 WWW 或者是 FTP 的?路服?呢!??只有一部主?的您??,真的不必要?心思去管理的啦!但如果您的?路?境是如下的模?,可能就得要架?一部 APT/YUM 伺服器比?好?!
     
    您的?路?面有相?多的同?版本的 Linux distribution 系?;
    您的?域?路?外??不高,且?部有多部 Linux 主?系?;
    您的 Linux distributions 在????有相??的 APT/YUM 伺服器提供服?,而??外??的??又很低?;
     
    也就是?,如果您?有多部 Linux 主?,或者是您?接到 APT/YUM 伺服器的??太低?,就可以考?架? APT/YUM 伺服器了。以上面?一??,如果您的?外?路??太低,那?架?一部 APT/YUM 伺服器後,所有的 Linux 是?接到?部 APT/YUM 伺服器?行升?/安?,速度?然比?外要快很多啦!
      
    所以?,如果您是上?的系?管理?(例如?校的?管老?或者??、??的?管人?),?了您的整??域的 Linux 主??打算,那?架? APT/YUM 是?需要的,因?真的可以?省很多?外的??;相反的,如果您是一般用?,?有的了不起就是?三部 Linux 主?而已,那?似乎?有架? APT 主?的必要性呢!因?由上面的?明?看,架? APT 主?所需要的『硬碟空?』可是不能省的,?於一般的用???,架? APT 主??在是?有什?必要性?~
     

    --------------------------------------------------------------------------------
    架?之前,您所需要?用的服?
     
    就如同前面的?明,您要架? APT/YUM ?,?先?得在您的 APT/YUM 主?上面?用 WWW 或者是 FTP 服?了才行!因? APT/YUM 是利用 WWW/FTP ??行 RPM ?案在 Server ? Client 之?的?送的!此外,您的 APT/YUM 主?上面最好?最靠近您主?的 Linux 版本更新套件的?站?定?映射站台 ( mirror ),如此一?,您就可以?系?自?的更新您的 Linux distributions 所需要的更新?案,而不必手??更新呢!
     
    此外,由於完整的 APT/YUM 伺服器包含了原本的 Linux distributions 的原版光碟?容,所以需要的硬碟空?是很高的!至少需要 3~5 GB 以上,最好能?有 10GB 以上的硬碟空?。
     
    好了,底下我?就??始安???定 APT/YUM 伺服器吧!

    --------------------------------------------------------------------------------
    APT 伺服器:
    底下?始??一? APT 伺服器吧!
     

    --------------------------------------------------------------------------------
    APT 伺服器利用的?制
     
    就如同前言?明的, APT 主?可以?已?存在的 RPM ?案?行分析,?且?各?套件的相????下?,以便?使用者依???套件的相?性???案?更新?安?他?的 Linux 系?。那??些?案放在哪?呢?其?因??些?案被需要? Client 端可以下?,而且 APT ?不是?外再?用其他的 port ,而是透? WWW 或者是 FTP 的方式?? Client 端下?的,所以 APT 的 RPM ?案?然就需要放在可以? WWW 或者? FTP ?存取的目??!
     
    在很多 Linux distributions 的 WWW ??主?是放在 /var/www/html ??目?下的( 例如 Red Hat 9, Fedora Core I/II, Mandrake 等等 ),所以,除非您想要自行架???主?,或者是利用???的方式?? RPM ?案放置的目?可以? WWW ?取,否?您都??要? APT 管理的 RPM ?案放置在 /var/www/html 底下。假?我有?? Linux 的版本要?部 APT 主?管理?,一版是 Mandrake 9.1 一版是 Red Hat 9 ,那?我可以???排我的 RPM ?案放置的目?:
     
    表一、APT 主?相? RPM ?案放置的目?示意表 /var/www/html/apt/redhat9
                 |--RPMS.os
                 |--RPMS.updates
                 |--SRPMS.os (非必?目?)
                |--SRPMS.updates (非必?目?)
                `--base
                   |--pkglist.os.bz2
                   |--pkglist.updates.bz2
                   |--release
                   |--release.os
                   `--release.updates
    /var/www/html/apt/mdk9.1
                |--RPMS.os
                |--RPMS.updates
                |--SRPMS.os (非必?目?)
               |--SRPMS.updates (非必?目?)
               `--base
                  |--pkglist.os.bz2
                  |--pkglist.updates.bz2
                  |--release
                  |--release.os
                  `--release.updates
     
    如上所示,我?立出一?名? apt 的目??管理我的 APT ?案,另外,因?有??版本,所以我? apt 又分???目?,因???目?的格式一?,所以我以 Red Hat 9 那? /var/www/html/apt/redhat9 目??介?。?面至少?有三?目?才?,分?是 RPMS.os, RPMS.updates, base ?三?目?,其中:
     
    RPMS.os 的?容? Red Hat 9 的原本光碟中的 RPM ?案(i386);
    RPMS.updates 的?容? Red Hat 公司?? Red Hat 9 ?一版所?出的修?套件;
    base ??目??面的?料?是由 APT 伺服器所自??生的,前面我?提到的 APT ?去分析 RPM ?案而??案????下?,??下?的咚咚就是放置在??目?下的啦!
     
    您??看到其??有 SRPMS.os 以及 SRPMS.updates 等目?,呵呵!那?就是 Source RPM (SRPM) ?案放置的目?了。因?我?直接可以透? Binary ?升?,所以我??不放 SRPM 在我的 APT 伺服器?面?!
     
    OK!所以我?需要怎??架?我?的 APT 以及利用 APT ?升?呢?
     
    先?所有?自 Linux 原版光碟的 RPM ?案??到 /full/path/RPMS.os ?案中;
    再??自原 Linux 版本公司?出的 RPM 修?套件由 Internet 下?到 /full/path/RPMS.updates ?中;
    利用 APT 的功能?行 /full/path/base ??目??面??的更新;
    到 Client 端上面,以 APT 的功能更新 Client 自己的套件??,使? APT 主?的 /full/path/base ??目??面的套件????同步化;
    到 Client 端上面,可以利用 APT 的功能?更新或者是安?套件了!?然,所使用?下? RPM ?案的?定?然是 WWW 或是 FTP ?!而且, Client 端分析的是自己的 RPM ??喔,所以每次?行更新之前,??? Client 端的 RPM ??? APT Server 端?同步化才行!否? Server 新增的?案在 Client 端是?法取得??的喔!
     
    所以?,其?在 APT 主??定上面最重要的步???是在於主?硬碟的??、?案的??? updates ?案的??自?更新(可以利用映射站台的功能),以及 /full/path/base 目?下的??更新等等步?!只要???有??,其他的流程就??咯!
     

    --------------------------------------------------------------------------------
    安? APT ??
     
    因? APT ?套件是挺大的,而且也不容易使用 Tarball ?安?,所以比?建?使用 RPM 的方式直接安?,您可以到底下的?站搜?一下?於您自己的 Linux distributions 的 APT 版本喔:
     
    http://rpmfind.net/linux/rpm2html/search.php?query=apt
    http://apt.freshrpms.net/
     
    同?我也?一些常?的版本捉下?了,您也可以在??下?:
     
    RPM 的部分:
    Red Hat 9:http://linux.vbird.org/download/linux_server/apt/rh9/apt-0.5.5cnc6-fr1.i386.rpm
    Red Hat 8:http://linux.vbird.org/download/linux_server/apt/rh8/apt-0.5.5cnc6-fr0.rh80.1.i386.rpm
    Red Hat 7.3:http://linux.vbird.org/download/linux_server/apt/rh7.3/apt-0.5.5cnc5-fr0.rh73.2.i386.rpm
    Red Hat 7.1:http://linux.vbird.org/download/linux_server/apt/rh7.1/apt-0.5.4cnc9-fr0.1.rh71.i386.rpm
    Mandrake 9.1:http://linux.vbird.org/download/linux_server/apt/mdk9.1/apt-0.5.5cnc3-1mdk.i586.rpm
    Mandrake 9.0:http://linux.vbird.org/download/linux_server/apt/mdk9.0/apt-0.3.19cnc55-2mdk.i586.rpm
    Mandrake 9.0:http://linux.vbird.org/download/linux_server/apt/mdk9.0/apt-devel-0.3.19cnc55-2mdk.i586.rpm
     
    SRPM 的部分(可以使用 Red Hat 9 提供的 SRPM ??行重新??):
    Red Hat 9:http://linux.vbird.org/download/linux_server/apt/rh9/apt-0.5.5cnc6-fr1.src.rpm
     
    直接以『 rpm -ivh package.name 』就能安?了!?然,需要???合您的版本?!如果找不到?合您的版本,那???以上面提供的 SRPM ?重新???看看能不能成功吧!『rpm --rebuild SRPM 』或新版的『rpmbuild --rebuild SRPM』(?:SRPM 表示您由上面下?的 apt-0.5.5cnc6-fr1.src.rpm ???案的?名)。
     

    --------------------------------------------------------------------------------
    APT 伺服器的套件??
     
    APT 伺服器?面有很多的?案,?明如下:
     
    ?定?案:
     
    /etc/apt/apt.conf:???不是 APT Server 的???,而是?我?在指令列模式下? APT 的指令? (如底下?行?部分?介?的 apt-get ),?指令的?境??。一般??,使用??值就可以了!不需要更?他。???案的?容?中:
     
    ?解符????斜?( slash ):『//』
    主要至少分?三大群?,分?? APT(?境??), Acquire(下?相???) ? RPM(RPM相???),而每?群?之?又分?具有多???,每???的?定值最後以分?『;』隔?,例如下面的?例: [root@test root]# vi /etc/apt/apt.conf
    APT    //第一?大群?
    {
    // Options for apt-get
    Get   //第一?大群??面的第一???
    {
    Download-Only "false"; //第一???的?目???目之?定值
    Show-Upgraded "true"; //第二???的?目???目之?定值
    };
    };
    除了上面的格式外,也可以利用底下的格式??行?定:
    主群?::??::?目 "?定值";
    例如上面的?例中,可以?第一??定值?成:
    APT::Get::Download-Only "false";
     
    另外,如果您想要使用 Proxy ?加快您的?路???,可以修改?面的?容,因? Proxy 是在 Acquire ?面的 Http ??,所以您可以使用如下的?定值(?:我以成大的 proxy.ncku.edu.tw:3128 ?例):
      1. 利用原本的?定技巧:
    [root@test root]# vi /etc/apt/apt.conf
    // 找到底下的??
    Acquire
    {
    // 底下加入?些?料:
    Http
    {
    Proxy "http://proxy.ncku.edu.tw:3128";
    };
    Retries "0";
    };
     
    2. 或者您也可以改用底下的???定:
    [root@test root]# vi /etc/apt/apt.conf
    //在最後一行加入,注意,不要被括? {} 括住了!
    Acquire::Http::Proxy "http://proxy.ncku.edu.tw:3128";
     
    上面??方法都是行的通的啦!
     
    /etc/apt/sources.list:???案就真的重要了!此?案的作用在於『???合您的 APT 主?』?!所以???案? Client 的??比?大。?容有?像??:
      [root@test root]# vi /etc/apt/sources.list
    # Red Hat Linux 9
    rpm http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms
    #rpm-src http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms
     
    # ?面料的格式?:
    # rpm <相?於伺服器的路?> <目?一> <目?二> <目?三> ...
    # 以上面的例子??,事?上 RPM 放置的目?在:
    # http://ayo.freshrpms.net/redhat/9/i386/RPMS.os
    # http://ayo.freshrpms.net/redhat/9/i386/RPMS.updates
    # http://ayo.freshrpms.net/redhat/9/i386/RPMS.freshrpms
    # 而至於 rpm-src ?是放置 SRPM ?案的伺服器?目?喔!
     
    如果您是由?哥面推?的 RPM 安?您的 APT ?,??可以保持??的路?,不?,如果您知道台?地?有更快速的映射站台,??就可以修改成您所找到的 APT 伺服器?。
     
    ?行?案:
     
    apt-get:??是最主要的?行?了!大部分的?候都是? Client 端用的,?法如下:
      [root@test root]# apt-get <更新?目> <套件名?>
    ???明:
    options:?於??有底下???常?的:
      -q 不要?示 apt-get ?作?的?出?息,安?一?比?好??! ^_^
      -y 如果 apt-get 在工作?程中需要使用者回?,????可以直接回答 yes
    更新?目:更新的?作有底下??:
      update:???作很重要,就是我?上面有提到的,Client 端要更新? APT Server
          套件相?性?案的清???表,就得要使用???目了!基本上,
          每次?行 apt-get ?下? APT Server 的?案前,最好都先 apt-get update
      install:安?某?套件,後面接套件名?
      dist-upgrade:自?升?我?系?上面已?安?的所有 RPM 套件喔
      clean:?下?自 APT 主?的的 RPM ?案?除哩!
      remove:移除已?安?在我?系?的某?套件!
    ?例:
    [root@test root]# apt-get update      # ? RPM ?案相?性清?更新!
    [root@test root]# apt-get install tcpdump # 安? tcpdump ??套件
    [root@test root]# apt-get -y dist-upgrade # 升?我?系?上面的所有 RPM 套件
    [root@test root]# apt-get clean
     
    # 至於每日更新的?,可以?入 /etc/crontab 喔
    [root@test root]# vi /etc/crontab
    40 5 * * * root apt-get update; apt-get -y dist-upgrade ; apt-get clean
     
    genbasedir:我?在前言的部分一再地提到 APT Server ?分析已?存在的 RPM ?案的?性相?性,?且???性的?果放置在 /full/path/base 那?目??~呵呵!其???作很??的,就是使用?? genbasedir 即可!
     
    相?目?:
     
    /var/cache/apt:一些???案的地方,例如?使用 apt-get update 之後,??目?下的 RPM ?案相?????就?更新了!
    /var/state/apt:???是 apt 在工作的?候,一些??的???案放置的地方!
     

    --------------------------------------------------------------------------------
    APT 伺服器?定 ( 以 HTTP 提供服??例 )
     
    在底下的例子?中,我?主要是?定以 HTTP ? APT Server 的服?提供者,因?是利用??的 WWW 系?版本,所以首?在 /var/www/html。?哥在 /var/www/html 底下建立一?名? apt 的目?,?在底下提供 Red Hat 9 ? Mandrake 9.1 的 APT 套件服?功能,注意,我???提供 RPM ?案,?不提供 SRPM 的?案喔!相?的目?如前面提到的表一所示(?:?然 SRPM.os... 等?案就不必建立了!)。好了,那?就??他安? APT Server 相?的流程吧!
     
    建置所需的目????所需的?案:
    如上面提到的 表一 所示?我?所需要的目?,而在每? RPMS.os ?系?原本的光碟?面的?案,而 RPMS.updates ??套件升?版本。我??主要以中山大?的 FTP ?站作?主要的 update ?料?源,使用的是 ncftp 的下?方法: 1. 建置所需目?:
    [root@test root]# mkdir -p /var/www/html/apt/redhat9/RPMS.os
    [root@test root]# mkdir -p /var/www/html/apt/redhat9/RPMS.updates
    [root@test root]# mkdir -p /var/www/html/apt/mdk9.1/RPMS.os
    [root@test root]# mkdir -p /var/www/html/apt/mdk9.1/RPMS.updates
     
    2. 利用原版 CD ???所需的 .os 的 RPM ?案
    [root@test root]# cd /var/www/html/apt/redhat9/RPMS.os
    # 先放入 Red Hat 9 的原版光碟片
    [root@test RPMS.os]# mount /dev/cdrom
    [root@test RPMS.os]# cp /mnt/cdrom/RedHat/RPMS/* .
    [root@test RPMS.os]# umount /dev/cdrom
    # 重?上面的步?,?三片 i386 的 RPM ?案都???去!
    # 至於 Mandrake 的原版光碟??方法也是相同的步?!
     
    3. 利用 ftp.nsysu.edu.tw ?下?所需要的 RPM ?案
    [root@test RPMS.os]# cd /var/www/html/apt/redhat9/RPMS.updates
    [root@test RPMS.updates]# ncftp \
    > ftp://ftp.nsysu.edu.tw/Linux/RedHat/linux/updates/9/en/os/i386/
    NcFTP 3.0.2 (October 19, 2000) by Mike Gleason (ncftp@ncftp.com).
    Connecting to 140.117.11.7...
    ====================================================================
    ?迎光?【?立中山大?】?案伺服器 : FTP.NSYSU.edu.tw
    Welcome to National Sun Yat-Sen University FTP Server.
    右列?址提供本站?案搜?引擎 http://ftp.nsysu.edu.tw/
    File Search Engine on the URL http://ftp.nsysu.edu.tw/
    目前 FTP 部份有 313 人正在?上,最高限制 5000 人.
    There are currently 313 users out of 5000 possible.
    ====================================================================
    Only anonymous FTP !!!! Please press [ENTER] key.
    Logging in...
    ========================================================================
    !!!! Important Function !!!! (重要功能介?)
    o 'cd key*word' or 'cd prefix*' or 'cd *suffix' provided (case-insentive).
    (例:cd freebsd 可以打成 cd fr 或 cd *sd 或 cd f*e*d 都通用,大小?都行)
    ========================================================================
    ?多多利用 http://ftp.nsysu.edu.tw
    可以使用方便的?案搜?引擎喔!!!!!!!!!!!!!!!!!
    ========================================================================
    ADM.Email: ftpadm@cc.nsysu.edu.tw
    Anonymous user (163.28.112.1) logged in
    Logged in to ftp.nsysu.edu.tw.
    Current remote directory is /pub/Linux/RedHat/linux/updates/9/en/os/i386.
    ncftp ...x/updates/9/en/os/i386 > mget *
    .....
    利用上面的步?就可以? Red Hat 9 的??目?下的 RPM ?案放置完?!至於 Mandrake 9.1 的方法? Red Hat 9 是完全相同的!?您依照上面的方法?自行安? Mandrake 到您的系??中喔!另外,除了中山大?提供的 FTP ?站之外, 您也可以使用淡江大?或者是其他的大?院校提供的 FTP 服?喔!
    淡江大?的 FTP ?站: ftp://ftp.tku.edu.tw/OS/Linux
    中山大?的 FTP ?站: ftp://linux.cdpa.nsysu.edu.tw
     
    建立 RPM 所在?案的相??料:
    建立好了?案之後,再??是需要?行?些 RPM ?案的相??分析了,分析方法很??,只要一??作即可: [root@test root]# genbasedir <最上?目?> <相?目?一> <相?目?二> ...
    ???明:
    最上?目?:以我?的 APT 主??例,最上?目?有??,分?就是:
          /var/www/html/apt/redhat9
          /var/www/html/apt/mdk9.1
    相?目?一:那就是 RPMS.os ? RPMS.updates ,但是?得 RPMS 不要?,
          只要 os 以及 updates 即可!
    ?例:
    [root@test root]# genbasedir /var/www/html/apt/redhat9 os updates
    Creating base directory... done
    Components: os updates
    Processing pkglists... os updates done
    Processing srclists... done
    Creating component releases... os updates done
    Creating global release file... done
    Appending MD5Sum... os updates done
    All your base are belong to us!!!
    [root@test root]# genbasedir /var/www/html/apt/mdk9.1 os updates
    # ?作真是?他有?久~耐心等候吧! ^_^
    ?行完上面???作後,APT 就?在您的系?上面主?的建立起 /var/www/html/apt/redhat9/base 以及 /var/www/html/apt/mkd9.1/base ???目??!?也是最重要的目?咯!基本上, APT Server 到?一步?就已?完全 OK 了!其他的就是 WWW 伺服器的?定?,因?前面我?已?介?? WWW 了,??不再重??明?!
     
    建立 Client 所需要的 sources.list
    我?的 Red Hat 9 所架?的 APT Server ?然也可以?我?自己?升?了!???候?您修改 /etc/apt/sources.list 呢!?注意喔!您所??的 APT Server 需要?定正?才行喔! [root@test root]# vi /etc/apt/sources.list
    # ?是我?主?的 Red Hat 9 ?例:
    rpm http://192.168.1.2 apt/redhat9 os updates
    # ?是 Mandrake 的?例
    # rpm http://192.168.1.2 apt/mdk9.1 os updates
     
    [root@test root]# apt-get update
    Get:1 http://192.168.1.2 apt/redhat9 release [543B]
    Fetched 543B in 0s (1359B/s)
    Get:1 http://192.168.1.2 apt/redhat9/os pkglist [420kB]
    Get:2 http://192.168.1.2 apt/redhat9/os release [121B]
    Get:3 http://192.168.1.2 apt/redhat9/updates pkglist [55.1kB]
    Get:4 http://192.168.1.2 apt/redhat9/updates release [126B]
    Fetched 475kB in 8s (57.0kB/s)
    Reading Package Lists... Done
    Building Dependency Tree... Done
    # ??步?在??我?上面的 sources.list 是否正?!
    # ?且可以同?更新我? Client 端的 RPM ?性?案??!
    # 要出?上面的?息才?,如果出????息,很有可能是 WWW ?定??!
    ??特??明的是, apt-get update 的作用在『取得 APT Server 的各? RPM ?案的相?性,亦即是 base 目??面的?案』,取得?些?料後,未?您的 Linux 主?要?行各?安?/升??作?,就可以直接取用自己的???了。所以,如果主?上面更新了 base ?面的??,?您必?要再次的?行 apt-get update 才行,否?主?上面更新的?料您??法取得。
     
    定期建立 update RPM ?案的映射?料,?更新 RPM 相??料
    其?到上一步?所有 APT 相?的作???就已?完成了,不?,要?得的是, Internet 上面的 update 套件是??在更新的,所以我?的 APT server 上面的 RPMS.updates 目?也??要??更新才?啊!要更新,您可以使用手?的方式?下?,用 ncftp 似乎不?!不?,?竟不太?合即?更新,???候,我?可以利用映射 (mirror) 的方式??行更新喔!我?以 Red Hat 9 的 update ??行?明!?於映射的?明?您自行?考 http://mirrordir.sourceforge.net/ ,我????需要?用而已喔! 1. 先?上安? mirror 吧!
    [root@test root]# rpm -ivh \
    > http://mirrordir.sourceforge.net/mirrordir-0.10.49-1.i386.rpm
     
    2. mirrordir 的?法
    [root@test root]# mirrordir <目?目?>
    [root@test root]# mirrordir -v \
    > ftp://ftp.nsysu.edu.tw/Linux/RedHat/linux/updates/9/en/os/i386/ \
    > /var/www/html/apt/redhat9/RPMS.updates
    # 用 -v ?察看一下 mirrordir 的?查??,如果以 cron ??行?,就不需要了!
     
    3. 定期?行映射?且同?更新 RPM ?案相?性:
    [root@test root]# vi /etc/crontab
    # 加入?一行:
    30 5 * * * root mirrordir ftp://ftp.nsysu.edu.tw/Linux/RedHat/linux/updates/9/en/os/i386/ /var/www/html/apt/redhat9/RPMS.updates && genbasedir /var/www/html/apt/redhat9 os updates
    # 注意喔!上面???的一行啊! ^_^
     
    如此一?,我?的 APT 主?不但能?自己更新自己? FTP 映射站的 update ?料,?且同?更新 APT 的 base 目?下的相?性?案喔!而您的 APT Client 就可以???更新他的 RPM 套件?! ^_^
     

    --------------------------------------------------------------------------------
    Client 端的?定
     
    ??是 APT Server 或者是 APT Client ,要使用 APT 伺服器的功能,您都必?要安? APT ??才行。所以,首先??您的 Client 依?前面『安? APT 伺服器??』章??行 apt 的安?;安?完?之後,最重要的就是修? /etc/apt/sources.list ???案?!您必?要?定正?的 APT 伺服器才行,如此一?,您就可以?用 APT 的?大功能啦!更多的使用技巧??考 Linux ?路套件升? 章?。

    --------------------------------------------------------------------------------
    YUM 伺服器
    ?完了 APT 伺服器之後,接下?我?就??一?目前被 Red Hat 及 Fedora 列???的 RPM 套件安?/升??制的 yum ??伺服器啦。
     

    --------------------------------------------------------------------------------
    YUM 伺服器利用的?制
    ? APT ?似的, yum ??有??新的?路???制,同??是利用原本主?就提供的 WWW 或者是 FTP 服?,?? server/client ?行?案的??。所以在您 yum 伺服器上的 RPM ?案同?的需要放置在 WWW 或 FTP 服?可以存取的所在目?才行。???哥同?以 /var/www/html ?? WWW 的目?作??明。
     
    一般??,我?需要的 RPM ?案就是原本光碟所提供的套件,以及後??商提供的升?套件,??? RPM ?案我分??他放置在底下所示的目??:
     
    表二、APT 主?相? RPM ?案放置的目?示意表 /var/www/html/yum/fedora/core1
                  |--base
                  |  `--headers
                  `--update
                    `--headers
    /var/www/html/yum/mandarke/10.0
                  |--base
                  |  `--headers
                  `--update
                    `--headers

     
    如同上表二所示,每一?版本的 Linux ??有??目?,其中 base 是原版光碟的 RPM ?案,至於 update ?是升?的 RPM ?案。比?有趣的地方在於『?? yum 分析 RPM ?案後的???料是放置在?目?下的 headers 目??。』?例??,我?的 mandrake 10.0 升?用的 RPM ?案是放置在 /var/www/html/yum/mandrake/10.0/update 下,?在?目?下的 RPM 被分析後,每一? RPM ?案的????放置在 /var/www/html/yum/mandrake/10.0/update/headers 目?下喔。至於整? yum 的?制?:
     
    先?所有?自 Linux 原版光碟的 RPM ?案??到 /full/path/base ?案中;
    再??自原 Linux 版本公司?出的 RPM 修?套件由 Internet 下?到 /full/path/update ?中;
    利用 yum 的功能去分析每?目?下的 RPM ?案;
    在 Client 端上面,每次?行 RPM 套件的升?/安?功能?, yum ?自?的?取 headers ?的???,?自?分析 RPM 套件的?性相依??。
     
    ? APT 相比, yum 少了一? Client 端同步化的步?了,所以,可以避免使用者不小心?忘了?料同步化而?致?法取得最新 RPM ??的??喔。

    --------------------------------------------------------------------------------
    安? yum ??
    yum 在 Red Hat 及 Fedora 是??配?,所以您????筋。但如果您是其他的 distributions 而想要利用??好用的 yum 功能,那?可以到底下的?站搜??合您的 yum 版本:
    http://rpmfind.net/linux/rpm2html/search.php?query=yum
    http://free.tnc.edu.tw/modules/news/article.php?storyid=854
    找到後,直接安?即可。

    --------------------------------------------------------------------------------
    yum 伺服器的套件??
    ?哥?得, yum 伺服器的套件??要比 apt ??一些些,基本上只有底下??咚咚:
    ?定?:不要?疑,只有一??定?。
     
    /etc/yum.conf:???案是? yum client 用的?定?,?面主要?定了要取用 RPM ?案的 yum server 的??,?容有?像??:
      [root@test root]# vi /etc/yum.conf
    # 在???案?中,?解符?是 # ,而每一?大?目?以 [] 作??始
    # 除了 [main] 是用在??本?相???的?明之外,要取用伺服器的目??,
    # ?需要?外的?定。我?以上述的 base/update ??目?作??明:
    [main]
    cachedir=/var/cache/yum
    debuglevel=2
    logfile=/var/log/yum.log
    pkgpolicy=newest
    distroverpkg=fedora-release
    tolerant=1
    exactarch=1
    # 上面主要?定了?行 yum ?所?使用到的目?。例如 /var/cache/yum。
     
    [base]
    name=Fedora Core $releasever - $basearch - Base
    baseurl=http://127.0.0.1/yum/fedora/core1/base
    # ??就重要了,那?中括?[]?面就是『目?名?』需要??正?喔
    # name ?只是?明?目?下的咚咚而已,?不重要;
    # baseurl ?是完整的 URL 了!???千?填?正?!
     
    [update]
    name=Fedora Core $releasever - $basearch - Released Updates
    baseurl=http://127.0.0.1/yum/fedora/core1/update
     
    看到了??事?上,我?只要?定好 [base] ? [update] ?面的?址,呵呵!就可以使用 yum server所提供的更新功能啦。
     
    ?行?:
     
    yum:??指令是? yum client 用?作?更新之用的,??的操作如下:
      [root@test root]# yum <更新?目> <套件名?>
    ???明:
    options:???列出常?的??而已。
      -y 如果 yum 在工作?程中需要使用者回?,????可以直接回答 yes
    更新?目:更新的?作有底下??:
      install :安?某?套件,後面需要接套件名?;
      update :?就是升?啦!如果 update 後面接套件名?,表示只要 yum 升??套件
           而已,如果 update 後面不接套件名?,表示 yum ??目前?主?所有已
           ?安?的套件?行升?的?作!?是最常使用的?目了。
      list :列出目前在 yum server 上面有的 RPM 套件;
      info :某?套件的?容,?似 rpm -qi packages 的?容。
      clean :?已?下?到本?的 packages 或 headers 移除。
      remove :移除已?安?在我?系?的某?套件!
    ?例:
    [root@test root]# yum install hdparm # 安? hdparm ??套件
    [root@test root]# yum update hdparm # 更新 hdparm ??套件
    [root@test root]# yum -y update # 更新目前本?上面的所有套件,?自?回覆 yes
    [root@test root]# yum clean packages # ?下?至本?的 RPM ?案?除(放在
                         /var/cache/yum ?面。
     
    # 至於每日更新的?,可以?入 /etc/crontab 喔
    [root@test root]# vi /etc/crontab
    40 5 * * * root yum -y update; yum clean packages
     
    yum-arch:??指令?是? yum server 使用的!重?在分析 RPM 套件的 header 喔!用法真是很??,同?已 /var/www/html/yum/fedora/core1/base ?例:
      [root@test root]# yum-arch <目?>
    ???明:
    options:???列出常?的??而已。
      -q : yum 分析 RPM ?程中不?示?息。
    ?例:
    [root@test root]# yum-arch /var/www/html/yum/fedora/core1/base
    # 只要????步?, yum 就?自?在 /var/www/html/yum/fedora/core1/base 底下新增
    # 一?名? headers 的目?,??分析的 RPM ???料都放置在?面喔!
     
    相?目?:
     
    /var/cache/yum:我?在 yum ??指令?面?到?使用 yum ?行升??,下?下?的 rpm ?案?不?自?被?除的,那??些 rpm ?案放在哪?呢?就是放在 /var/cache/yum ??目??。?些?案在升?完成後就可以移除了,所以我?可以使用『yum clean packages』?移除?些 rpm ?案喔。
    yum 相?的咚咚就只有??,是否真的很??啊? ^_^

    --------------------------------------------------------------------------------
    yum 伺服器?定
    yum 伺服器的?定真是??!最重要的是 WWW/FTP 的?定必?要正?才行。整?步?是??的:
      1. 先建立所需要的目?:
    [root@test root]# mkdir /var/www/html/yum/fedora/core1/base
    [root@test root]# mkdir /var/www/html/yum/fedora/core1/update
     
    2. ??原版光碟的?容:
    # 利用 mount ? cp umount 等功能,?原本光碟的?容整???到
    # /var/www/html/yum/fedora/core1/base ?中。
     
    3. 利用 mirrordir 下???套件。?哥??建?使用中山大?的 FTP ?站:
    [root@test root]# mirrordir -v \
    > http://linux.cdpa.nsysu.edu.tw/Linux/Fedora/linux/core/updates/1/i386/ \
    > /var/www/html/yum/fedora/core1/update
     
    4. ?行 RPM 套件分析:
    [root@test root]# yum-arch /var/www/html/yum/fedora/core1/base
    [root@test root]# yum-arch /var/www/html/yum/fedora/core1/update
     
    5. ? client 建立 yum.conf ?容:
    [root@test root]# vi /etc/yum.conf
    [main]
    cachedir=/var/cache/yum
    debuglevel=2
    logfile=/var/log/yum.log
    pkgpolicy=newest
    distroverpkg=fedora-release
    tolerant=1
    exactarch=1
    [base]
    name=Fedora Core $releasever - $basearch - Base
    baseurl=http://127.0.0.1/yum/fedora/core1/base

    [update]
    name=Fedora Core $releasever - $basearch - Released Updates
    baseurl=http://127.0.0.1/yum/fedora/core1/update
     
    6. ?始自我升?:
    [root@test root]# yum -y update

     
    ??!??疑!整? yum 伺服器的架?就是????啊!

    --------------------------------------------------------------------------------
    特殊案例

    --------------------------------------------------------------------------------
    建立自己的更新套件
    如果您曾?自己修改一些 SRPM 的?案,?且重新打包成? RPM 套件,然後?行?自己的 Linux ?器?安?,此外,您也可能取得一些??所?出的 RPM ?案,例如 opnewebmail 所?出的 RPM 套件,?些 RPM ?案您又想放置在自己的伺服器上面,以方便自己未?升??查?之用,那???怎?放置呢?最??的方法就是??些?案放置在 /var/www/html/yum/fedora/core1/update ?面,不?可能?有??,例如如果您使用 mirrordir ?行?料的映射?,那?您放置的 RPM ?案??被?除喔!
     
    事?上,我?可以自己?定好?外的升?目?啊!?例??,?哥自己所?作出?的 RPM ?案都是放置在:
    /var/www/html/yum/fedora/core1/myself
    ?然,?目?是自己建立的,然後?自己新增的 RPM ?案通通?他???去?目?下,之後,就是?作 header ?案啦:
    yum-arch /var/www/html/yum/fedora/core1/myself
    最後只要在 /etc/yum.conf ?面新增一?目?:
    [myself]
    name=My personal RPM files
    baseurl=http://127.0.0.1/yum/fedora/core1/myself
    ?然啦,要利用您的 RPM ?案的 client ,他的 /etc/yum.conf 就需要加入上面的?定,(注意:127.0.0.1 是在自己的?器上面跑的?故,您必?要填?正?的 yum server 的主?名?或 IP 才行。)如此一?,您的 RPM ?案就可以被利用啦!

    --------------------------------------------------------------------------------
    如何取得?路上的更新元件
    上面提到的伺服器?乎都是以 FTP 的方式在 internet 上面取得最新的 RPM 套件?案。那如果您的?部?域本身?不提供 FTP ?外???,?如何是好??哥曾?遇?一?特?的??,在??域??提供 port 80 的?外??,除此之外,一切都是??的!而我?使用的 mirrordir 及 ncftp 都是以 ftp ??外??,??如何是好?
     
    好在天??人之路啊!?得?哥在前面 ?路升?套件 那?章??面提到的 zzgetrpm.sh ?案??您只要下???案,然後填?正?的 URL ,就可以透? port 80 下??路上最新的更新套件了!而後在?部?域?中,您?然就可以透?各方式??行 yum/apt 的升??!^_^

    --------------------------------------------------------------------------------
    主?的??技巧?建?
    那?架?一部 APT/YUM 主?需要注意哪些事?呢?因?您的 APT 主??需要?行 WWW ,所以您可能需要?立出一? partition 以?行??主?的?定,或者是在 /var/www/html ????的 WWW 主?的硬碟空?要足?!反正 APT 主?需要注意的地方最主要?是在於硬碟的空?了!此外, APT 主?最好可以放置在?外???高的?段?,因??需要? Internet 取得 update 的 RPM ?案嘛!
     
    而如果您的 APT 主??作? APT 的 update 之用?,而 WWW ?是附?的功能,那?您在安置 RPM 的所在目?最好?外的限制使用者的???段,避免被外部的人(?自 Internet)作???升?的主要主?,那可能???掉您的?外???!所以,可能的?,使用??主?,?且加以?定??的?性,例如使用 iptables ?定防火?,或以 httpd.conf ?面的 ACCEPT/DENY 功能?抵?,也是一?不?的想法喔!至於 WWW 主?的相??定??考前面的章?。

    --------------------------------------------------------------------------------
    ?考?源:
    http://bazar.conectiva.com.br/~godoy/apt-howto/
    http://freshrpms.net/apt/server/
    http://rpmfind.net/linux/rpm2html/search.php?query=apt
    http://163.19.59.1/~linux/student_samba/apt/apt_server.html
    http://cle.linux.org.tw/~candyz/
    http://linux.duke.edu/projects/yum/

  19. baizx 于 2009-08-10 10:53:03发表:

    ?易 Proxy Server 架?

    原理:
    代理伺服器的原理其?很??啦!就是以?似代理人的角度去取得使用者所需要的?料就是了!但是由於他的功用,使得我?可以透?代理伺服器??外的?成防火?的功能!此外,也可以藉由代理伺服器 ( Proxy ) ??成?省??的目的,以及加快?部?路的 WWW 存取速度!?之, Proxy ?於大型的企???,?在是一?很不?的?西啊!
     

    --------------------------------------------------------------------------------
    什?是代理伺服器
     
    在真?世界中,我?或???忙家人去?理一些??吧!??例子??,例如??或者是申?提款卡等等的,那?由於你?不是『申?者本人』而是『代理人』的角色,因此有?候?需要秀出一些?件就是了。那?在?路上面的代理伺服器是怎?回事呢?他就是 Proxy Server ?!他最主要的功能就如同我?上面提的真?世界一?, Proxy ?? Client 端的用?去向目的地取得用?端所需要的?料。所以,? Client 端指定代理伺服器之後,您的所有相?要求( 例如 WWW 的要求 )就?通?代理伺服器去捉取?!整?代理伺服器?用?端的相?性可以由下??略看出一?端倪:
     

    ?一、代理伺服器的示意?
     
    在?部的??都是透? Proxy ?向 Internet 求取?料的,?就是所?的『代理伺服器』啦!?然,上面的架??只是一?案例,?有相?多的非 Intranet 的 Proxy 架?,亦即是你的 PC ? Proxy 均在 Internet 上面,但是您一?可以透??? Proxy ??您?到代理人身份的目的呢!
     
    在 Proxy ? Client 的相?性?中,您必需要?解的是:您向外部要求的?料事?上都是 Proxy ?你取得的!怎??呢???例子??,假如我在我的??器 ( 假?是 Netscape 好了 )?定了我??校的代理伺服器主? proxy.ncku.edu.tw 做?我的 Proxy 好了,再假?我的 IP 是 140.116.44.125 ,那??我想要取得奇摩?站的新????,事?上,都是 proxy.ncku.edu.tw ?我去取得的,所以在奇摩的?站上面看到向他要求?料的人是?呢?呵呵!?然就是 proxy.ncku.edu.tw 而不是我 140.116.44.125 ?!??可以?解 Proxy 的功能了??
     
    除了??功能之外, Proxy ?有一?很棒的?外功能喔,那就是防火?的功能!怎??呢?看一下上面的?示,您可以??一件事情,那就是 Client 端的?人??要?上 Internet 一定要?? Proxy 伺服器,?且,如果有人想要入侵你的系??,由於你的 proxy 在最外部啊,所以攻?者就?攻??方向,如此一?,不就比?安全!此外,由於整? Intranet ?外都是?? proxy ,也就是『???外』的情?,????底下要?管理防火?也是比???的喔!^_^
     

    --------------------------------------------------------------------------------
    代理伺服器的?作方式
     
    ?解的 Proxy 的功能之後,我???一?那? Proxy 到底是怎??作的呢??何他?有『加快?路存取效率』的情???就必需要以底下的?示??明了!
     

    ?二、代理伺服器的?作方式流程?
     
    ? Client 端?定了代理伺服器之後,在 Client 端想要取得 Internet 上面的???,他是??取得?料的 (?:那? Cache 表示? Proxy 主?的硬碟的意思 ):
     
    一、Proxy 有使用者??要求的?料?( Step 1, 2, 3,4 ):
    Client 端向 Server 端?送一??料需求封包;
    Server 端接收之後,先比???封包的『?源』???要前往的『目?』?站是否?可接受?如果?源?目?都是合法的,或者?,?源?目??站我?的 Proxy 都能?忙取得?料?,那? Server 端????始替 Client 取得?料。??步?中比?重要的就是『比?政策』啦,有?像是??的感?啦;
    Server 首先?到自己的硬碟?面,也就是所?的 cache (快取) 查看一下有?有 Client 端所需要的?料,如果有的?,那就??料直接送到 Client 端 (步?4) 而不??向 Internet 要求?料的程序;
     
    二、Proxy ?有使用者??要求的?料? ( Step 1, 2, 3, 5, 6, 2, 3, 7 ):
    在?? 1, 2, 3 查?知道 cache ?有?料,或者?料?期之後, Proxy ?向 Internet 上面的目??站要求?料;
    在??料取回之後, proxy ?先?取得的?料『?存一份到 cache ?中』;
    最後才??料?回? Client 端使用。
     
    整? Proxy 的工作流程就是???子,所以,我?就可以知道的是, Proxy ?於 cache 的速度是很要求的,而?? cache 就是硬碟啦!?然,硬碟容量必需要足?大,而且?要『足?快』才行!因?由上面的流程?中,我?不???, Cache 是一直被重?存取的一?地方喔!所以硬碟的好?就差?很大啦!可以?他是影?一? Proxy 效能好?的???呢!
     

    --------------------------------------------------------------------------------
    代理伺服器的用途??缺?
     
    一般??,代理伺服器的用途主要有??:
     
    WWW ??代理人:最主要的用途?然就是做????料取得代理人?,也就是?, Proxy 可以?我?取得 Internet 上面的 WWW ?料就是了!那?能不能取得其他非 WWW 的?料呢?那就不一定了,要看 Proxy 主?是否有?定?服?。一般??, Proxy 主要?是?? WWW ??的代理取得;
     
    做? Intranet 的???外防火?系?:就如同前面的?示, Proxy 如果架?在 Intranet ?外的?接?上面,那?他就可以被用?做?『?用?』?段的防火?了!而且,???候不需要?定 NAT 就可以? Intranet ?部的私有 IP 的???接上 Internet 了!?是因?您想要的?料是向 proxy 要求,所以真正去取得?料的人是『Proxy』而不是你的??啊!所以,只要 Proxy 可以接受私有 IP 的??要求,那?些私有 IP 的??就可以?上 WWW 啦!不?,也由於 Proxy ?一? ?用? ?段的防火?系?,所以,他??法?行?低?的封包??!因此,在?部??想要透? Proxy ?取得?件、或者是其他的服?,呵呵!那就比?麻?,?直就是麻?的多啦!
     
    由於 Proxy 的??特性,?他很常被使用於大型的企??部,因?可以?到杜??部人?上班?使用非 WWW 以外的?路服?,而且?可以??使用者的?料要求流向?流量呢!很不?吧! ^_^好了,接下?我???一? Proxy 主要的?缺?吧:
     
    快速的存取?作:一般??, Proxy 主?的??以及硬?配??比?高?!所以 Proxy 最大的??就是可以提供用?端??快速的??!咦!但是我?向 Proxy 要求?料的?候, Proxy 不是?自行再?存一份????不是?多花很多???是???有?,但是,?一?角度?想,如果在第一位使用者要求? A ?料後,由於 Proxy 就?自?放一放 A ?料在 Cache ?中,之後的所有使用者只要是重?要求?? A ?料, Proxy 可以立刻??料??使用者,您瞧!???? Client 等於是直接向 Proxy 取得?份 A ?料了!是否更加的快速!?是因? Proxy 就在您的 Intranet 之?,??速度可是相?快的!?也就是?:如果您要?定代理伺服器的?候,一定要找距?我?的?器最近的那一部,否?就?有?到代理伺服器的功用了!通常快速的存取?作最明?的大概是?去?外的?站了!??要?烈的建?,如果你需要?上?外的??,?一定使用代理伺服器,因?不但可以?省??,?且速度上?快上很多很多 ( 例如美??保署, EPA ?站! )
     
    降低?路的?荷:由於我?是向代理伺服器要求?料,如果代理伺服器??好有你要的?料,??直接??你,?你的要求?不?到真?的那一???去 ( 除非你在 IE ?按下『重新整理』??按? ) ,而如果?有你要求的?料,那他也?去捉一份你要的?料?你,?存下?,以後如果有?你相同需要的用?,那他就可以直接?送?用?,如此?可降低?路的?荷!(也就是上面?二的 step 1, 2, 3, 4 )
     
    ?料分流:由於各家 ISP ?於不同?家的??是有差?的,因此,假?如果您要去美??使用 Proxy1 速度?快,而 Proxy2 ?是去日本比?快,至於台?本地? Proxy3 ?快,如此一?,我?可以透??定?不同目?的代理伺服器分??,以?到分流的目的!?你的?域中?可以?到很好的分流效果,?路『感?上』?比?快速喔!
     
    提供防火??部的???上 Internet:??是一般企?比?常用的情?!由於企??部害怕被?客侵入,通常??立一些比??密的防火?,然而如此一?公司?部的??可能面??法?上 Internet 的窘境,那使用 proxy ?你的?部??可以透??一架主?的代理服?而取得 Internet 上的??,就是一?很好的方法啦!
     
    多?次的管道 ( 上?代理伺服器 ):代理伺服器可以提供多重的管道?定,例如,?你需要??的?料?,代理伺服器?直接去捉取,而需要?外的?料?,才?到上一?的代理伺服器!如此?可?到你的需求 ( 而不用常常在你的 IE 等??器上更改所需的代理伺服器 ) ,??部分我?在底下???行?外的?明。
     
    有利就有弊,?然 Proxy 也不是?能的天神~他有什?可能?藏的缺?呢?
     
    容易? Intranet 的?部人??用:因? Proxy 是??部的??捉取?料 ( ?然也可以? Internet 上面的使用者捉取?料啦! ) ,而且在 Internet 上面看到的??上是你的 Proxy 在捉?料喔!如果你的使用者大量的以??器下? A ?啊,?是透?你的 Proxy ??事啦,??一?可就累了~因??在不容易?易的管理!所以,?了杜?????,?烈的建?多加安?登??案分析的??,在管理上面???很多喔!
     
    需要?高超的?定技巧?除?程序:在?哥?定?的 Server ?中, Proxy 算是比?不容易?定好『效能』的一?伺服器了!由上面的???程中,您不??? Proxy 的 Cache ?他的『上?代理伺服器』的??是很?密的,?一?定??的?,很有可能反而?您的 Proxy 拖垮 WWW 的??速度!最?重的是造成?法?? ( 在上? Proxy ?您的 Proxy 之??成 loop 而跑不出去! ),因此,??於管理???是比?困?的一件事。
     
    可能?取得?的???料:由前面的 Proxy ?作?程?中不???,Client 端向 Server 端求取?料?,Server ?先向自己的 cache 查?,如果有?索求?料,就立即??料送? Client 。?在假??例子??明,?一我的??三天??改?一次,那?那? cache 事?上??有天天更新啊!???候, Client 端所取得的?料就有可能是??修改之前的??料咯!所以,使用者得常常按下『更新』才能取得新的?料啊!
     
    ?之, Proxy 的??是很多的,但是缺??需要?管人?的操心啊!
     

    --------------------------------------------------------------------------------
    什?是上?代理伺服器?哪?有上?代理伺服器
     
    什?是上?代理伺服器:
    好了,上面提到?所?的『上?代理伺服器』?又是什?咚咚?事?上,上?代理伺服器就是一? Proxy 啦,只是,我?自己?定的???域 Proxy ??自己?作 Client 而去要求另外一? Proxy 求取?料??我?的使用者就是了!整?流程?可以??看:
     

    ?三、上? Proxy 示意?
     
    就是我?的 Local proxy ?不?主?的去捉?料,而是透?『上?代理伺服器』去向 Internet 要求?料!??有什?好?呢???上面也曾?提?了,由於?些上?代理伺服器才是真正?外??最大的?部?器之一,所以透?他?要求?料一定又比我?的 Local proxy ?要?的快啊!所以我?然?喜??定上? Proxy ?!???象最常?生在??外的??上面,有?有?定 Proxy 差?是相?大的呢!上?代理伺服器除了??更大之外,?有?有什?好?啊??然有,最大的好?就是?到分流的效?!例如下?的?明:
     

    ?四、上?代理伺服器的分流?作示意?
     
    我?共?定了三?上?代理伺服器,由於?三?代理伺服器?外的速度都不相同,所以,?我要去美??,就以 Proxy1 ?要求?料,要??洲就以 Proxy3 ,至於要?日本,就以 Proxy 2 ?要求我所需要的?料,如此一?,呵呵!可以?我的 Proxy ?到最佳的效能喔!很不?吧! ^_^!所以上?代理伺服器是很重要的呢!
     
    哪?有上?代理伺服器?
    目前有哪些流量大、然後又?放出?的 Proxy 呢?我????????大家?考?考:
     
    SeedNet 的代理伺服器(http://service.seed.net.tw/dial/server.shtml);
    Hinet 的代理伺服器(http://www.hinet.net/support/new_adsl04.htm);
    一些台????路的代理伺服器(http://turtle.ee.ncku.edu.tw/~tung/proxy/proxylst.html)。
     
    由前面的介?中,我?不??? Proxy 有可能?被 Client 端?度的?用,同?也有可能?被拿??非作歹啊!所以,目前?大部分的 Proxy 已?『停止?外?放』了,???自己的?域?的 Client 提供 Proxy 的服?而已~因此,如果您要自行?定 Proxy 的?候,??得去您?初申??路的 ISP ( 如果是???位,就到上面介?的???路查看看即可!) 查?一下,才能比?有效的?定好您的主?喔!因??定??的?,呵呵!上? Proxy 根本不提供服?,或者是上? Proxy 的效能?不好,那??候您的 Proxy 也???的受到很大的影?啊!慎?!慎?!
     

    --------------------------------------------------------------------------------
    我是否一定要?定 Proxy ?
     
    ?又?回?,到底我?不???定 Proxy 呢??是得由理????上的????行?明。事?上,我?的 Proxy 感?上?加快??的速度,主要的因素是?自於 cache 已???了一份?料了,所以 Client 端取得的其?是?一份?料,而不是真的?自於 Internet 上面的即??料!??的好?前面提?了,就是可以增加?部?路??的效能啊!但是,?要在一?前提之下,就是我的使用者很多?,那?由於?自四面八方的人?四?去求取?料,?我的 Cache ?有?大的?料?,那??部??的速度自然就?有所助益!所以,要架? Proxy 的情?可以是:
     
    我的 Client 端用?不少,而且大部分?需要 WWW ???路服?而已;
    我的 Proxy ?兼做防火?的任?;
    我的 Client 端常常需要??到??速度很慢的?站,例如?外的?站;
    我的 Client 端常常??的?站是『??』?站,而不是???站(例如???的 PHP )。
     
    相反的??,要是 (1)我的 Client 端很少,那?每次上去 WWW 都是求取新的?料,有?有 Proxy 反而看不出效益~此外,(2)Proxy 由於?於?用?了,?於 Internet 的??上?性?不足!不像 NAT 主?可以?行很多的功能!(3)我常常上的?站是?似???那?一日多?的?站,在??的情?下,?在是?有必要架? Proxy 的!
     
    但是,如果?於?校?位那原本??就不足的?境中,架? Proxy ??校?的?路速度提?,呵呵!就是有那?必要性的啦!所以要不要架? Proxy 呢??好好的依?您的?境?考量喔!
     

    --------------------------------------------------------------------------------
    所需要的硬?要求?最佳硬?配置方式
     
    假?您一定需要架? Proxy ,那?到底什??的配?是必需的呢?我???提到 Proxy ?於硬?的要求相?的高!因?我?架? Proxy 的目的就是希望能?加快?路的??效能嘛!因此,?然 Proxy Server ?乎在任何的 Linux 系?上面都能跑 ( 例如我的 P 133 MMX ) ,但是您的 Proxy Server 最好?是能有以下的硬?等?:
     
    CPU 最好能? P III 550 以上等?;
    RAM 最好能?大於 512 MB ,?也是很重要的一?硬???!
    Hard Disk 最好能用 SCSI 介面的,因?速度??定度都比?好!如果不能的?,那? IDE 介面的硬碟由於目前速度也越?越快,所以使用 IDE 也?有??,但是最好是『多?硬碟』的架?,例如我?共需要 30 GB 的硬碟空?,那?最好是 10 GB 的硬碟三???的架??佳!?什?呢?由於 cache ?於 Proxy 的重要性相?的大,所以 cache ?取速度越快的?,代表 Proxy 的效能也?越好!那由於 Proxy ?每??料?入 cache ?,是『平均分?在各? cache 的目?中 』,所以?然硬碟?越多越好?!例如我原本有 10 MB 的?料要?入 cache ,那?? 10MB ?入同一?硬碟快??是 10MB 被分散?入三?硬碟,因此每一?硬碟??? 3.3MB ,那一?快??然是三?硬碟的架??比?快,因?我有三?磁?在?我?入?料嘛!^_^!?注意喔!??我??的是『多?硬碟』而不是『多? Partition 』喔!因?如果我? 30GB 的硬碟切割成三? partition 的??下,由於?是只有一?磁?啊,所以?入的速度差?不?很大!??要特?留意??解呢!
    ?路卡??路周?最好使用 GBytes 的?路卡,?然啦,一般的公司行???不需要用到??的?路卡才是!我??指的是?高?的配?啦!
     
    事?上,最重要的?是 RAM ? HD ???,?然,?路介面也??不能忽?就是了!??硬碟??,最好使用 SCSI ???定的介面,?然,使用 IDE 也是不?啦!但是要注意保?就是了。此外,就如同上面提到的,在硬碟的架?上是相?的重要的!一般??,使用磁碟?列??是不?的想法,如果?有?法的?,使用多?硬碟取代??硬碟的架?,在效能上也?有不?的?著提?呢!
     
    既然硬碟??重要,我?也?略?一?硬碟的基?????有哪些需要注意的呢?
     
    最好在架? Proxy ?,?整?主?的??做好,?且? Proxy 主?的服???一?,就是??? Proxy 就好了!
    每?硬碟的容量不需要太大,大?在 9 GB 以?即可,此外,最好?硬碟分割一下,一? Partition 差不多在 2~4 GB 之?即可,因?切太大的??料的搜?耗?????,但是 Partition 太小又可能造成空?的浪?~所以差不多的大小就限制在 2~4 GB 吧!
    我???上面有提?,cache 是放置在某?目?下的,而最好一?目?底下就是?立的一? partition 。此外,由於 cache 所在的硬碟常常?有?料的存取,因此可能此一硬碟的?耗率?比?大,所以?? cache 所在的硬碟最好不要跟重要?料?案,例如 /, /etc, /usr, /home 等等重要的系??案放在一起,以免危?啊!
    也由於 cache 所在的硬碟?料存取太密集了,所以,硬碟的??上面需要 (1)?速不能太低; (2)磁?的?械臂需要可以忍受?繁的?作; (3)??量不可太大,或者可以考?加?硬碟用?扇。
     

    --------------------------------------------------------------------------------
    代理伺服器? NAT 主?的差?
     
    或?您已???了一件事,那就是:在?部?域?路使用私有 IP 的 Client 端不?透? Proxy 或者 NAT 均可以直接取得 WWW ?? Internet 的服?,那? NAT ? Proxy 有?有什?不同的地方啊?他?不都是可以??部的 Client ?接出去??其????玩意?差?性是『相?大』的:
     
    NAT 是一?利用 TCP/IP 的 packet filter ( 封包???制 )??行封包?理的一??制,所以他是『直接分析 TCP/IP 』,所以在?定防火?的?候,他的?性比?高,只要能? NAT ?一?,那?大部分的?路服?都可以使用,因? TCP/IP 是比?底?的?定啊!要知道的是,TCP/IP 上??有 port 、?有 IP 等等的??,?是 port 就可以?我?使用很多的不同的?定了!例如 port 20, 21 是 FTP 啊, 80 是 WWW 啊等等的!所以 NAT 能做的事情事很多的!
     
    至於 Proxy 就不一?了, Proxy 主要透??似 Squid ?一?的????成的一?服?,基本上,一般??他是透? port 3128 ??行?料的?????,?是看到?? port 3128 就??要?得他?是一? daemon 而已。Proxy 已?是?用????段的?路?目了,所以他??有去分析 TCP 的封包,只要 Client ?源合乎他的需求 (例如 IP 是被支援的 ) ,那?他?透? daemon 的功能?使用者?成使用者所想要的任?!所以?,能不能做某些事情,? Proxy 伺服器上面??的那? daemon 是有?的!?一 daemon ?法?行 FTP ?料的取得,那?您再怎?努力的??上?也是枉然的啊!
     
    ???有?有比?有?概念了呢?NAT 是由?底?的?路去?行分析的工作,至於通? NAT 的封包是?嘛用的, NAT 不去管他!至於 proxy ?主要是由一? daemon 的功能?成的,所以必需要符合? daemon 的需求,才能?到某些功能!
     
    ?完了?些基本的原理之後,我?可得?玩一玩 Proxy 了吧?!事?上,目前有很多的 Proxy ??,例如 apache 也有提供 proxy 模?的功能喔!但是,最好不要用 Apache ?作您的 Proxy server ,因?.....效能真的太差了~??您的?路停?的更?害~目前 Proxy 的伺服器???中,以 squid ??咚咚最出名,?出名的原因是因?他的效能高!真的很不?的一套??,所以底下我?就?? squid ?做?明吧!

    --------------------------------------------------------------------------------
    套件安?
    我?的 Proxy 伺服器???? squid ??效能很高的套件?安?,目前 ( 2003/03 ) Squid 已?出到了 2.5 版了,您可以到官方?站上面下?,或者是到中山大?的 FTP ?站上面下?,底下提供一下??的?址:
     
    官方?站:http://www.squid-cache.org/Versions/v2/2.5/
    中山大?:http://ftp.nsysu.edu.tw/Unix/Proxy/squid/source/STABLE/
     
    同?的, squid 也有??主要的安?模式,分?是 RPM 版本? Tarball 版本,不?,由於我??加入一些不同的???定值,所以??的 RPM ?案??法?足我?的需求,除非使用 SRPM ??行重新 configuration 的?作,否?比?不能?我??意啦!因此,??上我?都是以 Tarball 的方式??行??、?定?安?,所以底下?哥?比?偏重以 Tarball 的安???行介?,如果有?趣的?,可以??以 SRPM ?行修?的工作喔!
     

    --------------------------------------------------------------------------------
    使用 RPM 方式安? squid
     
    一般??,使用您的 Linux distribution 提供的 Squid 也就?了,但是,就如同上面提到的,可能?有一些?定值您?法自由自在的?定,不?。不?,??如何,以 RPM ?安?是最?便的啦!那?就?拿出您的原版光碟,?他 Mount 上?,查?一下是否有 squid 字?的?案名????,就?他安?上去吧!目前主要的?? distribution 都有提供??套件,所以??可以很快的找到??套件才是!怎?使用 RPM 呢?????吧!
      [root@test root]# rpm -ivh squidxxxxxxx
     
    一再地??, RPM 是粉重要的,?好好的使用他吧! ^_^!??指令就安?完??!只是要注意的是,由於 squid 2.2 版以前的?定? 2.4 版以後的?定差?性很大,所以?特?留意您的 squid 版本,如果是使用?的 Linux distribution 的使用者,例如 Red Hat 6.xx 版本,或者是 Mandrake 7.xx 版本,那?就不要再以 RPM ?升?了!直接使用底下的 Tarball 吧!反正才安?一??案,?不?太?啦!
     

    --------------------------------------------------------------------------------
    使用 Tarball 方式安? squid
     
    一般??,我?真是?喜?中山大?的 FTP 站 ( 怪了,好像一直在?人家打?告! ^_^ ) ??法,我?南部人嘛!?然是南部的 FTP 站比??切?!???候,您可以直接在 Linux 底下使用 wget ?取得我?所需要的 squid 喔!目前我取得的版本是 2.5.STABLE2 版本,取得的方法如下:(?:您也可以到?哥的私房菜下? http://linux.vbird.org/download)
      [root@test root]# wget \
    http://ftp.nsysu.edu.tw/Unix/Proxy/squid/source/STABLE/squid-2.5.STABLE2.tar.gz
     
    好了,???案??就是 /root/squid-2.5.STABLE2.tar.gz ?!那?就?始??他安?吧!?程很??啦,重要的地方只有在下? ./configure 的地方需要很多的?外??支援就是了!
      0. 解??:
    [root@test root]# cd /usr/local/src
    [root@test src]# tar -zxvf /root/squid-2.5.STABLE2.tar.gz
    # ....(略)....??生一? squid-2.5.STABLE2 的目?
    [root@test src]# cd squid-2.5.STABLE2
     
    1. ?始?定??:
    [root@test squid-2.5.STABLE2]# export CFLAGES='-O2 -mcpu=i586'
    # ?是一??外的??啦!因?我?使用的是 Linux ,而我?的 GNU gcc
    # 有??每?不同的 CPU ??行套件的最佳化??!所以啦,就加入我?的
    # CPU 型?吧!因?我的 CPU 是 P-166 ,反正是?小案例啦!所以才?是 i586,
    # 您的 CPU 只要超???等?以上,就?是 i686 ?!此外,除了
    # i386, i486, i586, i686 ?有 pentium, pentium3, pentium4, athlon,
    # athlon-tbird, athlon-4, athlon-x, athlon-mp, k6, k6-2, k6-3 等等!
    # 如果不?定您的 CPU 那?就用 ix86 之?的方式?命名吧!不?,即使?有
    # ?入????也?所?啦!至於那? O2 是最佳化??啦!
     
    [root@test squid-2.5.STABLE2]# ./configure --prefix=/usr/local/squid \
    > --enable-gnuregex --enable-async-io=80 --enable-icmp \
    > --enable-kill-parent-hack --enable-snmp \
    > --disable-ident-lookups --enable-cahce-digests \
    > --enable-err-language="Traditional_Chinese" \
    > --enable-poll --enable-linux-netfilter
    # ??咚咚就有趣啦!因??在有相?多的??可以使用,你可以使用
    # ./configure --help ?察看可以使用的?多??啊!稍微解?一下各??定值:
    --prefix=/usr/local/squid:未?程式??完成後放置的安?目?;
    --enable-gnuregex:使用 GNU 提供的正?表示法的原???行??,?注意,
      因?在 Proxy 未?的???中,很可能??用到正?表示法的方式?
      抵?一些?意的?站,所以????要加入????的!
    --enable-async-io=80:???目主要在控制一些?出入的元件,使用???目
      可以?您的 Proxy 效能提升很多喔,因?是非同步?出 (async) 的模式啊!
      後面接的?值是可以??的,如果您的?站配?很高?,可以??????字
      提升到 160 以上,如果是小?站的?,那?可以考??他降低至 40 左右。
    --enable-icmp:要不要支援 ICMP 啊!?然是要的!
    --enbale-kill-parent-hack:在我?掉 squid 的?候,要不要?同
      parent process 一起?掉,?然也是要的啦!
    --enable-snmp:?????的 MRTG 比?有?啦!如果?有用到的?,
      可以考?????目拿掉也?有??!
    --enable-cache-digests:???目很重要的啦,我?在底下再?行?明。
    --enable-err-language="Traditional_Chinese":不需要?了吧?
      只要有任何的???息,??上面?示的?系?是中文喔!
    --enable-poll :可以提升效能;
    --enable-linux-netfilter:可以增加通透式 Proxy 的?定!後面再提啦!
     
    2. ?始??以及 Install ?!
    [root@test root]# make && make install
     
    3. ?始?定其他的相???
    [root@test root]# vi /etc/man.config
    # 在???案?中新加入一行:
    MANPATH /usr/local/squid/man # ? Squid 有?的 man page
    # 可以? squid 提供的?明文件? man 指令可以查到!
     
    就??????的步?就? squid ?他安?完?啦!很快速吧!所以我?,使用 Tarball ?安? squid 其?是很快的,不用太?心?!

    --------------------------------------------------------------------------------
    Server 端?定:
    ?於?到了主?端的?定?目啦!以下我??分???的介?各?主要的??值,?些??不?得?合您的 Proxy ?境,所以使用的?候敬?特?小心喔!每??目都要好好的?解一下?!另外,底下我主要是以 Tarball 安?的目??主要的介???,如果您是以 RPM ?安?的?,那?所有的?案原理??定?是一?的,只不??案存放的路?就不太一?就是了!?以 RPM 的指令或者是 locate ? find 的方式找出?您的?定?吧!
     

    --------------------------------------------------------------------------------
    squid 的??
     
    ??安?的目?其?是在 /usr/local/squid ??目?下,而??目?又分???主要的子目?,分??:
     
    bin/ :放置主要的 squid ?行 scripts 的目?,重要的是 RunCache 那??案;
    etc/ :?乎所有的 squid ?定?都在??;
    libexec/ :一些函式?;
    man/ :就是一些?上文件查??啦!
    sbin/ :重要的就是那? squid 的?行?!
    share/ :一些???息代?表示?案,以及一些小?示放置的目?;
    var/ :??是放置 log file 的,不?我不喜?放在??,??等一下我??修改的!
     
    那?主要的?定?有哪些呢?其?可以?只有??啦:
     
    /usr/local/squid/etc/squid.conf :??是主要的?定?,所有的 squid 所需要的?定都是放置在???案?中的!?哥底下提到的???定方法?乎都是???案?面的?明喔!所以,如果您英文不?,那?就直接看一下???案就知道如何?定 squid 啦!
    /usr/local/squid/etc/mime.conf :???案?是在?定 squid 所支援的 Internet 上面的?案格式,就是所?的 mime 格式?!一般??,???案的???容已?能?符合我?的需求了,所以不需要更?他,除非您很清楚的知道您所需要?外支援的 mime ?案格式。
     
    而?行?其?只有一?,那就是 squid 啦!不?, Squid ??套件?外的提供了??可?行的 scripts ??助大家?行 squid ,那就是在 bin/ ?面的 RunAccel ? RunCache :
     
    /usr/local/squid/sbin/squid :就是我??的 squid 的?行??!要知道??指令的????就使用『 ./squid --help 』就能知道有什???啦!
    /usr/local/squid/bin/RunCache :??是主要的?行 squid 的一支??的 script ,主要是利用 squid.conf ?定?案的?容??用 squid 喔!
    /usr/local/squid/bin/RunAccel :如果您的 WWW 服?也想要透? Squid ??行『加速』的?,那就可以使用 RunAccel ?取代 RunCache 了,不?,我通常?是使用 RunCache 而已!
     

    --------------------------------------------------------------------------------
    squid 的 process owner ? cache directory owner
     
    我?前面的原理部分稍微提?, squid 主要是以 daemon 提供的 Proxy 功能,而?? daemon 最大的功能就是? Internet 上面捉取的?料?他放入 Cache 目??中啦!而由於 daemon ??生一些 processes ( 程序 ),?些程序都?有 Owner 以及 Group 。???得我要?什?了吧?呵呵!??,那?放置 cache 的目? ( 底下?? cache dir ) 的?有者以及?有群?就必需要? squid ?生的 process 的?有者?群?相同才行!而?了保?起?,通常 squid 不?以 root ???,最好是以 nobody 或者是一些?限比?低的系??????他!假?我?的 squid ?? daemon 是由 nobody 所??的好了,而假?我的 cache dir 是放置在 /var/spool/squid 下面,??? /var/spool/squid 的 Owner ? group 就必需要是 nobody, nobody 才行!??很重要喔!因?大部分?法?用 squid 的朋友都是???作?有搞正?的原因啊!
     
    squid 的 Owner ? Group 是在 squid.conf ?面?定的,而至於 cache dir ?是需要我?手???定好他的?限呢!
     

    --------------------------------------------------------------------------------
    最?易的 squid ?定方法
     
    ?定 squid ?要修改一??案而已,那就是 /usr/local/squid/etc/squid.conf ?( RPM 版本就不相同?!?自行找出?吧! )!?注意,在??例子?中,我???有介?高?配?的?定,?只是列出重要的?定?目?有一些?念,您所想要的?定必需要?您的主???而定,例如 cache dir 每?人所放置的目?都不相同啊,所以直接拿我的?定????,可能?完蛋啊!?注意需要修改成您所想要的?式才行!好了,在??小??中,我??列出???一定要?定的??,至於更??的???留待後面分?介?。
     
    另外要?外提醒的是,在 squid.conf ???案?中,??的情?下是『除了本?可以使用 squid 的少部分功能外,其他所有的?目都?有被??』,所以您必需以 vi 的搜?功能找到下列的?定?目後,??解符? (#) 拿掉,或者是自行?入底下的?定才行喔!不?唆,?上?行吧!
      [root@test root]# cd /usr/local/squid/etc
    [root@test root]# vi squid.conf
    # 1. ?於?路的???定部分
    #   在??部分?中,最重要的就是?用 squid ?? daemon 的 port 了!
    #  在??的情?下,公?的?? proxy port ? 3128 ,至於被查?封包
    #  ?察的?是 3130 ?? port,??我?分??用??? port !如果您的
    #  Proxy ?有?人家代理 https ??由 SSL ?定?用的 port ,那??需要
    #  ?? https_port ,但是我???不?? SSL 啦!太危?了~
    http_port 3128
    icp_port 3130
     
    # 2. ?定快取目? ( Cache dir ) 的大小????案所在的目?
    #  ???定是重要到爆的地方,一定得?定正?才行啊!上面我?不是
    #  提??於硬碟?目???好了,?在??假?:我有?? partition ,
    #  ??? partition 分???在 /usr/local/squid/var/cache1
    #  以及 /usr/local/squid/var/cache2 ????域,此外,??
    #  partition 一?? 1GB (cache1) 另一?? 2 GB (cache2) ,??定?:
    #   <目?所在>
    #  那? aufs 只有在??的?候加入 --enable-async-io 那??目才有支援,
    #  至於目?所在地?所?用的磁碟大小???您的主?情?而定,
    #  而後面 dir1, dir2 ?是??次目?的大小,通常 16 256 或 64 64 皆可,
    #  一般??,?字最好是 16 的倍?,??效能?比?好啦!
    #  注意1:下面?行需要『?您的主??境而定!』不要照抄!
    #  注意2:在底下的例子中,我的?? partition 已? mount 上?目?了!
    #      ?也就是?,底下的??目?是『已?存在的!』
    cache_dir aufs /usr/local/squid/var/cache1 1000 16 256
    cache_dir aufs /usr/local/squid/var/cache2 2000 16 256
    #  底下?是?於???的放置目???名!
    cache_access_log /usr/local/squid/var/logs/access.log
    cache_log /usr/local/squid/var/logs/cache.log
    cache_store_log /usr/local/squid/var/logs/store.log
    pid_filename /usr/local/squid/var/logs/squid.pid
     
    # 3. ?????制
    #  不?得?什?,?一版的 squid ?自?的加入???制,?找到底下
    #  ?行,?他 mark 起?!
    #auth_param basic children 5
    #auth_param basic realm Squid proxy-caching web server
    #auth_param basic credentialsttl 2 hours
     
    # 4. 提供 squid 服?
    #  ??的情?下,?有本?可以使用 squid ,我?先?所有的?限?放
    #  然後在一?一?的???!先找到底下?一行:
    http_access deny all
    #  ?他改成
    http_access allow all
     
    # 5. ?定 squid 的?有者?系?管理?信箱:
    #  就是??我?上一小?提到的 squid 的?有者,?注意,??
    #  user ? group 必需要在 /etc/passwd 及 /etc/group ?面存在方可成功!
    #  我??以?限最小的 nobody, nogroup ?做??例,您也可以自行?定!
    #  另外,cache_mgr ?是 squid 管理?的信箱,? squid ?生???,
    #  ?幕上就?出???信箱?使用者??管理?之用!
    cache_effective_user nobody
    cache_effective_group nogroup # 您也可以改成 nobody !
    cache_mgr youraccount@your.e.mail
     
    # 6. ?更目??限:
    #  在??的情?下,我?主要的????都?入 /usr/local/squid/var ?面,
    #  所以???候需要???目?的?限改?成? nobody ? nogroup 所有!
    #  ?然?,如果您的 cache_dir 不在??目??中,那??需要?外自行建立,
    #  例如我的 cache_dir ?一是在 /proxy1 ? /proxy2 ?,那?我就必需要:
    #  chown -R nobody:nogroup /proxy1
    #  chown -R nobody:nogroup /proxy2
    #  ?於?限的??是很重要的!?不要忘?了!
    [root@test root]# chown -R nobody:nogroup /usr/local/squid/var
     
    # 7. ?始?? squid:
    #  ?? squid ??看看吧!不?,首先我?必需要建立快取目?的格式
    #  才行,此外,由於我?想要以 nobody ??? squid ,所以你需要??:
    [root@test root]# /usr/local/squid/sbin/squid -z # 建立 cache_dir
    [root@test root]# su nobody -c "/usr/local/squid/bin/RunCache &"
     
    # 8. 查看是否真的??了 squid 了?
    [root@test root]# netstat -tln | grep 3128
    tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN
     
    # 9. 重新?取?定? squid.conf 的方法:
    [root@test root]# /usr/local/squid/sbin/squid -k reconfigure
     
    在上面的?定中,重要的地方在於:
     
    你的硬碟??? cache_dir 的?定是否吻合:?注意,除非您是『架?著玩的,?粹??功力』的角度??定 Proxy ,那?可以直接以??的?定?搞定您的 cache_dir ,不然的?,前面我?提?,?? Cache dir 可是影? Proxy 效能的相?重要的因素之一,因此,千?不可大意啊!
     
    ?於?限的大??:由於我?常常提倡『不要以 root ??? daemon 』,所以?? squid 我?是以 nobody ? nogroup ???的!而 Process ??限的??是相?相?的重要的,因此,您必需要?上面??建立的 cache_dir 更?整?目?的?有者才行!如果是??功力而已,那??意建立一?目?更?一下他的?有者?群?,就行了,不然的?,?依照您的硬碟??好好的??一番!
     
    ?於 cache_dir 重新建置的步?:在上面的第 7 ?步??中,我?必需以 squid -z ?重建一下 cache_dir 的格式,??步?在第一次?? squid ?才做,其他?候就不需要?行了!而?行??步?之前,??必?上面提到的??注意事?先搞定,否?您的 squid 很???喔!
     
    ????器的查?:?然上面第 8 ?步?已???了 squid ??了,但是?不能肯定工作正常,???候如果您有 client 端的??,假?是 Windows 的 IE 好了,那?就?????看看能不能使用 squid ?!?? IE 後,按下:
    『工具』->
    『Internet ??』->
    『??』->
    『?域?路?定』中,??
    『使用 Proxy 伺服器』
    ?在?址列?入你的主?名? ( 或者是 IP 均可 ),然後按?定??!然後在 IE 中按按看??的?定有?有成功,如果可以?到??的?,表示 squid 可以正常的被使用了!
     
    cache_dir ????的意??存取格式的?型:
    ???定?目就是限制?存?大小的地方啦,格式?:
     
    cache_dir ufs /usr/local/squid/var/cache 100 16 256
     
    上面的?明是:?存?目?? /usr/local/squid/var/cache ,而?存空?大小? 100M , 在???存目?下有 16 ?目?,而每?目?中又有 256 ?目? ( 你可以???入 /usr/local/squid/cache ?中去看看 ) 。如果你要改??存?目?及??目?的大小?,可以在??修改!不建?修改 16, 256 ????值。另外,通常,如果是我?一般小型的?? ( 不超?10?人 ) ,那?定? 500 MB作? cache ???了,如果你的硬碟?大,?定成 1000 MB 以上更好,?然,?第一?注意事?相符的,需要?您的??硬碟大小以及 Partition 放置的目?互相配合才行。修改???指令後,要再重新?? squid 之前,?先使用下面的指令?使你的目?可以?行存取的?作,否?你的 squid 是不?工作的!例如你?上面的??修改成:
     
    cache_dir ufs /usr/local/squid/var/cache 1000 16 256
     
    然後再?行下面的指令:
     
    rm -rf /usr/local/squid/var/cache
    mkdir /usr/local/squid/var/cache
    chown nobody:nogroup /usr/local/squid/var/cache
    /usr/local/squid/sbin/squid -z
     
    ??你的squid?存目?就可以使用?!另外,如果你在?? (configure ?程中) 的?候有? --enable-async-io ?一???加??的?,?可以增加 aufs ?一??料存取的格式!??存取的格式可以?你的硬碟??到最?限的速度喔!?然在 squid.conf ?案中有提及,?? type 可能?有 bug 存在,不?,??哥的使用?果,??,?啥大??!好用的很!所以,你可以?上面的咚咚改成下面的?子:
    cache_dir aufs /usr/local/squid/var/cache 1000 16 256
     
    ??就算已?完成了一?『很?春』的小型 proxy 了!?什??很?春呢??是因??? Proxy ??有上? Proxy ??料,所以 Client 端的任何要求?? Proxy 都需要『自己去捉』啊!哇!那??? Proxy ?真累啊!??啊,所以底下我?要再??一?其他??增加 proxy 效能的方法,好?大家的 Proxy Server 可以真的加快您??的速度啊!
     

    --------------------------------------------------------------------------------
    ????磁碟快取留存百分比?定
     
    ????磁碟快取在 squid.conf ?中的相??易?定如下所示,至於更??的?明?在下表之後?行解?:
      # ????有?的?定:因?我的系?很小,所以只? 8 MB!如果您的?????
    # 很大的情?下,例如 512 MB,可以考?加大到 64 或 128 MB。
    cache_mem 8 MB
    # ?磁碟容量有?的?定(?:下列的 90 ? 95 是百分比 )
    # 如果您的 cache_dir 所在磁碟很大?,可以考?? 4096 改成 32768 KB
    cache_swap_low 90
    cache_swap_high 95
    maximum_object_size 4096 KB
    # ????保存?料有?的?定
    maximum_object_size_in_memory 8 KB
    # 我??由 dns 正反解以及 IP 的?果,??在?存?啊!
    ipcache_size 1024
    ipcache_low 90
    ipcache_high 95
    fqdncache_size 1024
     
    ???的需求?量:
    事?上,除了硬碟之外,???可能是另一?相?重要的影? Proxy 效能的因子!怎??呢?因? Proxy ???料存一份在 Cache 硬碟中,但是同?也???料?存在????中啊,以加快未?使用者存取同一份?料的速度!所以?,???本?就?被 squid 的程式所消耗掉一些!一般??,被 squid 消耗掉的????略每 1GBytes 的 cache_dir 空?就消耗 10MB 的???容量,所以,如果以上面我?的?定?例 (cache1, cache2 共有 3GB), 那?就有 30MB 以上的???被消耗掉了!除此之外, squid 程式?行?中亦??外的消耗掉一些?????,?部份?用掉的????? 10-20 MB 。
     
    除了?些???是必?要的之外,您?可以?外的指定一些?????行比?『??』的?料存取!也就是?,可以?外的再加一些?????助 squid 工作,而不?只是上面提到的???使用量!那?就是 cache_mem ???定??的用途啦!所以,?特?留意啊,『 cache_mem ?不是指我要使用多少???? squid 使用,而是指 "我?要?外提供多少???? squid 使用" 的意思』!因此,假?我有 X GB 的磁碟快取空?,而且 squid 程式使用掉 15 MB 的???,那?我 squid 使用掉的???就有:
     
    X * 10 + 15 + "cache_mem ?定值"
     
    您可以自行?算一下您的 squid 消耗掉多少???喔!此外, squid 官方?站建?您的????? (不含 swap 的???容量) 最好是上面?值的?倍,也就是?,假如我的快取容量? 3 GB , cache_mem ?定? 16MB ,那?我的 squid 至少?消耗掉 3*10+15+16 = 61MB,?我的?????最好至少要有 122 MB 以上,才?有比?好的效能!?然,???指 Proxy 部分而已,如果您的?部主??有??其他的工作,呵呵!那????就得在累加上去啦!一般??,如果您的 Proxy 很多人使用?,??值越大越好,但是最好也要符合上面的需求喔!
     
    ?於磁碟容量的?定:
    ?注意,如果您的磁碟快取空???了,那?您的 squid 也就『??』了!因此,???注意你的磁碟快取空?!但是,要我天天去注意 squid 的 cache_dir ?面的容量,也太?神了吧?!???候就必?要『cache_swap_low, cache_swap_high 』?些?定的?忙了!如果以上面表格的?定?例?,他的?明是『?我的快取目?所?容量??快取量的 95% ?,那?我的 squid ??自?的?快取目??的容量?低至剩下 90% 的容量!』注意,那? 90 ? 95 ?百分比例喔!以我?的?定?例,我的 cache_dir ?共有 3GB ,那??快取空?被使用了 3*0.95=2.85GB ?,我的 squid ?自?的? 2.85GB ?面??的?料?除,使快取目??剩下 3*0.9=2.7GB 的空?!??能?解了吧??特?注意,如果您的 proxy 容易很多人同?上??,??????值更?一下,例如?更? 70 85 ,?什?呢??一您的使用者突然?都上?了,然後下?大量的?案,那?『瞬?』可能?使您的 cache 目?超??度,?致 cache 死掉!所以降低 cache_swap_high ?於大型 proxy 是有需要的!
     
    是否需要??捉到的?料:
    ?有一?小??要?明的,是否使用者要求?的?料我都要??呢?呵呵!那?然不是啦!如果都??的?,?一像最近好多 Linux distribution 都?出了他?新版的 Linux ISO ?案,那些?案一?都有 600 MB 以上的容量,?一使用者下??????的?案,我?的 Proxy 想不爆掉都很?~所以???候就要限制一下需要??的『最大?案』啦!在??的情?下,我?的 squid ?於超? 4MB 的?案是不??的(就是不放入 cache 的意思),但是如果您的硬碟?大的?,我都喜?????值?大一?,?什?呢??一我的使用者常常下?一些 10~20 MB 的套件?案,?道我每次都要到官方?站去下?一次???然我不想??啊!所以我通常????值?大到 32MB ,或者是 32768 KB ?!除了磁碟快取之外,???的快取可以??的最大?案容量也可以修正一下喔!但是我?的???可就珍?的多了!不要?太大,大???值就很不?了!
     
    ?於 IP ?完整主?名?的??:
    如果能? IP ?主?名???下?的?,搜?的?步也?加快一些的!所以以上面的表格?例,我?分???了 ipcache_size ? fqdncache_size( 後面接的?值是 bytes )的??容量,由於?些?料都是 ASCII 的?料,用不了什?空?,因此 1024 bytes 已?足?了!至於後面的 low ? high ??前面?明的相同!
     

    --------------------------------------------------------------------------------
    acl 的用法?用途
     
    在 squid.conf ???案?面最常看到的大概就是 acl ???定?目了!他可是整? squid.conf 的重??啊!很多的?源?目的管制都是靠他??定完成的呢!我?底下就稍微?一???重要的咚咚吧!首先,他的?法?:
     
     
    上面那? 可以想成是一???就是了!?想太多~就只是一?代名?,至於 acl ?型可就有趣的多了,他主要有下面??大?:
     
    以?源端?控制:
    src  ip-address/netmask:主要控制『?源的 IP 位址』,例如『acl nckuip src 140.116.0.0/16』,?表示未?在 squid.conf ?面,任何使用到 nckuip ??代名??,就表示他是『?源? 140.116.0.0/16 的位址』!
    src addr1-addr2/netmask:主要控制『一段???源的 IP 位址』,例如『acl nckuevoffice src 140.116.44.120-140.116.44.130/24』就表示 nckuevoffice ??代名???自 140.116.44.120 到 140.116.44.130 之?? 11 ? IP 的要求!』?注意,是『?源』喔!
    srcdomain .foo.com:主要控制『?源?一某??域的??』的意思,例如:『acl vbirdhome srcdomain .vbird.org』,? src 很?似,都是控制?源的用?端,只不? src 控制的是 IP 而 srcdomain ?是控制 domain name 就是了!
     
    以目的端?控制:
    dst ip-address/netmask:主要控制『目的端的 IP 位址』,? src ?似,只不?是用?控制『目的端』的位址!
    dstdomain .foo.com:??就???了吧?就是用?控制『目的端的?域』?!? srcdomain ?似喔!
     
    以正?表示法的方式?控制:
    url_regex [-i] ^http:// :除了上面??基本的方法之外,我?也可以使用正?表示法的方式?控制『?域』的?定值呢!例如『 acl urlname url_regex ^http://linux\.vbird\.org.* 』?表示 urlname 代表的就是?自 http://linux.vbird.org ???站的『任何?料』,因?『 .* 』代表任意字元的意思啊!如果?只是一些?名,例如 gif ?一?的?名?,要怎?作呢?就如底下的?明啦!
    urlpath_regex [-i] \.gif$:上面提到的是?於整??址的名?,???是只要『URL 部分相同』就可以啦!例如『acl gifname urlpath_regex \.gif$ 』?是代表 gifname 代表的是 url 後面是 .gif 的?址,呵呵!那就是 gif 的??附?名嘛!!????不?理解了吧!
     
    由於在 squid ?中很多?候都?用到一些 IP ?域啦,以及 domain name 等等的?料,???候?? acl 就可以看做? bash ?面的『??』很?似?!您可以?考看看的啦!只是他的用途相?的?泛,??在底下我???一步的使用 acl 搭配各??定值??行?明的!
     

    --------------------------------------------------------------------------------
    上? Proxy 的?????分流的?定方法
     
    上? Proxy 的?定方式: cache_peer
    我?在上面的原理部分?明?,一部有效能的 Proxy server 必?要能利用上? Proxy 所提供的效能,才能?到我?所想要的『加速』功能!那??然大前提之下就是需要先找到『最佳效能的上? Proxy 主?』?!??!就是??的啦!在??,我?以成功大?的???路?架??行?明,如果您的?路架??非????位的?,?依照您能找到的上? Proxy ??行?定喔!需要特?留意的是,由於成大有?多的上?代理伺服器,?些伺服器都可以做?我?人 proxy 的 parent proxy 主?,不?,由於各?主要的 parent proxy 所提供的?域服?都不?相同,所以我?得先?主要的??伺服器??的?域?他找出?,底下是一?例子:
     
    gate.ncku.edu.tw 主要服? .com 的?域
    gate3.ncku.edu.tw 主要服? .net .edu 的?域
    gate2.ncku.edu.tw 主要服?非 .com .net ? .edu 的?域
    proxy.ncku.edu.tw 主要服?任何?址
     
    至於在 squid.conf ?中?定的???是『cache_peer 』???目,?定的?式?:
      <主?名?> <其他??>
    ??:主要有上?(parent) ?同一? (sibling) ??,我???主要介?的是
       上? Proxy 也就是 parent ?一大?,如果您想要架?一?小型的 Proxy
       Cluster 的?,可以考??成 sibling 的功能,由於我??想要架??部
       Proxy Server ,所以??我?就不探? sibling 了!
    http_port icp_port:就是我?最前面?定的啦! Internet 上面??是
       3128 3130 ???!
    其他??:其他??的部分就很重要了,主要有底下??重要??:
      proxy-only :只取出上? Proxy 的 cache ? client ,?不??上? Proxy
        的?料存在自己的 cache 硬碟中;
      weight=n :?重的意思,因?我?可以指定多部上? Proxy 主?,哪一部
        最重要?就可以利用?? weight ??定, n 越大表示?部 Proxy
        越重要!
      no-query :一般??,如果要向 sibling 要求?料?,?向 sibling 送出
        icp 的要求封包,使用 no-query 就可以取消。一般??,如果向上?
        Proxy 要求?料?,可以不需要?送 icp 封包,以降低主?的??
      default  :表示?部主????的 Proxy 主?的意思;
      no-netdb-exchange:表示不向附近的 Proxy 主?送出 imcp 的封包要求
      no-digest :表示不向附近主?要求建立 digest ??表格。
    ?例:
    cache_peer gate.ncku.edu.tw parent 3128 3130 no-digest no-netdb-exchange
    cache_peer gate2.ncku.edu.tw parent 3128 3130 no-digest no-netdb-exchange
    cache_peer gate3.ncku.edu.tw parent 3128 3130 no-digest no-netdb-exchange
    cache_peer proxy.ncku.edu.tw parent 3128 3130 no-digest no-netdb-exchange
     
    基本上,由於我?向上? Proxy 要求?料的?候,也是需要??的,因此,??我?建?您不要?定太多的上? proxy 主?,一般??, 2~4 部也就足?了,太多部 上?Proxy 的情?反而可能?拖垮您的 Proxy 速度呢!OK!既然有了上? Proxy ,而且每一部所??的?域?不相同,所以我??然就需要??域分????!如何??些?域分???呢?那就需要 acl 的?忙啦!先提醒一下,由於我?的 Proxy 旨在?助 client 端取得?料,所以使用 acl 的?候,是??『目?』??行?定的,因此,使用的是 dst ? dstdomain 喔!在??,我??主要的?域分成底下??大?:
      0. 自己想要直接使用自己的 Proxy 捉取的?料
    acl directip dst 140.116.44.0/24
    acl directdn dstdomain .vbird.org tw.yaoo.com tw.news.yahoo.com
    1. 成大附近的?域
    acl nckudn dstdomain .ncku.edu.tw
    acl nckuip dst 140.116.0.0/16 163.28.112.0/24 163.28.113.0/24 163.28.114.0/24 163.28.115.0/24 163.28.116.0/24 163.28.117.0/24
     
    2. 台?的?域 (?注意:底下?同一行)
    acl twdn dstdomain .tw .twnic.net .hinet.net .acer.net .wownet.net .seeder.net .silkera.net .neto.net timenet.net tw.aunet.net .adsldns.org
     
    3. 台?的 IP (注意:底下?同一行)
    acl twip dst 163.28.0.0/16 140.96.0.0/11 140.128.0.0/12 140.92.0.0/16 139.175.0.0/16 139.223.0.0/16 163.12.0.0/14 163.16.0.0/14 168.95.0.0/16 192.72.0.0/16 192.83.160.0/19 192.83.192.0/22 192.192.0.0/16 202.39.0.0/16 202.132.128.0/17 202.145.224.0/19 203.64.0.0/12 210.64.0.0/13 210.60.0.0/14
     
    4. 一些商?、?域、教育、以及其他的?域
    acl comdn dstdomain .com
    acl netdn dstdomain .net
    acl edudn dstdomain .edu

     
    ??子就作好了基?的工作了!接著下?,我?要?始??定『各?主要的?域要透?哪一?上? Proxy ??行?料的取得?』??就有??度啦!得小心在意一下!我?的基本假????:
    gate.ncku.edu.tw ??? .com 的?域;
    gate3.ncku.edu.tw ??? .net ? .edu 的?域
    gate2.ncku.edu.tw 不??上面的三??域
    proxy.ncku.edu.tw 不??上面三??域
    ??一?,使用 cache_peer_access ???定?目?,我?的?定??成??喔!
      # 主要的格式?例:
    # <上? Proxy >
    cache_peer_access gate.ncku.edu.tw allow comdn
    cache_peer_access gate.ncku.edu.tw deny !comdn
    cache_peer_access gate3.ncku.edu.tw allow netdn
    cache_peer_access gate3.ncku.edu.tw allow edudn
    cache_peer_access gate3.ncku.edu.tw deny !netdn
    cache_peer_access gate3.ncku.edu.tw deny !edudn
    cache_peer_access gate2.ncku.edu.tw deny comdn
    cache_peer_access gate2.ncku.edu.tw deny netdn
    cache_peer_access gate2.ncku.edu.tw deny edudn
    cache_peer_access gate2.ncku.edu.tw deny directdn
    cache_peer_access gate2.ncku.edu.tw deny directip
    cache_peer_access gate2.ncku.edu.tw deny twdn
    cache_peer_access gate2.ncku.edu.tw deny twip
    cache_peer_access gate2.ncku.edu.tw deny nckudn
    cache_peer_access gate2.ncku.edu.tw deny nckuip
    cache_peer_access proxy.ncku.edu.tw deny comdn
    cache_peer_access proxy.ncku.edu.tw deny netdn
    cache_peer_access proxy.ncku.edu.tw deny edudn
    cache_peer_access proxy.ncku.edu.tw deny directdn
    cache_peer_access proxy.ncku.edu.tw deny directip
    cache_peer_access proxy.ncku.edu.tw deny twdn
    cache_peer_access proxy.ncku.edu.tw deny twip
    cache_peer_access proxy.ncku.edu.tw deny nckudn
    cache_peer_access proxy.ncku.edu.tw deny nckuip
     
    ??上面???作,我?就可以? .com 的要求?? gate.ncku.edu.tw ?一部,?且? .net ? .edu ? gate3.ncku.edu.tw ?服?!此外,??有被自己定?出?的 IP 或者是?域就?? gate2 以及 proxy ??部?服?,至於我?既然是在台?,所以自己定?出?的四? acl 名字 (directdn, directip, twdn, twip) ?然是直接交?我?自己的 Proxy ?捉取了,相信速度上面??不?有任何的影?的!因此,那四?主要的 acl 名??在後面??介?如何不要透?上? Proxy ?捉取?料喔! ( ??考 always_direct ? never_direct 的?定值 )
     
    不要?行 cache 的?定值:
    就如同我?在原理的部分提到的,有些?站的?料事?上??有做? cache 的需要,例如 CGI ?案就是一?很?明的案例!所以,一般而言, squid 在一?始就?自??我??定好底下?三行:
      hierarchy_stoplist cgi-bin ?
    acl QUERY urlpath_regex cgi-bin \?
    no_cache deny QUERY
     
    上面?三行的意思是:『只要在?址列出?了 cgi-bin 的字??,????料就不?行 cache 的?作!』??一?,可以避免我?的主?存放太多的垃圾啊! ^_^!?然啦,在某些?候,例如您所在的?域真的是很慢,同?又?有?合的上? Proxy 的?境下,那?? cgi 之?的?? cache 下?,也未?不是一?可以?省????的一?方法!如果?定要? cgi-bin 底下的??也存下?的?,那?就?上面三行?解掉?!
     

    --------------------------------------------------------------------------------
    ???相?的?定值 ( connect_timeout, request_timeout )
     
    由於 Proxy 的?定除了防火?的?外功能外,最主要的目的?是在於????料 cache 下?!既然如此的?,那?? Server 的????的??就?的很重要啦!怎??呢??一今天您有?定三部上? Proxy ,每一部的要求??都控制在 5 分?,如此一?,呵呵!?一今天?好三部上? Proxy 都??,?道我?就宿命似的要等待 15 分????然不是啦!所以???候,我?可以???的等待???短,好? Proxy 可以??更??大的功能啊!
      # 1. ?於 cache 的更新????
    # 我?在快取?中的?料?是需要更新的?吧!那?如何?定更新的??呢?
    # <最小??> <百分比> <最大??>
    # 注意,那? regex 指的是『目?』,??『目?』大部分??址,而???址
    # 使用正?表示法?表示就是了!上面的意?是?:最小的??? (分?),如果
    # ?案有更?,就直接更新,或者是目??案上次更新的??到?在已???最大
    # ??的『百分比』?,就予以更新!?例如下:
    refresh_pattern ^ftp: 1440 20% 10080
    refresh_pattern ^gopher: 1440 0% 1440
    refresh_pattern . 0 20% 4320
    # 第一行的意思是,如果?址裂??是 ftp 的?,那?在一天(1440分?)後,如果
    # proxy 再次取用???案?,? cache ?的?料?被更新!
    # 2. ?於????限制
    # connect_timeout 指的是?接到其他主?的??多久之後算失?,??是?分?
    #        不?我?得我的?器??速度?算快速,所以?低了??
    # peer_connect_timeout 指的是?接到上? Proxy 多久不成功就算失?,
    #        由於上? Proxy ?我的?境息息相?,不可能?不上,
    #        所以我??????整的很短!
    # request_timeout 指的是,??上了,但是要求的???多??
    # persistent_request_timeout 指的是??要求???有多??
    connect_timeout 30 seconds
    peer_connect_timeout 10 seconds
    request_timeout 1 minutes
    persistent_request_timeout 20 seconds
    # ?特?注意喔!上面的?定?中,是因?我的?境『?算不?』,所以我?
    # ???整的很短,因?我?得我的?境?中不?有花很???的??,
    # ???依照您的?路?境??整喔!或者乾脆不要?定也?有??!

     

    --------------------------------------------------------------------------------
    ?是系?自己?捉?料(always_direct)
     
    ??我?在主?分流的地方有提?,有些?料我?要?我?自己的 Proxy 去捉取?料即可,而不透?上? Proxy ,那?怎??到??的目的呢?也不是很?啦!就告? Proxy 不要去捉就好啦!怎?告?他呢?使用 always_direct 或 never_direct 即可!
      # 1. 使用 acl 先定?出要直接或者不要直接去的?址或 IP ,
    #   ??部分我???在上面已??定好了,就是 directip ? directdn,
    #  ?有 twdn ? twip ???咚咚!
    # 2. 如果是直接要 Proxy 出去捉?料,可以使用 always_direct
    always_direct allow directip directdn
    # 3. 如果一定『拒??由上? Proxy 出去』的?,可以使用 never_direct
    never_direct deny twdn twip

    # never_direct allow 表示一定??由上? Proxy ?捉?料,
    # never_direct deny ?然就表示一定是自己向外?捉?料?!

     
    事?上,???西可以?我?的 Proxy ?的很?活!假???的一?案例,我?自己有一??部的 WWW ?站,???站的?址? 192.168.0.100 ,如果我要?由上? Proxy 去捉?料的?,那不就完蛋了~因???是『私有 IP 』的?域啊!所以,我?他?入 directip 那? acl 的?定?中,如此一?,呵呵!我?的 Proxy ?自?的?由自己的 route table 去到?部?域?取?料?你,您根本不需要?更您的其他?定就可以自由自在的?取?部?外部的主??料!此外,如果您??同一?域?有其他的 WWW 主?,把?些主?的 IP 或主?名??入 directdn 或 directip 的 acl ?定?中吧!因?在同一?域?,您自己去捉一定?比上? proxy 捉完之後再??你?的快吧!
     
    ?然?不只如此啦,有的 WWW主?由於?定的??,他??不允?我?的上? Proxy ?捉取?料,最常?的例子就是?似???校?的 client 端?放的??查?的??了!因?如果?放了?些上? proxy 的?,那?全台?所有的人只要?他?的??器 proxy ?定?成大的上? proxy 主?,就可以使用成大的?源了!那?不麻??因??些?源是需要花???的啊!???候,您也就必?要??些?址?由我?的 Proxy 自己去捉取?!??可以?解乎!
     

    --------------------------------------------------------------------------------
    限制使用 proxy 使用者? proxy 目?的方式 (acl and http_access )
     
    既然 proxy 有一定的??存在,自然就不能?任何人都能使用你的 proxy 主??!??!所以我?必?要管制??的使用者!管制的方法真是??的很!就是使用 acl 配合 http_access 即可!在??的情?中, squid 已??我??定好一些安全的可以??的 port 了,此外,也只有本?可以使用 proxy 功能呢!
     
    那??一如果我???部 192.168.0.0/24 ???域的使用者可以使用我的 proxy 呢??如何?定?呵呵!您可以??做:
      # 1. 先?定???部?域的 acl 名?
    acl inside src 192.168.0.0/24
     
    # 2. ?定 http_access ?他可以使用
    http_access allow inside
    http_access deny all
     
    那? http_access deny all 是系???的?目!??我?在 最??的 squid.conf ?定 ?已??他改成 http_access allow all 了!所以??得?他?改回?啊!不然的?,您的 Proxy 很有可能?被人家利用喔!
     
    ??再提供一?值得思考的咚咚,如果您跟我一?,都是使用?接的 ADSL ,??一?,由於我?的 IP 都不是固定的,如果要?我?的 ADSL ?接的 client 可以使用我????定的 Proxy ?,?怎???啊!??就不能使用『 acl 配合 src 』的?定方式了??呵呵!?然不是,您可以??想像:
     
    我先申?一??? DNS 的?域名?,例如我的 tsai.adsldns.org ;
    ?然我可以直接在 squid.conf ?中?定 acl ?使用 srcdomain ??定我的 tsai.adsldns.org ,但是很抱歉的是,如果我的 tsai.adsldns.org ??接到 Proxy 主??,事?上,我的?接制 IP 反查得到的主?名?一定不是 tsai.adsldns.org ,如此一?? srcdomain 一?用?也?有了;
    再??方式,如果我?一支 script ??? tsai.adsldns.org 所??的 IP 呢??且?他?入一?自?的?定??中,??一?,???案?????最新的 tsai.adsldns.org 的 IP ,如此一?,我就可以使用 acl 配合 src 的?定方式了!
     
    很麻???一?也不?,整? script 可以像底下??:
      [root@test root]# cd /usr/local/squid/etc
    [root@test etc]# vi squid.allow.sh
    #!/bin/bash
    # ?支程式可以用?查?您的 IP 喔!
    # 1. ??入您的主?名?,?注意,如果有??以上的主?名?,
    # ?分?以空格分?各?主?名?
    hostnames='tsai.adsldns.org test.adsldns.org'
    basedir=/usr/local/squid/etc/
    email=root@localhost
    squid=/usr/local/squid/sbin/squid

    # 2. 以下?程式段,看看就好了!
    [ -f $basedir/squid.allow.hosts.raw ] || \
    touch $basedir/squid.allow.hosts.raw

    cat /dev/null > $basedir/squid.allow.hosts.now
    runornot=no

    for host in $hostnames
    do
    hostip=`host $host | awk '{print $4}'`
    if [ "$hostip" == "out;" ]; then
    echo 'Proxy 回?:?有 DNS 的?息!' |\
    mail -s 'Proxy 主?回?' $email
    exit
    fi
    fileraw="$basedir"/squid.allow.`echo $host|cut -d '.' -f1`
    [ -f $fileraw ] || touch $fileraw
    hostraw=`cat $fileraw`
    if [ "$hostraw" != "$hostip" ]; then
    runornot="yes"
    echo $hostip > $fileraw
    fi
    echo $hostip >> $basedir/squid.allow.hosts.now
    done

    if [ "$runornot" == "yes" ]; then
    cat $basedir/squid.allow.hosts.raw > $basedir/squid.allow.hosts
    cat $basedir/squid.allow.hosts.now >> $basedir/squid.allow.hosts
    $squid -k reconfigure
    mail -s 'Proxy 主?回?!Client IP 已?改?' $email < $basedir/squid.allow.hosts
    fi

     
    如此一?,我?可以把我的??最新的 IP ??在 /usr/local/squid/etc/squid.allow.hosts ???案?中!那?要如何更新???案的?容在 squid 的?定?中呢!就???定即可:
      # 1. 先?定???案的名?吧!
    acl allowhost src "/usr/local/squid/etc/squid.allow.hosts"
     
    # 2. ?定 http_access ?他可以使用
    http_access allow allowhost
    http_access deny all
     
    然後?上面?? squid.allow.sh ?他??去 crontab ?中,我??都是在 30 分?跑一次!
      [root @test root]# vi /etc/crontab
    10,30 * * * * root /usr/local/squid/etc/squid.allow.sh
     
    ??就完整的啦! ^_^
     

    --------------------------------------------------------------------------------
    ?外的功能??
     
    除了上面提到的?些?於??快取的功能之外, Proxy ?可以?我??行 FTP 的服?取得?料喔!我?可以透???器,?由 proxy 提供的 FTP 功能?登入?方主?,?然,?方主?必?要能?提供匿名登入啊!好了,我??看看要怎??定呢?
      # ? FTP 有?的?定?目,主要是??被?式??方式??定喔!
    ftp_user Squid@
    ftp_passive on
    # 主要? DNS 的?定值有?,如果在高??的 Proxy ?境下,可以考??
    # dns_children 提高到 20 左右,??值最大? 32
    dns_timeout 1 minutes
    hosts_file /etc/hosts

     
    ?有一些?外的?例可以?考看看喔:
    ?哥的?例:http://linux.vbird.org/linux_server/0420squid/0420squid_vbird_ex
    成大 gate.ncku.edu.tw 的 squid.conf ?定:http://turtle.ee.ncku.edu.tw/~tung/proxy/squid.conf.ncku
    ??系 turtle.ee.ncku.edu.tw 的 squid.conf ?定:http://turtle.ee.ncku.edu.tw/~tung/proxy/squid.conf.turtle
    台南?校?例 proxy.school.tn.edu.tw 的 squid.conf ?定:http://turtle.ee.ncku.edu.tw/~tung/proxy/squid.conf.school.tn

    --------------------------------------------------------------------------------
    Client 端?定
    既然 proxy 是???器用的,那?自然在??器上面就需要?定一些???!呵呵,??!那?如何?定呢?由於不同的??器在?定 Proxy 的地方也都不同,所以底下我?介?目前比?常?的?款??器,分?是 Netscape 以及 IE 的?定,至於其他的??器,??考各??器的相??明啊!
     

    --------------------------------------------------------------------------------
    Netscape
     
    Netscape 的?定?不?,只要修改一?小地方即可!
     
    ?? Netscape 之後,?用『??』???『偏好?定』?目,如下所示:
     

     
    在出?的?面?中,先按下『??』左?的展?模式,然後??底下的『代理伺服器』,??面?出?如下的模?。之後,在右?的?窗?中??『自行?定代理伺服器的??』?目,?且再按下『??』,?到下一步去?定:
     

     
    在出?的方框中,由於我?通常??? WWW ?行快取,所以可以??? HTTP 的?目?行?定!在下面的?面?中,??入『Proxy 主?的 IP 或者是 domain name 』,以及『?接的 port number』,??就可以了。不?,如果有某些?域您想要直接?你的 PC 去捉取?料?,可以???域名?填?在最下方的方框中!以下面的?面?例,我的 PC 要?接到 linux.vbird.org 以及 www.study-area.org ?,就可以不透? Proxy 啦!??功能也挺?合可以自行?配流量、流速的朋友!
     

     
    再按下『?定』之後,立刻就生效了!
     

    --------------------------------------------------------------------------------
    Internet Explorer
     
    在 IE 的?定上面也一?都不?啊!
     
    ?? IE ,然後在『工具』???『Internet ??』:
     

     
    在??的?窗???『??』???下方的『?域?路?定』:
     

     
    在出?的方框中,先在下方打勾起『使用 Proxy 伺服器』,然後依序在?址列填入『 Proxy 的?址或者是 IP 』以及?接埠填入『 Proxy 所?放的 port number』,如下方的?定即可。
     

     
    另外,如果有某些?域不想透???上? Proxy 的?,??上?的 『??』那一?,在出?的框框的最底下,可以填入你不想透? Proxy 捉取的?站?址,如下所示:
     

     
    如此一???定好了 Proxy Server ?!

    --------------------------------------------------------------------------------
    Server 端???定
    既然一些主?的?定已?搞定了,接著下?又是到了 Server 的安全????定??啦!那?在安全的?定方面,最重要的自然又是我?一再??的登??的分析?!如何分析登??呢??道又要自己?手?分析的 scripts ??呵呵!不用麻?了,我?可以使用前?智慧的?晶,直接有??可以??行分析喔!?有,既然?? Proxy 可能?被?用,所以?然要??的管理了!???候的防火??定又要出?啦!呵呵!???看一下怎??理吧!
     

    --------------------------------------------------------------------------------
    末端?料分析 pwebstat
     
    事?上, squid 已?有?多的登??分析??了,而且大多是免?的 (http://www.squid-cache.org/Scripts/) ,您可以依照自己的喜好?加以安??分析你的 squid 喔!我???介?目前很常被使用的一套??,也就是 pwebstats ?一套!你可以在 pwebstats 的官方?站上面查得更新的?料 ( http://martin.gleeson.com/pwebstats/installation.html )。不?,由於 pwebstats 在安?的?候需要使用到其他的函式?,因此,你必?要先安? fly ?套??才行啊!而在安? fly 之前,又需要先安?一些必?的?示用的函式?才行,那就是?似 gd, libpng, zlib 等等的套件喔!?起?似乎很多?西要做,但是事?上?非常??的啦!好吧!那?我?就一步一步的?安??? pwebstats 吧!
     
    安?所需要的套件?料:
    除了系?自己可能已?安?好的 gd, libpng, zlib 之外,您可以由文末提供的官方?站的???取得最新的 fly ? pwebstats 套件,而如果您不需要使用最新的?料,那?也可以?由 ?哥的私房菜 提供的比??的套件版本?安? ( http://linux.vbird.org/download/ )。我??假?您已??所需要的 fly-2.0.0.tar.gz ? pwebstats-1.3.8.tar.gz 套件都下?到 /root 底下了,那?您可以??做:
      1. ??一下到底有?有我?需要的一些相?套件?
    [root@test root]# rpm -qa | egrep '(^gd-|^zlib-|^libpng-)'
    libpng-devel-1.0.14-0.7x.4
    gd-1.8.4-4
    zlib-1.1.3-25.7
    zlib-devel-1.1.3-25.7
    libpng-1.0.14-0.7x.4
    gd-devel-1.8.4-4
    # ?注意,我是以 Red Hat 7.2 ?例,如果您的系??非 RH 7.2 ,那?可能
    # 套件後面接的版本?不太一?,不?,至少都需要有上面的??套件就是了!
    # 就是 gd, zlib, libpng ?三?套件啦!有的 distribution ??有 xxx-devel
    # 之?的名?,那?也需要安?喔!如果???有安?的?,?拿出您的原版光碟片,
    # ?他 mount 上之後,好好的?他搜?一下,?且安?上去吧!很重要,一定要
    # 安??些套件之後,底下的?作才?成功呢!
     
    2. ?始安? fly ?支程式
    [root@test root]# cd /usr/local/src
    [root@test src]# tar -zxvf /root/fly-2.0.0.tar.gz
    # ....??生一? fly-2.0.0 的目?
    [root@test src]# cd fly-2.0.0
    [root@test fly-2.0.0]# make
    ?:
    # ....如果?有出?底下的字?那?就是成功了!
    /usr/bin/ld: cannot find -lttf (或者是 ljpeng ...)
    collect2: ld returned 1 exit status
    make: *** [fly] Error 1
    # 如果是出? warning 的?,?不打?,因??只是警告而已,所以??不大,
    # 但是如果出?上面的字??,就???出?第三行的 Error ,那就是??失?了
    # 果真如此的?,?先?找一下,以上面?例,找不到 lttf ,而 lttf 其?
    # 就是 libttf ?名啦!(所以 ljpeg 就是 libjpeg )所以?他下?:
    loate libttf
    /usr/lib/libttf.so.2
    # 嗯!找到了!其?是 libttf.so.2 啦!如果你的系?跟我的不同,有可能?名
    # ?不一?,所以?依照你的?幕?示的?息?下?指令喔!但是????程式
    # 有?笨,不?????案,所以我?要欺?他一下,就是下?:
    ln -s /usr/lib/libttf.so.2 /usr/lib/libttf.so
    # ??就可以啦!如果?有找不到的?案,同?的方式?他??一下即可!然後
    # 再次的?他?行一次 make 即可!最後??生一??名? fly 的?行?,
    # 如果?有?生?行?,那就是有??啦!???再回?去查一查是否有某些
    # 套件?有安?,或者?有依照上面的方式建立???案!
     
    [root@test fly-2.0.0]# cp fly /usr/local/bin
    我?先? fly ?支程式?他??到 /usr/local/bin ??目?去,可以直接使用
    ??就 OK 了!
     
    3. ?始安? pwebstats 套件
    [root@test root]# cd /usr/local/src
    [root@test src]# tar -zxvf /root/pwebstats-1.3.8.tar.gz
    # 此???生 /usr/local/src/pwebstats-1.3.8 ??目?,?目??面
    # 已?是可以?行的?料了,不需要?行任何的??,所以我??他直接移?到
    # /usr/local/ ?面去!
    [root@test src]# mv pwebstats-1.3.8 /usr/local/pwebstats
    [root@test src]# cd /usr/local/pwebstats
    [root@test pwebstats]# vi pwebstats <==??是主要的?行?!
    # 由於我?的 perl ??程式?言的?行?是放置在 /usr/bin/perl ,但是
    # ?支程式??是???:
    #!/usr/local/bin/perl
    # ?上面改??
    #!/usr/bin/perl
    # ??就可以了!??下一步!
     
    4. ?始?定 squid 的?出?入??:
    前提要件:
    a. 我的 WWW 主?目?在 /var/www/html
    b. 我的 pwebstats 整??料?放置在 /usr/local/pwebstats
    c. 我的 squid 登??放置在 /usr/local/squid/var/logs/access.log.0
    d. 我的 squid 的?行?? /usr/local/squid/sbin/squid
    e. 我的 pwebstats ?出的?料放置在 /var/www/html/pwebstats
    f. 我的 fly 是放在 /usr/local/bin/fly
    [root@test pwebstats]# mkdir /var/www/html/pwebstats<=?依您的主?而定
    [root@test pwebstats]# cd /usr/local/pwebstats/conf
    [root@test conf]# vi squid-proxy.conf <==??就是主要的?定?!
    # 底下?填?你的主?的『??』!
    server:My_Proxy_Server
    # ??是?示在??上面的???容!
    Server_header:我的代理伺服器
    # squid 登??放置的完整?名
    logfile:/usr/local/squid/var/logs/access.log.0
    # 我?使用的就是 squid 的登??啊!所以??不需改?
    logtype:squid
    # ??提到的,???料要?出到底下的目?
    outdir:/var/www/html/pwebstats
    # 一些?像?案的??目?,??我?使用 pwebstats 提供的目?!
    templates:/usr/local/pwebstats/templates
    # 嗯!我?就天天??行一次吧!可以用 weekly 或 daily
    interval:daily
    # 是否在?行的?程中?他?出?息呢?好吧!
    verbose:true
    # fly 放置的目?,??我?移?的目?啊!
    fly_prog:/usr/local/bin/fly
    # 本?端的要求,??可以不用?定喔!
    local_patt:
    # 列出?部 client ???我?他?? 50 部好了!
    host_threshold:50
    # 列出?部 Server (被要求?料者),?是?? 100 部吧!
    remote_host_threshold:100
    # ??的次?,?他 100 次好了!
    item_threshold:100
    # 做多少? domain 的分析??他 15 ?就?多了!
    domain_threshold:15
    # 底下保留??值即可! (最後面的 dns 反查可以??!)
    exclude_reqs:true
    #complete_exclude_host:
    #complete_exclude_url_patt:
    #complete_exclude_user:
    dns_lookup:true
    # 事?上,只要上面粗?字的地方??就好了!其他的保留??值即可!
     
    5. ???行一次看看:
    [root@test conf]# /usr/local/squid/sbin/squid -k rotate
    上面???作?? squid 的登???行 logrotate 的?作喔!就?更新了
    /usr/local/squid/var/logs/access.log.0 ???案啦!
    [root@test conf]# /usr/local/pwebstats/pwebstats -c \
    > /usr/local/pwebstats/conf/squid-proxy.conf
    .....(略)......
    -- Reading in log file /usr/local/squid/var/logs/access.log.0:
    The logfile has 27 entries.
    Processing...
    0% 50% 100%
    |-----------------------|------------------------|
    ##################################################
    Finished.
    .....(略)......
    呵呵!??就是成功啦!!!!
     
    6. ?每天?行的指令?成 scripts 吧!
    # 我?他?在/usr/local/pwebstats/pwebstats.sh ???案?中喔!
    [root@test conf]# vi /usr/local/pwebstats/pwebstats.sh
    #!/bin/bash
    /usr/local/squid/sbin/squid -k rotate
    sync; sleep 5s
    /usr/local/pwebstats/pwebstats -c /usr/local/pwebstats/conf/squid-proxy.conf
    [root@test conf]# chmod 755 /usr/local/pwebstats/pwebstats.sh
    [root@test conf]# vi /etc/crontab
    # 加入底下?一行吧!
    59 2 * * * root /usr/local/pwebstats/pwebstats.sh >/dev/null 2>&1
     
    很??吧!??就安?完?了!不?,由於我?安?的 fly 可能有???啦!就我的系???,?? fly ?是?的怪怪的~如果您的 fly ?法??成功的?,那?直接由?哥的私房菜提供的?案?直些下?使用算了! http://linux.vbird.org/download 找一下 fly 的 binary ,下?完?之後,??得:
     
    gzip -d fly.gz
    chmod 755 fly
    mv fly /usr/local/bin
     
    ??就可以了!而??我?不是有?行?一次??你的登??料?被放置在 /var/www/html/pwebstats ??目??中!假如我的首?就是 /var/www/html/ 的?,那?我的?址列?入 http://myIP/pwebstats 就可以看到?似下?:
     

     
    在按下了『Day 1』之後,?出?如下的?面:
     

     
    呵呵!更??的?容您就可以自行看看?!加油的啦!!
     

    --------------------------------------------------------------------------------
    末端?料分析 sarg
     
    除了上面介?的 pwebstats 之外,其??有一套相?棒而且功能相??悍的分析??,那就是 Squid Analysis Report Generator ( Squid 分析?告?作者),他的官方?站在:http://web.onda.com.br/orso/sarg.html,他的原理相?的??,就是? logfile 拿出?,然後?行一下解析,依?不同的??、?站、????站等等??行?料的?出,由於?出的?果?在是太??了!所以.....呵呵!如果你是老?的?,用??????你『?不?手』啊!因?每?人的每?小?作都?被??下?,我的天?!?我第一次看到??分析的?面?,真的?他?了老大一跳得?~因??每? IP 在『每?小?所?上的每??站?料』都有??~~害怕了吧~
     
    不?,有??就有缺?啦!怎??呢?因? SARG 功能太?大了,所以??的『?料量』就?在是多了?,如果您的 Proxy ?站?於那?很大流量的?站?,那?就不要使用『日?表』,也就是每天?生一份?表的那?方式!那?由於?料一天可能?有? MB 的?料,一??月??有??,如果??了?年,那?光是?些??就?花掉好? GB 的硬碟空?了~此外,也可以使用『覆??有?料』的方式不要留存??料,??也可以?省硬碟的空?啦!
     
    ?? SARG ??已?出到 1.4 版,更好的是,他支援『多??系』呢!目前?哥已?翻?了一部分的?料,希望能?大家有??助啊!?於??套件,你可以到官方?站上下?最新的版本 ( http://web.onda.com.br/orso/sarg.html ) ,而?哥??也有提供啦!我提供的版本是 1.4 的( 在 2003/03/16 ?出的版本 ),已???了 patch (套件修?) 的?作,?且加入中文化的?言?案,所以直接下?就有中文?示?!?到?案下?中心下?:
     
    http://linux.vbird.org/download#squid_ap
     
    整?安???行的?程很??的!我???看看吧!(?:假?您已?? sarg-1.4.taiwan_big5.tar.gz 放置在 /root 底下了!):
      # 1. 解??:
    [root@test root]# cd /usr/local/src
    [root@test src]# tar -zxvf /root/sarg-1.4.taiwan_big5.tar.gz
    ....(略).....
    ???候??生一?名? sarg-1.4 的目?出?!
     
    # 2. ?定、???安?
    [root@test src]# cd sarg-1.4
    [root@test sarg-1.4]# mkdir /usr/local/sarg
    [root@test sarg-1.4]# ./configure --prefix=/usr/local/sarg \
    > --enable-mandir=/usr/local/sarg/man1 \
    > --enable-bindir=/usr/local/sarg/bin \
    > && make && make install
    ??可以快速的?定、???安?,一次完成!
    安?的?料?中:
    a. ?定? /usr/local/sarg/sarg.conf
    b. ?行? /usr/local/sarg/bin/sarg
    c. ?明? /usr/local/sarg/man1/sarg.1
     
    # 3. ?外?定 ( ?明文件的路? )
    [root@test root]# vi /etc/man.config (有?? man.conf ?名不同!)
    新增加?一行
    MANPATH /usr/local/sarg
     
    相信????就安?完?了!很快速吧!接下?你要做的就是?定?!?定之前?先注意您的相??料,以我?例,我的相??料?:
     
    登??使用 /usr/local/squid/var/logs/access.log.0 ?一??? rotation 的?案;
    ?算的?存?放置在 /tmp 底下;
    我的 SARG ?出的首?放置在 /var/www/html/sarg ??『目?』之中;
    我想要?我的??以 big5 的字元??格式?出!
     
    ???候我只要修改一??案,也就是 /usr/local/sarg/sarg.conf 即可,?容有?像??:
      [root@test root]# mkdir /var/www/html/sarg
    [root@test root]# vi /usr/local/sarg/sarg.conf
    # ???案是 sarg 的?定?,?面已??整??定???的很清楚了,
    # 你可以依照你的情???整???案的??,??如何,???案?面
    # ??至少要有底下????料,其他的?自行使用喔!
    language Taiwan_big5
    access_log /usr/local/squid/var/logs/access.log.0
    title "Squid 使用???告"
    temporary_dir /tmp
    output_dir /var/www/html/sarg
    overwrite_report no
    mail_utility /bin/mail
    topsites_num 100
    exclude_codes /usr/local/sarg/exclude_codes
    max_elapsed 28800000
    charset big5
     
    [root@test root]# /usr/local/sarg/bin/sarg
    SARG: ?作?告完成於 /var/www/html/sarg/2003Apr10-2003Apr11
     
    ?跑一下,嘿嘿!已?成功的?出?料?!???候,?在您的??器上面?入 http://your.domain.or.IP/sarg 即可看到??跑出?的?料了!很棒吧!好了,我?不能常常??手?的跑分析?料吧?OK!那?怎?????作放到 crontab ?中呢?!呵呵!我?底下?了一支 script ?同?跑 pwebstats 及 SARG ???玩意?~?支 script 是???的:
      1. 建立?支程式:我?他取名? /usr/local/squid/etc/squid.logrotate
    [root@test root]# vi /usr/local/squid/etc/squid.logrotate
    #!/bin/bash
    # ?支程式是要??做? squid 的 log files analysis 之用的!
    # ?行的方法? crontab ?!
    # vi /etc/crontab 加入底下?一行:
    # 59 23 * * * root /usr/local/squid/etc/squid.logrotate
     
    # 1. parameters settings
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
     
    # 2. stoping and rotating squid
    sleep 50s
    /usr/local/squid/sbin/squid -k rotate
    /usr/local/squid/sbin/squid -k shutdown
     
    # 3. pwebstats processing
    /var/www/html/pwebstats/pwebstats -c \
    /var/www/html/pwebstats/conf/squid-proxy.conf \
    > /dev/null 2>&1
     
    # 4. sarg processing
    /usr/local/sarg/bin/sarg > /dev/null 2>&1
     
    # 5. starting squid
    sleep 11s
    su nobody -c "/usr/local/squid/bin/RunCache &" > /dev/null 2>&1
     
    # 2. 改??案?限?加入 crontab 排程?中!
    [root@test root]# chmod 744 /usr/local/squid/etc/squid.logrotate
    [root@test root]# vi /etc/crontab
    加入?一行:
    59 23 * * * root /usr/local/squid/etc/squid.logrotate
     
    ?一支程式有什?特?呢?由於我是在 23:59 ?始?行,而且?行?期先等待 (sleep) 50 秒?,且工作完?後再等 10 秒?,也就是?,我的 squid 的 log ?案一定?是以天??位?分隔,所以我?所看到的?料就?『一」天一天』的?示,而不?跨了不同的?天了!我是比?喜???啦!但是每?人的??不同,您可以自由?配喔!
     

    --------------------------------------------------------------------------------
    防火?的??
     
    事?上, Proxy 本身就已?可以做?一?防火?啦!?何?需要?? Proxy ??行防火?的????是????啦!但是我?的 Proxy 是?放 3128 ? 3130 ??? port 啊!您?不能??? port ?有?放吧!所以?,要?您的 Proxy 可以?外面?始服?,就需要?用 3128 ????的 Proxy port ?!所以需要在您的防火? scripts ?中加入?一行:
     
    /sbin/iptables -A INPUT -p TCP -i eth0 --dport 3128:3130 -j ACCEPT
     
    一般??,??就可以正常的?? Proxy 的服?了!那?至於 Proxy 本身提供的防火??容呢?呵呵!就利用 acl 配合 http_access 就能?管制使用者的使用空?了!真是相?的具有?性啊! ^_^
     

    --------------------------------------------------------------------------------
    NAT ? Proxy 透? transparent proxy ?定加快?路??
     
    ?我??在?想像一?????,就是你有一整??部?路,而???部?路都是透? NAT 主???出去的。那?我???,就是在一??部?域很大的情?下,使用 Proxy 是一?很不?的??,因?至少他可以????的?荷啊!OK!那?我?就架? Proxy 好了,不?,?憾的是,架? Proxy 的?候,也要使用者在??器上面?定了你架?好的??器才有用啊!否?那部 Proxy ?有人使用的?,架了也是白搭!好了,那?有?有?法在『使用者不需要在??器上面?行任何?定,就可以??以 Proxy ?助使用者捉取 WWW ?料 』呢??然有啦!那就是 Transparent Proxy 啦!也有人翻?成『通透式代理伺服器』,?什???翻?我也不?得??不?,他的原理是??的:
     
    ?使用者?? NAT 伺服器????入 Internet ?,假如使用的 Internet ?定? 80 (也就是 WWW) ,那?就???要求交? Proxy ?工作,以?到代理伺服器的功能。
     
    呵呵!也就是?,?使用者是?? NAT 主???出去?,只要? NAT 主???『咦!你是要去捉 WWW 的?料?吧!好!那????作由 Proxy 主??你搞定!』如此一?,使用者根本就不需要在??器上面?定 Proxy 的相??料,因????作是『由 NAT 主?自己?定的』,所以只要在 NAT 主?上面?定妥?即可,使用者不必?定任何?料呢!呵呵!真是不?!那?要怎??行呢?只要??步?即可:
     
    ?定 Proxy 主?:
    ?定 proxy 主??然就是要又修改 squid.conf ?!而???定相?的??喔!只要?行就可以搞定:
      [root@test root]# vi /usr/local/squid/etc/squid.conf
    # ???填入你的 Proxy 主?名? ? port !
    httpd_accel_host vbird.adsldns.org
    # 因?我?是要?行 WWW 的?料快取,所以 port ?然就是 80 ?!
    httpd_accel_port 80
    # ??很重要!因??定 httpd_accel_host 之後, cache 的?定?自?被?止,
    # 必?要加上???定? on 之後,才能提供 cache 的功能!
    httpd_accel_with_proxy on
    httpd_accel_uses_host_header on
    [root@test root]# /usr/local/squid/sbin/squid -k reconfigure

     
    ?共就是?四行啦!??就?定好一? squid 的 transparent proxy 的功能?!
     
    ?定 NAT 主?的 port map :
    再??我?到 NAT 主?上面看看先,因?需要? 80 ?? port 交? Proxy 的 3128 ??忙?助,所以你的防火? script 必?要加入?一段才行:
      iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.0.0/24 \
    --dport 80 -j REDIRECT --to-ports 3128
     
    注意一下,那? eth0 是『你的 NAT ??的?路卡?置代?』,至於 192.168.0.0/24 ?是你的?部?域,?依照你的主???????定喔!
     
    完全不需要?疑!??一?,您的 client 端完全不需要?行任何的?定,立刻就可以使用 Proxy 的好??!很不?吧!呵呵!
     

    --------------------------------------------------------------------------------
    squid 的注意事?
     
    使用代理伺服器後,???外的????是可以?快的!但是,你要小心?件事:
     
    若 squid ??定的使用空??了,? squid ?不??作!
    若 squid 的???太大了,?工作效率??慢!
     
    由於我?已?安?的 pwebstats 了,?且已??定好了 squid -k rotate 的工作,所以第二????不?重,?重的可能?是第一???!所以有可能我??自行手?的?除 Proxy 的快取目?,如何?除呢??然上面已?提?了一些注意事?,??我?再次的?明吧!
      1. 停止 squid
    [root@test root]# kill -9 `cat /usr/local/squid/var/logs/squid.pid`
    (可能?重?做 5 次左右才?完全砍掉!)
    2. ?除?存目? (??目??依您的系?而定!)
    [root@test root]# rm -rf /usr/local/squid/var/cache1
    [root@test root]# mkdir /usr/local/squid/var/cache1

    3. 重建快取目??重新??
    [root@test root]# /usr/local/squid/sbin/squid -z
    [root@test root]# su nobody -c "/usr/local/squid/bin/RunCache &"

     
    其他的建?:
     
    ?於上?代理伺服器:用 cache_peer ?定上?代理伺服器的?目不要太多,只要 2-5 ?之?就好了,而且上?代理伺服器一定要找距?你最近,?且具有?大??的主?,如果是在台南,那 proxy.ncku.edu.tw 就是不?的主?,或者向您的 ISP ??喔;
     
    ?於?存目?的?定:以 cache_dir ufs ?定的目?,最好是??割出?的? 1-2 GB 的硬碟槽,以我?例,我?另外一台主?的 30GB 的硬碟割?槽? proxy 用,而每一槽只有 2GB ,分?命名? proxy1 ? proxy2 ,?可以?成
     
    cache_dir ufs /proxy1 2000 16 256
    cache_dir ufs /proxy2 2000 16 256
     
    由於分成?槽?存取,所以整?效率上?比?好,但?是??一般比?大型的代理伺服器的?定了,我???小主?就不用如此?定(但是效率真的有差哩!)。
     
    善用 acl, always_direct, never_direct:就如同上面提到的,因?你的目的不同,所以?使用到不同的 proxy 作?你的上?代理伺服器,如果你??你的上?代理伺服器?法??你常上的?站?求取?料?,就?那??站加入你的 always_direct 吧!另外,也可以使用 cache_peer_access ??理喔!
     
    在 ./configure 的?候增加 --enable-async-io=80 ?一?指令:基本上,增加??指令之後,?可以使您的磁碟多一? type ,亦即是 aufs ,?? type 的速度?快!

    --------------------------------------------------------------------------------
    重?回?
    代理伺服器 ( Proxy ) 最大的功能是在代理使用者向 Internet 要求 Web page 的?料,同??成 Web pages 的快取?? (Cache) ,以?到假性的???省目的;此外,?可以?外的?成防火?的功能;
    目前 Unix Like 的?器中,做? proxy 功能的伺服器???乎都是使用 squid ,而 squid ?需要?定 squid.conf ???定?即可使用;
    ?定 Proxy ?,如果能以??更大的上? Proxy ??助,?有助於 Client 端??速度的提?;
    以防火?的功能??, Proxy 使用?用?的方式??成防火?功能,至於 iptables ?是更?底?的 TCP/IP 分析的方式;
    Proxy ?於硬?的要求?高,尤其是硬碟的 partition ????,一般??,一? cache 目?最好就是一? partition ,而一? cache partition 最好容量在 2-4 GB 之?即可;
    transparent proxy 的功能就是可以? client 端不需要?定??器的 proxy 功能,即可?行 proxy 的工作;

    --------------------------------------------------------------------------------
    ?考?源
    ?客??本:http://turtle.ee.ncku.edu.tw/~tung/proxy/
    台北市教育?路中心:http://www.tp.edu.tw/document/squid/index.files/frame.htm
    squid 官方?站:http://www.squid-cache.org/
    squid ?明文件??:http://squid-docs.sourceforge.net/
    中山大???工程所:http://www.cc.nsysu.edu.tw/~lmj/Squid.files/frame.htm
    ?江?小:http://proxy.lcps.tpc.edu.tw/
    fly 官方?站:http://martin.gleeson.com/fly/index.html
    pwebstats 官方?站:http://martin.gleeson.com/pwebstats/index.html

  20. baizx 于 2009-08-10 10:52:09发表:

    NTP ??伺服器

    本章的行前??工作

    NTP 伺服器是?很容易?定的服?,你只要熟悉?路基?即可?易的?他?定好。 ?一章?有什?很重要的??功?,您可以??的??啊! ^_^



    --------------------------------------------------------------------------------
    ?於????路校?的通??定

    ???於?代人??是很重要的,因?『 Time is money !』。既然??如此重要,?於 Internet ????也是很重要吧? ?什?呢???得我?在基???篇?面?到的『登??分析』吧? 如果你架?了一?登????伺服器的?,那??得要分析每?主?所??的??吧?如果每一部主?的??都不相同, 那如何判????生的????所以?,『每一部主?的??同步化』就很重要了。

    每一部主???的同步化重要性?然不只如此,包括之前?到的 DHCP 用?端/伺服器端所需要的租???限制、 ?路???所需要注意的???、???到的登??分析功能、具有相?性的主?彼此之?的????等等, 都需要具有相同的??才能?捉出??呢。好了,底下咱?就?聊一聊,如何利用?路??行主?的??同步化吧!


    --------------------------------------------------------------------------------
    什?是???全球有多少???GMT 在那????

    因?地球是?的,所以同一??刻,在地球的一?是白天,一?是黑夜。而因?人?使用一天 24 小?的制度,所以,在地球?角的??就??差了 12 的小?才?。由於同一????上面, 整?地球的????都不一?,?了解?????,所以可以想?的,地球就被分成 24 ???了!

    那?? 24 ???是依?什???分的呢?由於地球被人?以『??度』座???行定位, 而?度?零的地?在英?『格林威治』??城市所在?剖面上, (?:所?的?剖面就是由南?切到北?的直?,而?切面就是?赤道平行的切?),如下?所示:



    ?一、地球的子午?、??度???的分隔概念

    因??地球一圈是 360 度角,? 360 度角共分? 24 ???,?然一???就是 15 度角啦! 又由於是以格林威治???????(Greenwich Mean Time, GMT ??),加上地球自?的??,因此,在格林威治以?的?域??是比?快的(+小?), 而以西的地方?然就是?慢?!

    以台??例,因?台?所在地???? 120 度北? 25 度左右,又因?台?在格林威治的?方 (??!因?是??嘛! ^_^),因此台?本地?? (local time) ?比 GMT ??快 8 小? (GMT + 8)。?格林威治???零?,台?就已?是早上八?了! 底下?略列出各???的名??所在?度,以及? GMT ??的?差:

    ???? ?度 ?差
    GMT , Greenwich Mean Time 0 W/E ????
    CET , Central European 15 E +1 ?一?
    EET , Eastern European 30 E +2 ?二?
    BT , Baghdad 45 E +3 ?三?
    USSR, Zone 3 60 E +4 ?四?
    USSR, Zone 4 75 E +5 ?五?
    Indian, First 82.3E +5.5?五半?
    USSR, Zone 5 90 E +6 ?六?
    SST , South Sumatra 105 E +7 ?七?
    JT , Java 112 E +7.5?七半?
    CCT , China Coast (台?所在地) 120 E +8 ?八?
    JST , Japan 135 E +9 ?九?
    SAST, South Australia 142 E +9.5?九半?
    GST , Guam 150 E +10 ?十?
    NZT , New Zealand 180 E +12 ?十二?
    Int'l Date Line 180 E/W ???日?
    BST , Bering 165 W -11 西十一?
    SHST, Alaska/Hawaiian 150 W -10 西十?
    YST , Yukon 135 W -9 西九?
    PST , Pacific 120 W -8 西八?
    MST , Mountain 105 W -7 西七?
    CST , Central 90 W -6 西六?
    EST , Eastern 75 W -5 西五?
    AST , Atlantic 60 W -4 西四?
    Brazil, Zone 2 45 W -3 西三?
    AT , Azores 30 W -2 西二?
    WAT , West Africa 15 W -1 西一?

    所以?,台???是 GMT + 8 就很容易推算出?了吧!要特?留意的是,很多朋友在安? Linux 的?候, ?是???目前的??慢或者快了 8 小?,不要?疑,?????有?! ???他查一下如何?整??吧! ^_^。

    另外,在上表中有?比?有趣的??,那就是在太平洋上面的???日?了!我????,在格林威治的??????快, 而在西?????慢,但是??各走了 180 度之後就?碰?啊!那不就?好差了 24 小?????啦! 所以才?定?『???日?』啊!???日??好在太平洋上面,因此,如果您有坐??到美?的???????,咦! 怎?出?的??是星期六下午,坐了 13 ?小?的??到了美??是星期六!因??好通?了???日?, 日期?少了一天喔!如果反??,由美?到台?,日期就?多加一天喔! ^_^



    --------------------------------------------------------------------------------
    什?是夏季???? (daylight savings)?

    除了??的概念先建立起?之後,?在再??一?,那?什?是『夏季????』? 既然是『夏季????』?然主要是?夏天有?啦!因?地球在?行的?候是呈?一??斜角在?太???的, 所以才有春夏秋冬(??大家??都知道啦!),在夏天的?候,白天的???比??,所以?了??用?, 因此在夏天的?候某些地???他?的??定早一小?,也就是?,原本??是 8 ?好了, 但是因?夏天太?比?早出?,因此把??向前挪,在 8 ?的?候,?定??天的 7 ?~如此一?, 我?就可以利用?光照明,省去了花??力的??,因此才??之?夏季????!

    因?台??在是太小了,??有?跨????,因此,夏季?????我???,?然?是有?助啦! 不?,似乎?有特?推行的?子?~



    --------------------------------------------------------------------------------
    Coordinated Universal Time (UTC)?系???的?差

    ?解了一些??的概念之後,??要?的是『什?是正?的??』。 在?算??的?候,最??的?算??是使用『原子震??期』所?算的物理??了 (Atomic Clock, 也被??原子?),?也被定?????? (International Atomic Time)。而我?常常看?的 UTC 也就是 Coordinated Universal Time (?和????)就是利用?? Atomic Clock ?基?所定?出?的正???。例如 1999 年在美??用的原子? NIST F-1, 他所?生的???差每?千年才差一秒?!真的是很??!?? UTC ????是以 GMT ?????主的喔!所以本地??? UTC ??的?差就是本地??? GMT ??的?差就是了!

    事?上,在我?的身?就有很多的原子?,例如石英表,?有??主?上面的 BIOS ?部就含有一?原子?在????算??的?行?!不?由於原子?主要是利用?算晶片 (crystal) 的原子震??期去??的,?是因?每?晶片都有自己的?特的震??期之故。 然而因???晶片的震??期在不同的晶片之?多多少少都?有?差?性, 甚至同一批晶片也可能?或多或少有些?的差?(就??度也可能造成??的?差呢!),因此也就造成了 BIOS 的???三不五?的?他快了?秒或者慢了?秒。

    或?您???,BIOS ??器每天快?五秒也?有什?了不起的,不?如果您再仔?的算一算,???,一天快五秒, 那?一?月快2.5分?,一年就快了 75 分?了!所以?,呵呵!??差是真的?存在的! 那?如果您的??真的有??的情?,那要怎??重新校正??呢?那就需要『?路校?』 (Network Time Protocol, NTP) 的功能了!底下我?就?一?那? NTP 的 daemon 吧!



    --------------------------------------------------------------------------------
    NTP 通??定

    如同前面?的,??主?主要是以 BIOS ?部的???主要的??依?,而偏偏????可能因? BIOS ?部晶片本身的??,而?致 BIOS ??????? (UTC) 有一??的差?存在! 所以?了避免主???因??期?作下所?致的??偏差,?行??同步 (synchronize) 的工作就?的很重要了!

    那?怎????同步化呢?想一想,如果我????部主要主? (Primary server) ?校??,??些 Primary Servers 的??同步之後,再?放?路服??? Client 端??,?且提供 Client 端?整自己的??,不就可以?到全部的????同步化的?作了?!那?什??定可以?到??的功能呢?那就是 Network Time Protocol ,另外?有 Digital Time Synchronization Protocol (DTSS) 也可以?到相同的功能!

    不?,到底 NTP ?? daemon 是如何? Server ? Client 同步他?的??呢?

    首先,主??然需要???? daemon ,之後,
    Client ?向 NTP Server ?送出?校??的 message ,
    然後 NTP Server ?送出目前的????? Client ,
    Client 接收了?自 Server 的??後,??以?整自己的??,就?成了?路校?咯!
    不?,在上面的步?中您有?有想到一件事啊,那就是如果 Client 到 Server 的?息?送????怎????例??,我在台?以 ADSL 的 PC 主?,??到美?的 NTP Server 主??行??同步化要求,而美? NTP Server 收到我的要求之後,就?送??的正????我,不?, 由美???料?送回我的 PC ?,??可能已?延?了 10 秒?去了!??一?,我的 PC 校正的??是 10 秒?前的????喔!此外,如果美?那? NTP 主?有太多的人喜?上去?行?路校?了,所以 loading (?荷) 太重啦!?致?息的回?又延?的更??重!那怎???

    ?了?些延?的??,有一些 program 已???了自??算???送?程的?差,以更??的校?自己的??!?然啦,在 daemon 的部分,也同?以 server/client 及 master/slave 的架??提供使用者?行?路校?的?作!所?的 master/slave 就有??似 DNS 的系?咯!?例??,台?的????主?去??????的主?校?, 然後各大?院校再到台?的????校?,然後我?再到各大?院校的????校?!??一?,那?部??????主? (Time server) 的 loading 就不至於太大,而我?也可以很快速的?到正?的?路校?的目的呢!台?常?的 Time Server 有:

    tock.stdtime.gov.tw
    time.stdtime.gov.tw
    clock.stdtime.gov.tw
    freq_f.stdtime.gov.tw
    tick.stdtime.gov.tw
    至於 ntp ?? daemon 是以 port 123 ???的埠口 (使用 UDP 封包),所以我?要利用 Time server ??行??的同步更新?,就得要使用 NTP 套件提供的 ntpdate ??行 port 123 的??喔!?於?路校?更多的?明,可以到 NTP 的官方?站上察看喔!

    http://www.ntp.org

    --------------------------------------------------------------------------------
    NTP 伺服器的安???定

    NTP 伺服器也是一?很容易就可以架?成功的玩意?,不???套件在不同的 distribution 上面可能有不一?的名?, 你要作的其?就是?他安?起?之後,?定一部上? NTP 伺服器?同步化你的??即可啊! 如果你只是想要?行你自己?部主?的??同步化,?架? NTP ,直接使用 NTP 用?端??即可喔!


    --------------------------------------------------------------------------------
    所需套件?套件??

    在 CentOS 上?,你所需要的套件其??有 ntp ??玩意?而已,?自行使用 rpm 去找找看, 若?有安?,?拿出原版光碟?安?,或者利用 yum install ntp 即可啊! ?一找不到的?,那就用 Tarball 的方式?安?吧!?自行前往 ntp 官方?站下?原始??安?先。 不?,我??需要??相?的?料?案,所以你需要的套件有:

    ntp
    就是 NTP 伺服器的主要套件啦,包括?定?以及?行?等等,都是??套件提供的;

    tzdata
    套件名??『 Time Zone data 』的???~主要提供了各?????的?示格式。
    至於你需要的?案方面,主要有???玩意?啦:

    /etc/ntp.conf
    ??是 NTP daemon 的主要?定?,依?不同的版本放置的目?可能?不同,不??名都是一?的!使用 locate ntp.conf 搜?一下您的系?有?有???案吧!?也是 NTP 唯一的一??定?案!

    /usr/share/zoneinfo/
    ?是?目?,??目?是 Linux 本身提供的,而不是 NTP 所提供的。 在??目?下的?案其?是?定了各主要??的???定?案,例如台?地?的???定?案在 /usr/share/zoneinfo/Asia/Taipei 就是了!??目??面的?案?底下要?的???案 (clock ? localtime) 是有??的喔!

    /etc/sysconfig/clock
    ???案其?也不包含在 NTP 的 daemon ?中,因???是 linux 的主要???定?案啊!每次??後 Linux ?自?的?取???案??定自己系?所??要?示的???!??例子??, 在我?台?地?的本地???定中,???案????出?一行『ZONE="Asia/Taipei"』的字?, ?表示我?的???定?案『要取用 /usr/share/zoneinfoe/Asia/Taipei 那??案』的意思!

    /etc/localtime
    ???案就是『本地端的???定?』啦!??那? clock ?案?面?定了使用的???定? (ZONE) ? /usr/share/zoneinfo/Asia/Taipei ,所以??就是本地端的??了,此? Linux 系?就?? Taipei 那??案??一份成? /etc/localtime ,所以未?我?的???示就?以 Taipei 那????定?案??。

    好了,如果?在我?部主?搬到日本?京去了,那?我??如何?整??呢?其?什??整都不需要,因?我?的 localtime 主要是分析? UTC ??的?差??示的格式,所以,您只要? /etc/sysconfig/clock ?面的 ZONE ?定成? Asia/Tokyo ?且? /usr/share/zoneinfo/Asia/Tokyo ??成? /etc/localtime ,呵呵!就能?示???日本?京的??了!??是否能??解?

    /bin/date
    ??是 Linux 系?上面常?的日期????出指令,用途很?喔!除了?出??外,也可以修改??。

    /sbin/hwclock
    ?是一? root 才能?行的指令,因? Linux 系?上面 BIOS ??? Linux 系???是分?的,所以使用 date ??指令?整了??之後,?需要使用 hwclock 才能?修改?後的???入 BIOS ?中!

    /usr/sbin/ntpd
    ?就是 NTP 的主要 daemon ?案啦!得要??他才能提供 NTP 服?。注意,??指令????考 /etc/ntp.conf ?面的?定喔!

    /usr/sbin/ntpdate
    ??就是 Client 端用??接 NTP Server 的主要?行??!如果您?有要?用 NTP 而?想要使用 NTP Client 功能的?,那?只?用到??指令而已啦!

    /usr/sbin/ntptrace
    ??指令可以用?追?某部??伺服器的??????,?也是?很有用的指令喔!底下我??介?如何使用?支程式!
    接下?,我?先??一?如何??那? /etc/ntp.conf 吧!



    --------------------------------------------------------------------------------
    主要?定? ntp.conf 的?理

    如前所述,由於 NTP ??伺服器?用?似??架? (stratum) ??理??的同步化, 所以他使用的是?似一般 server/client 的主?架?。?路社?上面有提供一些主要?次要的??伺服器, ?些均?於第一?及第二?的??伺服器 (stratum-1, stratum-2) ,如下所示:

    主要??伺服器:http://www.eecis.udel.edu/~mills/ntp/clock1a.html
    次要??伺服器:http://www.eecis.udel.edu/~mills/ntp/clock2a.html
    由於?些??伺服器大多在?外,所以我?是否要使用?些伺服器?同步化自己的??呢? 其?如果台?地?已?有????伺服器的?,用那部即可,不需要??到?外啦!浪??????啊! 而如前面提到的,台?地?已?有第二?的??伺服器了,所以?然我?可以直接??台?地?的 NTP 主?即可。


    ??伺服器的??概念
    其? NTP 的??概念? DNS 很?似啦,?你架?一部 NTP 主?,?部 NTP 所向上要求同步化的那部主要主?? stratum-1 ?,那?你的 NTP 就是 stratum-2 ?!?例??,如果我?的 NTP 是向台?的 tock.stdtime.gov.tw ?部 stratum-2 的主?要求??同步化,那我?的主?即? stratum-3 ,如果?有其他的 NTP 主?向我?要求??同步, 那??部主???是 stratum-4 啦!就??啊~ 那最多可以有?????最多可? 15 ???喔!


    如果你?估一下,?定有架? NTP 的需求?,我?可以直接??台?地?的上? NTP ?同步化??即可。 ?例?? tock.stdtime.gov.tw ???家?位的第二?主? (stratum-2) ??是比??合的。 一般??,我?在?行 NTP 主?的?定?,都?先??多部上?的 Time Server ?做?我??一部 NTP Server 的校正之用,??多部的原因是因?可以避免因?某部??伺服器突然???, 其他主?仍然可以提供我?的 NTP 主??自我更新啊!然後我?的 NTP Server 才提供?自己的 Client 端更新??。如此一?,?家?位的 tock.stdtime.gov.tw ??才不?太大,而我?的 Client 也可以很快速的?到校?的?作!

    好了,我假?俺的 NTP 伺服器所需要?定的架?如下:

    我的上? NTP 伺服器共有 tock.stdtime.gov.tw, tick.stdtime.gov.tw, time.stdtime.gov.tw 三部,其中以 tock.stdtime.gov.tw 最?先使用 (prefer);
    不? Internet 提供服?,?允??自?部?域 192.168.1.0/24 的查?而已;
    ??一些 BIOS ??? Linux 系???的差???入 /var/lib/ntp/drift ?案?中。
    好了,先?我??一?如何在 ntp.conf ?面?定?限控制吧!


    --------------------------------------------------------------------------------

    利用 restrict ?管理?限控制
    在 ntp.conf ?案?可以利用『 restrict 』?控管?限,????的?定方式?:
    restrict [你的IP] mask [netmask_IP] [parameter]


    其中 parameter 的??主要有底下?些:

    ignore
    拒?所有?型的 NTP ??;

    nomodiy
    用?端不能更改 NTP 伺服器的????,?即表示用?端不能使用 ntpc ? ntpq ??支程式?修改伺服器?。 但用?端仍可透??部主???行?路校?的;

    noquery
    用?端不能?使用 ntpq, ntpc 等指令?查???伺服器,等於不提供 NTP 的?路校??;

    notrap
    不提供 trap ???端事件登? (remote event logging) 的功能。

    notrust
    拒??有??的用?端。
    那如果你?有在 parameter 的地方加上任何??的?,?表示『? IP 或?段不受任何限制』的意思喔!一般??,我?可以先?? NTP 的使用?限,然後在一?一?的?用允?登入的?段。



    --------------------------------------------------------------------------------

    利用 server ?定上? NTP 伺服器
    上? NTP 伺服器的?定方式?:
    server [IP or hostname] [prefer]


    在 server 後端可以接 IP 或主?名?,?哥?人比?喜?使用主?名???定?! 至於那? perfer 表示『?先使用』的主??~有???吧!



    --------------------------------------------------------------------------------

    以 driftfile ????差?
    ?定的方式如下:
    driftfile [可以被 ntpd ?入的目???案]


    因???的 NTP Server 本身的???算是依? BIOS 的晶片震??期?率??算的,但是???值?上? Time Server 不?得?一致啊!所以 NTP ?? daemon (ntpd) ?自?的去?算我?自己主?的?率?上? Time server 的?率,?且????率的?差??下?,??下?的?案就是在 driftfile 後面接的完整?名?中了!?於?名你必?要知道:
    driftfile 後面接的?案需要使用完整路??名;
    ??案不能是???;
    ??案需要?定成 ntpd ?? daemon 可以?入的?限。
    ??案所??的?值?位?:百?分之一秒 (ppm)。
    driftfile 後面接的?案?被 ntpd 自?更新,所以他的?限一定要能?? ntpd ?入才行。在 CentOS 4.x ??的 NTP 伺服器中,使用的 ntpd 的 owner 是 ntp ,?部份可以查? /etc/sysconfig/ntpd 就可以知道啦!

    --------------------------------------------------------------------------------

    keys [key_file]
    除了以 restrict ?限制用?端的??之外,我?也可以透?金?系???用?端??, 如此一?可以?主?端更放心了。不?在??章??面我??不????部分, 有?趣的朋友可以?考 ntp-keygen ??指令的相??明喔!


    根?上面的?明,我?最?可以取得??的?定?案?容喔!
    [root@linux ~]# vi /etc/ntp.conf
    # 在保留大部分的??值的情?下,我?作了??小部分的修改喔:
    # 1. 先?理?限方面的??:
    restrict default nomodify notrap noquery
    restrict 220.130.158.71 <==底下?三行在?放主??入的?限
    restrict 220.130.158.51
    restrict 220.130.158.52
    restrict 127.0.0.1 mask 255.0.0.0 <==?部? LAN 的使用?限
    restrict 192.168.1.0 mask 255.255.255.0 nomodify

    # 2. ?定主??源!
    server 220.130.158.71 prefer <==以?部主??最?先
    server 220.130.158.51
    server 220.130.158.51

    # 3.原本?定的一??部???料,不需要更?他
    server 127.127.1.0 # local clock
    fudge 127.127.1.0 stratum 10

    # 4. 就是那???差?分析的咚咚,保留??值即可。
    driftfile /var/lib/ntp/drift
    broadcastdelay 0.008

    # 5.??不?使用的 keys 相???功能。
    keys /etc/ntp/keys


    然後??一下修?一下 /etc/sysconfig/ntpd 吧!
    [root@linux ~]# vi /etc/sysconfig/ntpd
    OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"
    SYNC_HWCLOCK=yes
    # ?他改成 yes 吧!?? BIOS 的??也?跟著改?的!


    ??就?定妥?了,????? NTP 服?吧!



    --------------------------------------------------------------------------------
    NTP 的????察

    ?定完 ntp.conf 之後就可以?? ntp 伺服器了。????察的方式如下:
    1. ?? NTP
    [root@linux ~]# /etc/init.d/ntpd start

    2. ?察??的埠口看看:
    [root@linux ~]# netstat -tlunp
    Proto Recv-Q Send-Q Local Address Foreign Address PID/Program name
    udp 0 0 192.168.1.254:123 0.0.0.0:* 15118/ntpd
    udp 0 0 127.0.0.1:123 0.0.0.0:* 15118/ntpd
    udp 0 0 0.0.0.0:123 0.0.0.0:* 15118/ntpd
    udp 0 0 :::123 :::* 15118/ntpd
    # 主要是 UDP 封包,且在 port 123 ??埠口的啦!


    ??就表示我?的 NTP 伺服器已???了,不?要?上? NTP 伺服器????需要一些??, 通常?? NTP 後?在 15 分??才?和上? NTP 伺服器?利?接上。 那要如何??我?的 NTP 伺服器有?利的更新自己的??呢?你可以使用底下??指令?查?喔:
    [root@linux ~]# ntpstat
    synchronised to NTP server (220.130.158.71) at stratum 3
    time correct to within 495 ms
    polling server every 64 s
    # ??指令可以列出我?的 NTP 伺服器有跟上???否。由上述的?出?果可以知道,
    # ??有校正? 495 * 10^(-3) 秒,且每格 64 秒?主?去更新??喔!


    [root@linux ~]# ntptrace -n 127.0.0.1
    127.0.0.1: stratum 3, offset -0.034965, synch distance 0.109233
    220.130.158.71: stratum 2, offset -0.000873, synch distance 0.031625
    220.130.158.50: timed out, nothing received
    ***Request timed out
    # ??指令?可以列出目前我?的 NTP 伺服器?上? NTP 伺服器彼此之?的??。
    # 由於我?已?和第二??接上,但第二??第一?就不是我?能管理的?。
    # 所以那? timed out 可以不理他???的。


    [root@linux ~]# ntpq -p
    remote refid st t when poll reach delay offset jitter
    ==============================================================================
    *220-130-158-71. 220.130.158.50 2 u 53 64 77 36.800 -10.496 1.890
    220-130-158-51. .INIT. 16 u - 64 0 0.000 0.000 4000.00
    +220-130-158-51. 220.130.158.50 2 u 49 64 77 33.448 -10.431 2.581
    LOCAL(0) LOCAL(0) 10 l 51 64 77 0.000 0.000 0.004


    ?? ntpq -p 可以列出目前我?的 NTP ?相?的上? NTP 的??,上?的???位的意??:

    remote:亦即是 NTP 主?的 IP 或主?名??~注意最左?的符?, 如果有『+』代表目前正在作用?中的上? NTP ,如果是『*』代表也有?上?,不?是作?次要??的 NTP 主?。
    refid:?考的上一? NTP 主?的位址
    st:就是 stratum ???!
    when:?秒?前曾?做???同步化更新的?作;
    poll:下一次更新在?秒?之後;
    reach:已?向上? NTP 伺服器要求更新的次?
    delay:?路???程?中延?的??,?位? 10^(-6) 秒
    offset:????的?果,?位? 10^(-3) 秒
    jitter:Linux 系???? BIOS 硬???的差???, ?位? 10^(-6) 秒。
    事?上???出的?果告?我?,??真的很?了啦!因?差?都在 0.0001 秒以?, 可以符合我?的一般使用了。另外,你也可以?查一下你的 BIOS ??? Linux 系???的差?, 就是 /var/lib/ntp/drift ???案的?容,就能?解到咱?的 Linux 系???? BIOS 硬???到底差多久??位? 10^(-6) 秒啦!



    --------------------------------------------------------------------------------
    安全性?定

    NTP 伺服器在安全的相?性方面,其???我?在 /etc/ntp.conf ?面的 restrict ??中就已??定了 NTP ?? daemon 的服?限制??了!不?,在防火? iptables 的部分,?是需要??????的啦!所以,在您的 iptables ??的 scripts ?中,需要加入?一段 (我是以?放 192.168.1.0/24 ???域作??例的!)
    iptables -A INPUT -p UDP -i $EXTIF -s 192.168.1.0/24 --dport 123 -j ACCEPT


    若?要?放其他的?段或者主?,?自行修改您的防火??制咯!


    --------------------------------------------------------------------------------
    用?端的??更新方式

    上?介?了 NTP 伺服器的安???定,如果我??有十部不到的主??,老??,?在?有架? NTP 伺服器的需求。 只要能?在你的主?上?以 NTP 用?端????行?路校?就能?同步化??了,?必要??刻刻?行??的校正吧!^_^! 底下我??介???重要的概念,?解一下?何????了???能?????呢?


    --------------------------------------------------------------------------------
    Linux 系????硬???

    在咱?的 Linux 作?系??中其?有????喔,分?是:

    一?是 BIOS ??的????,?也是硬?所??的;
    一?是 Linux 自己的系???,由 1970/01/01 ?始??的????。
    ? Linux ??後,他?主?的?出 BIOS 所??的??,然後?始用自己的方式??算??了。 ?我?使用 date 之?的指令?查?或者是?定???,???指的?是 Linux 的??而已, ??有更?到 BIOS ?所??的???!除非你使用 hwclock ??入或者是?出 BIOS 的??。

    而由於 BIOS ?????而且?持???,因此我???後再???,?????其?是有?利的累?上?的。 ?了要?持 BIOS 所??的??,因此主?板上面的?池就很重要了, 因?他可以? BIOS 在??的?候???的??硬???以及?持??的累?。 所以如果你????後整? BIOS ??竟然恢?成?系?出?值,很可能就是主?板上面的?池??了。 如果你? BIOS ???理?,嘿嘿!??可能也?恢?成?系?出?值啊。

    由於每? BIOS ?部的???算器可能有??差,因此?我?的 Linux ??多多少少就??生差?, ??差?在??拉?之後,就???他的重要性了。所以才?需要?行?路校?嘛!您?是吧~



    --------------------------------------------------------------------------------
    Linux 系????手?校?工作: date, hwclock

    我?在前面??, Linux 的???案就是 /etc/localtime ,?是一???格式的?案而不是 ASCII ?型的?案喔! (file /etc/localtime 可以看出),至於所有的 Time Zone ?放置在 /usr/share/zoneinfo ??目?下。?注意:

    ? /etc/localtime 存在?,系?的??以??案代表的????示、
    ? /etc/localtime 不存在?,系?的??主要以 GMT (或 UTC) ??;
    所以,如果您想要?更您 Linux 系?的??,那?只要在 /usr/share/zoneinfo ?面找到您需要的???案, 然後?他??一份成? /etc/localtime 就可以?利的更新???定了!另外,同?建?修正一下 /etc/sysconfig/clock ???案?面的 ZONE ?定值!以我?台?的 Time zone ?例,在 /etc/sysconfig/clock ???案?中??是『ZONE="Asia/Taipei"』?就表示我?的???案? /usr/share/zoneinfo/Asia/Taipei ???案?!???著修改成您所想要的??吧!

    例?:
    假?你的主?本?在台?,後?被搬到美?的洛杉? (Los_Angeles) 去了。??你如何更改主?的???考?案?
    答:
    ???考?在是 /etc/localtime ,不????案在不同的 Linux distribution 的?理方式不一?。 以 Red Hat 系??例,他是以??的方式??理???案。而 SuSE ?是以 hard link ??理的。 所以,??得不要?意的??用『??』的方式??理,最好先移除後??。 所以你可以??做:
    [root@linux ~]# rm /etc/localtime
    [root@linux ~]# cp -a /usr/share/zoneinfo/America/Los_Angeles \
    > /etc/localtime
    [root@linux ~]# vi /etc/sysconfig/clock
    ZONE="America/Los_Angeles"
    UTC=false
    ARC=false


    ??就 OK 的啦! ^_^

    好了,??修正完?了,那???呢?如前所述,目前 Linux 系?上面有????喔,一?是 Linux 系?,另一??是 BIOS ??!我?可以使用 date ??指令?手?修正目前主?的??,不?, date ??指令?修正 Linux ??而已,我??需要以 hwclock ??指令?? BIOS ??也更新才行!
    [root@linux ~]# date MMDDhhmmYYYY
    ??:
    MM:月份
    DD:日期
    hh:小?
    mm:分?
    YYYY:西元年

    1. 修改??成? 1 小?後的???如何是好?
    [root@linux ~]# date
    Thu Dec 7 15:36:45 CST 2006

    [root@linux ~]# date 120716362006
    Thu Dec 7 16:36:00 CST 2006
    # 瞧!??立刻就修改??了!


    [root@linux ~]# hwclock [-rw]
    ??:
    -r :亦即 read ,?出目前 BIOS ?的????;
    -w :亦即 write ,?目前的 Linux 系????入 BIOS ?中啊!

    2. 查? BIOS ??,?且?入更改?的???!
    [root@linux ~]# hwclock -r
    Thu Dec 7 15:37:44 2006 -0.627128 seconds
    # 看一看,是否?好差??一?小?啊!?就是 BIOS ??!

    [root@linux ~]# hwclock -w
    # ??就?入?~很??吧!


    ??可以?解了???我??行完 Linux ??的校?後,?需要以 hwclock ?更新 BIOS 的??,因?每次??的?候,系??重新由 BIOS ????出?,所以, BIOS 才是重要的??依??。



    --------------------------------------------------------------------------------
    Linux 的?路校?

    在 Linux 的?境?中可利用 NTP 的用?端程式,亦即是 ntpdate ?支程式就能??行??的同步化。 不?你要知道的是,因? NTP 伺服器本?就??上???伺服器?行??的同步化, 所以在??的情?下,NTP 伺服器不可以使用 ntpdate !也就是? ntpdate ? ntpd 不能同??用的。 所以你不要在 NTP server 上??行??指令呦!我?就?看看如何?理吧!
    [root@linux ~]# ntpdate [-nv] [NTP IP/hostname]
    ??:
    -d :?入除?模式 (debug) ,可以?示出更多的有效??。

    [root@linux ~]# ntpdate 192.168.1.254
    7 Dec 17:21:46 ntpdate[1427]: adjust time server 192.168.1.254 offset -0.0147 sec
    # 最後面??示微?的??有多少 (offset)

    [root@linux ~]# hwclock -w
    # ?得?入 BIOS ??才行啊!

    [root@linux ~]# vi /etc/crontab
    # 加入?一行去!
    10 5 * * * root /usr/sbin/ntpdate tock.stdtime.gov.tw && /sbin/hwclock -w


    使用 cron 之後,每天 5:10 Linux 系?就?自?的?行?路校??!相?的?易吧!



    --------------------------------------------------------------------------------
    Windows 的?路校?

    或?你一直都???,其? Windows 在??的情??中,已??我??理了?路校?的工作喔! 不管你?不?意.....你可以?滑鼠的指?指在工作列右下角的???按?下,就?出?如下的?面:



    ?二、Windows XP 提供的?路校?功能

    如上所示,你可以自行填?台?的??伺服器?????,?然也可以填?你自己的??伺服器啊! 之後系?就?主?的上?去更新??了。不?,?是 Windows XP 才有的功能,如果是比?早期的 Windows , 例如 Windows 95/2000 ??是?有??功能的。不?也?有??, 因??家?率???????室 (http://www.stdtime.gov.tw/) 也有提供一?用?端??喔!???料如下:

    http://www.stdtime.gov.tw/chinese/EXE/NTPClock.exe
    你可以下?,直接?行他就知道如何?理了,因?是全中文介面的?形化??嘛!


    --------------------------------------------------------------------------------
    重?回?

    地球共有 24 ???,而以格林威治?? (GMT) ?????;
    台?本地??? GMT + 8 小?;
    最??的???使用原子? (Atomic clock) 所?算的,例如 UTC (Coordinated Universal Time) 就是一例;
    Linux 系?本?就有????,一?是 Linux 以 1970/01/01 ?始??的系???,一??是 BIOS ??的硬???;
    Linux 可以透??路校?,最常?的?路校??使用 NTP 伺服器,??服???在 udp port 123;
    ???案主要放置於 /usr/share/zoneinfo/ 目?下,而本地????考 /etc/localtime;
    NTP 伺服器?一???式的服?,所以 NTP 伺服器本?就??上???伺服器作??的同步化, 因此 nptd ? ntpdate ??指令不可同?使用;
    NTP 伺服器的????可以使用 ntptrace 及 ntpq -p ?查?;
    NTP 提供的用?端??? ntpdate ??指令;
    在 Linux 下想要手??理???,需以 date ?定??後,以 hwclock -w ??入 BIOS 所??的??。
    在 LPI ?站 http://www.lpi.org ?面提到的,在 LPI 102 ?面 NTP 其?考的?不少!Topic 1.111.6 Maintain system time ?面?到,??者??要?解 BIOS ??? UTC ??的意?,同?需要知道怎??定 timezone ,而??差所使用的?案 driftfile 也需要?解?!可能?考的?容含有:
    date
    hwclock
    ntpd
    ntpdate
    /usr/share/zoneinfo
    /etc/localtime
    /etc/ntp.conf
    /etc/ntp.drift (新版已?改至 /var/lib/ntp/drift)

  21. baizx 于 2009-08-10 10:51:22发表:

    vsFTPd ?案伺服器


    本章的行前??工作

    架? FTP 是?很?的任?,因? FTP 服?同??用????通道,分?是命令通道??料流通道, ???通道的??建立方式不太一?,?果就造成了防火??定方面的困?。 所以在?? FTP 之前,?先??您已?具有?路基?概念,而且?防火?也需要有一定程度的概念了喔!

    必?要熟悉?路基?,尤其是?路??的建立是?向的??概念;
    必?要?解防火?的?制,尤其?防火?架?在路由器上的?路架??。
    必?要?解 stand alone ? super daemon 的??方式。

    --------------------------------------------------------------------------------
    FTP 的?料??原理

    FTP 是相?古老的???定之一,他最主要的功能是在伺服器?用?端之??行?案的??。 FTP 其?是以 TCP 封包的模式?行伺服器?用?端??之?的??,???建立後,使用者可以在用?端端?上 FTP 伺服器??行?案的下??上?,此外,也可以直接管理用?在 FTP 伺服器上面的?案呢,相?的方便! 而??古老的?定是使用明???,且?去有相?多的安全危??史。?了更安全的使用 FTP ?定, 我?主要介???安全但功能?少的 vsftpd ?????。


    --------------------------------------------------------------------------------
    FTP 功能?介

    FTP 伺服器的功能除了??的?行?案的???管理之外,依?伺服器??的?定架?, 他?可以提供??主要的功能,底下我??略的??一?:


    不同等?的使用者身份:
    FTP 伺服器在??的情?下,依?使用者登入的情?而分?三?不同的身份,分?是 (1)????,real user;(2)?客, guest;(3)匿名登入者, anonymous ?三?。?三?身份的使用者在系?上面的使用?限差?很大喔! 例如??用?取得系?的?限比?完整,所以可以?行比?多的?作;至於匿名登入者, 大概我?就?提供他下?一下?源而已,?不?匿名者使用太多主?的?源啊! ?然,?三?人物能?使用的『?上指令』自然也就不相同?! ^_^


    命令???登????:
    FTP 可以利用系?的 syslogd ?? daemon ??行?料的??, 而??的?料包括了使用者曾?下??的命令?使用者???料(????、?案大小等等)的??呢! 所以你可以很??的在 /var/log/ ?面找到各?登???喔!


    限制或解除使用者家目?所在(change root, ?? chroot):
    ?了避免使用者在您的 Linux 系??中?意逛大街 (意指??使用者自己的家目?而?入到 Linux 系?的其他目?去), 所以?使用者的工作??『?限』在使用者的家目?底下,嗯!?在是?不?的好主意!FTP 可以限制使用者?能在自己的家目??中活?喔!如此一?,由於使用者?法??自己的家目?,而且登入 FTP 後,?示的『根目?』就是自己家目?的?容,???境?之? change root ,?? chroot ,改?根目?的意思啦!

    ?有什?好?呢??一??意的使用者以 FTP 登入您的系??中,如果?有 chroot 的?境下,他可以到 /etc, /usr/local, /home 等其他重要目?底下去察看?案?料,尤其是很重要的 /etc/ 底下的?定?,如 /etc/passwd 等等。如果您?有做好一些?案?限的管理?保?,那他就有?法取得系?的某些重要??, 用?『入侵』您的系?呢!所以在 chroot 的?境下,?然就比?安全一些咯!


    --------------------------------------------------------------------------------
    FTP 的?作流程?使用到的埠口

    FTP 的??使用的是??可靠的 TCP 封包?定,在前?章的?路基??中我???, TCP ??封包格式在建立??前?先?行三向交握的。不? FTP 伺服器是比?麻?一些,因? FTP 伺服器使用了????,分?是命令通道??料流通道 (ftp-data) 。?????都需要??三向交握, 因?是 TCP 封包嘛!那??????通道的??是如何呢?底下我?先以 FTP ??的主?式 (active) ???作??略的?明?:



    ?一、FTP 伺服器的主?式??示意?

    ??的??就如上?所示,至於??的步?是??的:

    建立命令通道的??
    如上?一所示,用?端???取一?大於 1024 以上的埠口 (port AA) ?? FTP 伺服器端的 port 21 ?成??, ???程?然需要三向交握了!?成??後用?端便可以透??????? FTP 伺服器下?指令, 包括查??名、下?、上?等等指令都是利用??通道?下?的;

    通知 FTP 伺服器端使用 active 且告知?接的埠?
    FTP 伺服器的 21 埠?主要用在命令的下?,但是??涉到?料流?,就不是使用????了。 用?端在需要?料的情?下,?告知伺服器端要用什?方式???,如果是主?式 (active) ???, 用?端?先???用一?埠口 (?一?中的 port BB) ,且透?命令通道告知 FTP 伺服器?????,?等待 FTP 伺服器的??;

    FTP 伺服器『主?』向用?端??
    FTP 伺服器由命令通道?解用?端的需求後,?主?的由 20 ??埠?向用?端的 port BB ??, ?????然也???三向交握啦!此? FTP 的用?端?伺服器端共?建立????,分?用在命令的下???料的??。 而?? FTP 伺服器端使用的主???埠?就是 port 20 ?!
    如此一??成功的建立起『命令』?『?料??』??通道!不?,要注意的是, 『?料??通道』是在有?料??的行??才?建立的通道喔!?不是一?始?接到 FTP 伺服器就立刻建立的通道呢!留意一下?!


    --------------------------------------------------------------------------------

    使用到的埠?
    利用上述的?明?整理一下 FTP ?使用到的埠?主要有:

    命令通道的 ftp (??? port 21) ?
    ?料??的 ftp-data (???port 20)。
    再??一次,???埠口的工作是不一?的,而且,重要的是?者的??方向是不一?的! 首先, port 21 主要接受?自用?端的主???,至於 port 20 ?? FTP 伺服器主???至用?端呢! ??的情?在伺服器?用?端?者同??公共 IP (Public IP) 的???路上面通常?有太大的??,不?, ?一你的用?端端是在防火?後端,或者是 NAT 主?後端呢??有什????生呢?底下我???一????重的??!



    --------------------------------------------------------------------------------

    在 FTP 伺服器?用?端之?具有防火?的????:
    ??得我?的防火?章?吧?一般??,很多的?域?路 (LAN) 都?使用防火? (iptables) 的 NAT 功能,那?在 NAT 主?後端的 FTP 用?如何?接到 FTP 伺服器呢? 我?可以??的以下???明:



    ?二、若 FTP 用?端?伺服器端??中?具有防火?的????
    命令通道的建立:
    因? NAT 主??主?的??由?部送往外部的????,而由於命令通道的建立是由用?端向伺服器端??的, 因此?一???可以?利的建立起?的;

    ?料通道建立?的通知:
    同?的,用?端主??先?用 port BB ,?透?命令通道告知 FTP 伺服器,且等待主?端的主???;

    主?的主?????:
    但是由於透? NAT 主?的??後,FTP 伺服器只能得知 NAT 主?的 IP 而不是用?端的 IP , 因此 FTP 伺服器?以 port 20 主?的向 NAT 主?的 port BB ?送主???的要求。 但你的 NAT 主???有?? port BB ??? FTP 伺服器的??啊!
    ?解??的所在了??在 FTP 的主?式???中,NAT 主???被??用?端,但 NAT 主?其??非用?端啊, ?就造成??了。如果你曾?在 IP 分享器後面?接某些 FTP 伺服器?,可能偶????明明就?接上 FTP 伺服器了 (命令通道已建立),但是就是?法取得?案名?的列表,而是在超?一段??後?示『 Can't build data connection: Connection refused,?法?行?料??』之?的?息, 那肯定就是??原因所造成的困?了。

    那有?有?法可以克服????呢??道真的在 Linux NAT 主?後面就一定?法使用 FTP ???然不是! 目前有???易的方法可以克服????:

    使用 iptables 所提供的 FTP ??模?:
    其? iptables 早就提供了?多好用的模?了,?? FTP ?然不?被??! 你可以使用 modprobe ??指令??入 ip_conntrack_ftp 及 ip_nat_ftp 等模?,???模??主?的分析『目?是 port 21 的??』??, 所以可以得到 port BB 的?料,此?若接受到 FTP 伺服器的主???,就能???封包?向正?的後端主?了! ^_^

    不?,如果你??的目? FTP 伺服器他的命令通道??埠??非??的 21 埠?? (例如某些地下 FTP 伺服器), 那????模?就?法?利解析出?了,???,理解??


    用?端??被?式 (Passive) ??模式:
    除了主?式??之外,FTP ?提供一???被?式??的模式,什?是被?式呢? 既然主?式是由伺服器向用?端??,反???,被?式就是由用?端向伺服器端?起??的?! 既然是由用?端?起??的,那自然就不需要考??自 port 20 的??啦!?於被?式??模式?在下一小?介?喔!

    --------------------------------------------------------------------------------
    用?端??被?式??模式

    那?什?是被?式??呢?我?可以使用底下的?示?作??略的介?喔:



    ?三、被?式??的方向
    建立命令通道:
    同?的需要建立命令通道,透?三向交握就可以建立起??通道了。

    ?出 PASV 的??要求:
    ?有使用?料通道的指令?,用?端可透?命令通道?出 PASV 的被?式??要求 (Passive 的??), ?等待伺服器的回?;

    FTP 伺服器???料埠口,?通知用?端??:
    如果你的 FTP 伺服器是能??理被?式??的,此? FTP 伺服器?先??一?埠口在??。 ??埠口??可能是??的,也可以自?某一??的埠口,端看你的 FTP 伺服器??而定。 然後你的 FTP 伺服器?透?命令通道告知用?端?已???的埠口 (?中的 port PASV), ?等待用?端的??。

    用?端??取用大於 1024 的埠口?行?接:
    然後你的用?端???取用一?大於 1024 的埠???主?的 port PASV ??。 如果一切都?利的?,那?你的 FTP ?料就可以透? port BB 及 port PASV ??送了。
    ??上面的不同?了??被?式 FTP ?料通道的??方向是由用?端向主?端??的喔! 如此一?,在 NAT 主??部的用?端主?就可以?利的?接上 FTP Server 了!但是,?一 FTP 主?也是在 NAT 後端那怎??.....呵呵!那可就糗了吧~ @_@??就?涉到更深入的 DMZ 技巧了,我????不介??些深入的技巧,先理解一下?些特殊的??方向, ??有助於您未?伺服器架??候的考?因素喔!

    此外,不?得您有???,透? PASV 模式,伺服器在?有特??定的情?下,????取大於 1024 的埠口?提供用?端?接之用。那??一主??用的埠口被搞鬼怎???而且, 如此一?也很?追??自入侵者攻?的登???啊!所以,???候我?可以透? passive ports 的功能?『限定』主??用的 port number 喔!



    --------------------------------------------------------------------------------
    FTP 的安全性???替代方案

    事?上,FTP 是一?不太安全的???定呢!怎??呢?因? FTP ? Telnet 相似的, 他是以『明?』的??在???路上面??的,所以?然就容易被有心人士?你的?料?他抓下?, ?且加以利用啦!因此,他?然不是很安全啊!所以,在?路上大家才?常常告??,不要?意架? FTP ?站啊!否?主?怎?被破解的都不?得哩!此外,由於 FTP ??常常?有漏洞的??,因此也要常常更新套件喔!

    另外,其?拜 SSH 所?,目前我?已?有??安全的 FTP 了,那就是 ssh 提供的 sftp ?? server 啊!?? sftp-server 最大的??就是:『他是??加密的?料!』所以在???路上面流?的?候, 嘿嘿!?竟是比?安全一些啦!所以建?您,除非必要,否?的?使用 SSH 提供的 sftp-server 功能即可~

    然而??功能?於一些??了?形介面,或者是有中文?名的使用者??,?在是不怎?方便, ??目前有??形介面的 filezilla 用?端??,不?很多?候?是??生一些莫名的???! 所以,有的?候 FTP ?站?是有其存在的需要的。如果真的要架? FTP ?站,那??是得需要注意??事?喔:

    ??更新到最新版本的 FTP ??,???注意漏洞?息;
    善用 iptables ??定可以使用 FTP 的?域;
    善用 TCP_Wrappers ???可以登入的?域;
    善用 FTP ??的?定?限制使用您 FTP 主?的使用者的不同?限啊;
    使用 Super daemon ???管理您的 FTP 主?;
    ??注意使用者的家目?、以及匿名使用者登入的目?的『?案?限』;
    若不?外公?的?,或?也可以修改 FTP 的 port 。
    ??如何,在?路上??太多人都是由於?放 FTP ??伺服器而?致整?主?被入侵的事件,所以, ??真的要?他一直不?的??,要注意安全啊!



    --------------------------------------------------------------------------------
    ?放什?身份的使用者登入

    既然 FTP 是以明???,?且某些早期的 FTP 伺服器??也有不少的安全性漏洞,那又?何需要架? FTP 伺服器啊? ??法啊,?是有人有需要??玩意?的,譬如?各大?院校不就有提供 FTP ?站的服??? ??可以?校?的同?共同分享校?的?路?源嘛!不?,由於 FTP 登入者的身份可以分?三?, 你到底要?放哪一?身份登入呢????候你可以????的思考一下?:


    ?放??用?的情? (Real user):

    很多的 FTP 伺服器??就已?允???用?的登入了。不?,需要?解的是,以??用?做? FTP 登入者身份?, 系?????有????用???行『限制』的,所以他可以??整??案系??行任何他所具有?限的工作。 因此,如果您的 FTP 使用者?能好好的保?自己的密?而?致被入侵,那?你的整? Linux 系??很有可能被??啊! ?放??用??的建?如下:

    由於??用?本?就可以透??路?接到主???行工作 (例如 SSH),因此?在?有需要特?的?放 FTP 的服?啊! 因?例如 sftp 本?就能?到???案的功能?!

    如果?定要???用?利用 FTP 伺服器的?,那?你可能需要?某些系????法登入才行,例如 bin, apache 等等。 最??常用的作法是透? PAM 模???理,譬如 vsftpd ??????可以透? /etc/vsftpd.ftpusers ???案??定不想?他具有登入?限的??。
    ?客身份 (Guest)

    通常?建立 guest 身份的案例?中,多半是由於主?提供了?似『?人 Web 首?』的功能?一般身份使用者, 那??些使用者?是需要管理自己的??空?吧????候?使用者的身份??成? guest ,?且?他的可用目??定好,即可提供使用者一?方便的使用?境了!且不需要提供他 real user 的?限喔! 常?的建?如下:

    ?提供需要登入的??即可,不需要提供系?上面所有人均可登入的?境啊!

    ?然,我?在主?的?定?中,需要??不同的?客?他?不一?的『家目?』, 而??家目??使用者的?限?定需要相符合喔!例如要提供 dmtsai ??人管理他的??空?,而他的??空?放置在 /home/dmtsai/www 底下,那我就? dmtsai 在 FTP 提供的目??有 /home/dmtsai/www 而已,比?安全啦!而且也方便使用者啊!

    ????的身份者,需要?定?多的限制,包括:上下??案?目?硬碟容量的限制、 ??登入的??限制、?可使用的指令要?少很多很多,例如 chmod 就不要允?他使用等等!
    匿名登入使用者 (anonymous)

    ?然提供匿名登入????路的使用者?入?在不是?好主意,因?每?人都可以去下?你的?料, ?一??被吃光光怎???但如同前面??的,?校?位需要分享全校同?一些???源?, FTP 伺服器也是一?很不?的解?方案啊!您?是吧。如果要?放匿名使用者的?,要注意:

    ??如何,提供匿名登入都是一件相?危?的事情,因?只要您一不小心, ?重要的?料放置到匿名者可以?取的目?中?,那?就很有可能??密!?其??兢兢,不如就不要?定啊~

    果真要?放匿名登入?,很多限制都要?行的,?包括:(1)允?的工作指令要?低很多, ?乎就不?匿名者使用指令啦、(2)限制?案??的?量,?量不要允?『上?』?料的?定、 (3)限制匿名者同?登入的最大???量,可以控制??喔!
    一般??,如果你是要放置一些公?的、?有版???的?料在?路上供人下?的?, 那?一??提供匿名登入的 FTP 伺服器,?且?整????路?放是 OK 的啦! 不?,如果你??要提供的的??或?料是具有版?的,但是?版?允?你在??位???的情?下, 那?架?一?『????部?放的匿名 FTP 伺服器 (利用防火??理) 』也是 OK 的啦!

    如果你?想要?使用者反?的?,那是否要架?一?匿名者可上?的?域呢??哥??件事情的看法是.... 『??不可』啊!如果要?使用者反?的?,除非?使用者是你信任的,否?不要允??方上?! 所以此?一??案系??限管理?格的 FTP 伺服器,?提供??用?的登入就有?需求啦! ?之,要依照您的需求?思考是否有需要喔!


    --------------------------------------------------------------------------------
    vsftpd 伺服器基??定

    ?於要?聊一聊????的 vsftpd ?!vsftpd 的全名是『Very Secure FTP Daemon 』的意思, ?句??,vsftpd 最初?展的理念就是在於建?一?以安全?重的 FTP 伺服器呢!我?先?聊一聊?什? vsftpd ??『非常安全』呢?然後再???定吧!


    --------------------------------------------------------------------------------
    ?何使用 vsftpd

    ?了建?一?安全?主的 FTP 伺服器, vsftpd ??作?系?的『程序的?限 (privilege)』概念???, 如果你??基?篇的程序??源管理章?的?, 你????得系?上面所?行的程式都?引?一?程序,我??他? PID (Process ID), ?? PID 在系?上面能?行的任??他?有的?限有?。也就是?, PID ?有的?限等?越高, 他能??行的任?就越多。?例??,使用 root 身份所??的 PID 通常?有可以?行任何工作的?限等?。

    不?,?一???? PID 的程式 (program) 有漏洞而?致被?路怪客 (cracker) 所攻?而取得此 PID 使用??, 那??路怪客??取得?? PID ?有的?限?!所以,近??展的套件都??量的?服?取得的 PID ?限降低,使得?服?即使不小心被入侵了,入侵者也?法得到有效的系?管理?限,????我?的系???安全的啦。 vsftpd 就是基於??想法而??的。

    除了 PID 方面的?限之外, vsftpd 也支援 chroot ??函式的功能,chroot ?名思?就是『 change root directory 』的意思,那? root 指的是『根目?』而非系?管理?。 他可以?某?特定的目??成根目?,所以??目??有??的其他目?就不?被?用了。

    ?例??,如果你以匿名身份登入我?的 ftp 服?的?,通常你?被限定在 /var/ftp 目?下工作, 而你看到的根目?其?就只是 /var/ftp ,至於系?其他如 /etc, /home, /usr... 等其他目?你就看不到了! ??一?即使?? ftp 服?被攻破了,?有??,入侵者?是?能在 /var/ftp ?面跑?跑去而已,而?法使用 Linux 的完整功能。自然我?的系?也就?比?安全啦!

    vsftpd 是基於上面的?明???的一???安全的 FTP 伺服器??,他具有底下的特?喔:

    vsftpd ??服?的??者身份?一般使用者,所以?於 Linux 系?的使用?限?低,?於 Linux 系?的危害就相?的?低了。此外, vsftpd 亦利用 chroot() ??函式?行改?根目?的?作,使得系?工具不?被 vsftpd ?支服?所?用;

    任何需要具有?高?行?限的 vsftpd 指令均以一支特殊的上?程序 (parent process) 所控制 ,?上?程序享有的?高?行?限功能已?被限制的相?的低,?以不影? Linux 本身的系???;

    ?大部分 ftp ?使用到的?外指令功能 (dir, ls, cd ...) 都已?被整合到 vsftpd 主程式?中了, 因此理?上 vsftpd 不需要使用到?外的系?提供的指令,所以在 chroot 的情?下, vsftpd 不但可以?利?作,且不需要?外功能?於系???也比?安全。

    所有?自用?端且想要使用?支上?程序所提供的?高?行?限之 vsftpd 指令的需求, 均被??『不可信任的要求』??理,必需要??相?程度的身份??後,方可利用?上?程序的功能。 例如 chown(), Login 的要求等等?作;

    此外,上面提到的上?程序中,依然使用 chroot() 的功能?限制使用者的?行?限。
    由於具有??的特?,所以 vsftpd ??的比?安全一些咯!底下就?始??如何?定吧!



    --------------------------------------------------------------------------------
    所需要的套件以及套件??

    vsftpd 所需要的套件只有一?,那就是 vsftpd 啊!^_^!如果你的 CentOS ?有安?, ?利用 yum install vsftpd ?安?他吧!套件很小,下??同安?不需要?秒?就搞定了! 而事?上整?套件提供的?定?也少的令人高?!??易用就是 vsftpd 的特色啊! ^_^! ?些?定?料比?重要的有:

    /etc/vsftpd/vsftpd.conf
    ?格??,整? vsftpd 的?定?就只有???案!???案的?定是以 bash 的???定相同的方式??理的, 也就是『??=?定值』??定的,注意, 等???不能有空白喔!至於??的 vsftpd.conf 可以使用 『 man 5 vsftpd.conf 』??查。

    /etc/pam.d/vsftpd
    ??是 vsftpd 使用 PAM 模??的相??定?。主要用?作?身份??之用,?有一些使用者身份的抵?功能, 也是透????案??成的。你可以察看一下??案:
    [root@linux ~]# cat /etc/pam.d/vsftpd
    #%PAM-1.0
    auth required pam_listfile.so item=user sense=deny
    file=/etc/vsftpd.ftpusers onerr=succeed
    auth required pam_stack.so service=system-auth
    auth required pam_shells.so
    account required pam_stack.so service=system-auth
    session required pam_stack.so service=system-auth


    上面的特殊字??同一行,那? file 後面接的?案是『限制使用者?法使用 vsftpd 』之意, 也就是?,其?你的限制?案不?得要使用系???值,也可以在???案?面?行修改啦! ^_^

    /etc/vsftpd.ftpusers
    ?上一??案有??,也就是 PAM 模? (/etc/pam.d/vsftpd_ 所指定的那??法登入的使用者?定?啊! ???案的?定很??,你只要?『不想?他登入的??』?入???案即可。一行一???,看起?像??:
    [root@linux ~]# cat /etc/vsftpd.ftpusers
    # Users that are not allowed to login via ftp
    root
    bin
    daemon
    ....底下省略....


    瞧??有??大部分的系???都在???案?喔,也就是?,系?????是?有?法使用 vsftpd 的啦! 如果你?想要?某些使用者?法登入,?在??是最快的!

    /etc/vsftpd.user_list
    ???案是否能?生效? vsftpd.conf ?的????有?,分?是『 userlist_enable, userlist_deny 』。 如果? /etc/vsftpd.ftpusers 是 PAM 模?的抵??定?目,那??? /etc/vsftpd.user_list ?是 vsftpd 自?的抵??目。事?上???案? /etc/vsftpd.ftpusers ?乎一模一?, 在??的情?下,你可以?不希望可登入 vsftpd 的???入??。不????案的功能?依? vsftpd.conf ?定??的 userlist_deny={YES/NO} 而不同,?得要特?留意喔!

    /etc/vsftpd.chroot_list
    ???案??是不存在的,所以你必?要手?自行建立。???案的主要功能是可以?某些??的使用者 chroot 在他?的家目?下!但???案要生效? vsftpd.conf ?的『 chroot_list_enable, chroot_list_file 』????有?。 如果你想要?某些??用?限制在他?的家目?下而不?到其他目?去,可以?????定?目喔!

    /usr/sbin/vsftpd
    ?就是 vsftpd 的主要?行?咯!不要?疑, vsftpd 只有?一??行?而已啊!

    /var/ftp/
    ??是 vsftpd 的??匿名者登入的根目?喔!

    大致上就只有????案需要注意而已,而且每??案的?定又都很??!真是不?啊!



    --------------------------------------------------------------------------------
    vsftpd.conf ?定值?明

    事?上,/etc/vsftpd/vsftpd.conf 本身就是一?挺??的?定?,且使用『 man 5 vsftpd.conf 』?可以得到完整的???明。 不?我???依?先? vsftpd.conf ?的常用???他?出?,希望?您有?助:


    --------------------------------------------------------------------------------

    ?主??相?的?定值
    connect_from_port_20=YES (NO)
    ?得在前一小?提到的主?式??使用的 FTP 伺服器的埠????就是 ftp-data 的埠?;

    listen_port=21
    vsftpd 使用的命令通道之埠?,如果您想要使用非正?的埠?,在???定?目修改吧! 不?你必?要知道,???定值??合以 stand alone 的方式???喔!(?於 super daemon ?效)

    dirmessage_enable=YES (NO)
    ?使用者?入某?目??,??示?目?需要注意的?容,?示的?案??是 .message ,你可以使用底下的?定?目?修?!

    message_file=.message
    ? dirmessage_enable=YES ?,可以?定???目?? vsftpd ?找??案??示?息!

    listen=YES (NO)
    若?定? YES 表示 vsftpd 是以 standalone 的方式???的!

    pasv_enable=YES (NO)
    ??被?式??模式(passive mode),一定要?定? YES 的啦!

    use_localtime=YES (NO)
    是否使用本地???vsftpd ??使用 GMT ??(格林威治),所以?比台?晚 8 小?,建??定? YES 吧!

    write_enable=YES (NO)
    如果你允?使用者上??料?,就要?????定值;

    connect_timeout=60
    ?位是秒,在?料?接的主?式??模式下,我??出的?接??在 60 秒?得不到用?端的回?,?不等待??制??咯。

    accept_timeout=60
    ?使用者以被?式 PASV ??行?料???,如果主??用 passive port ?等待 client 超? 60 秒而?回?, 那?就?他?制??!???定值? connect_timeout ?似,不?一?是管理主???,一?管理被???。

    data_connection_timeout=300
    如果伺服器?用?端的?料??已?成功建立 (不?主??是被???),但是可能由於?路???致 300 秒??是?法?利的完成?料的?送,那用?端的??就?被我?的 vsftpd ?制剔除!

    idle_session_timeout=300
    如果使用者在 300 秒?都?有命令?作,?制??!

    max_clients=0
    如果 vsftpd 是以 stand alone 方式??的,那????定?目可以?定同一??,最多有多少 client 可以同??上 vsftpd 哩!?

    max_per_ip=0
    ?上面 max_clients ?似,??是同一? IP 同一??可允?多少???

    pasv_min_port=0, pasv_max_port=0
    上面??是? passive mode 使用的 port number 有?,如果您想要使用 65400 到 65410 ? 11 ? port ??行被?式??模式的?接,可以???定 pasv_max_port=65410 以及 pasv_min_port=65400。 如果是 0 的?,表示??取用而不限制。

    ftpd_banner=一些文字?明
    ?使用者???入到 vsftpd ?,在 FTP 用?端??上???示的?明文字。不?,???定值?料比?少啦! 建?你可以使用底下的?定值?取代???目;

    banner_file=/path/file
    ???目可以指定某??文字?作?使用者登入 vsftpd 伺服器?所?示的?迎字眼。


    --------------------------------------------------------------------------------

    ???用??相?的?定值
    guest_enable=YES (NO)
    若??值?定? YES ?,那?任何非 anonymous 登入的??,均?被假?成? guest (?客) 喔! 至於?客在 vsftpd ?中,???取得 ftp ??使用者的相??限。但可以透? guest_username ?修改。

    guest_username=ftp
    在 guest_enable=YES ?才?生效,指定?客的身份而已。

    local_enable=YES (NO)
    ???定值必?要? YES ?,在 /etc/passwd ?的??才能以??用?的方式登入我?的 vsftpd 主?喔!

    local_max_rate=0
    ??用?的??速度限制,?位? bytes/second, 0 ?不限制。

    chroot_local_user=YES (NO)
    ?使用者限制在自己的家目?之?(chroot)!???定在 vsftpd ?中??是 NO,因?有底下???定?目的?助喔! 所以不需要??他!
    chroot_list_enable=YES (NO)
    是否?用?某些??用?限制在他?的家目?????是 NO ,不?,如果您想要?某些使用者?法??他?的家目??, 可以考?????定? YES ,?且??下??定值

    chroot_list_file=/etc/vsftpd.chroot_list
    如果 chroot_list_enable=YES 那?就可以?定???目了! 他?面可以?定那一???用??被限制在自己的家目??而?法??!(chroot) 一行一???即可!

    userlist_enable=YES (NO)
    是否藉助 vsftpd 的抵??制??理某些不受?迎的??,?底下的?定有?;

    userlist_deny=YES (NO)
    ? userlist_enable=YES ?才?生效的?定,若此?定值? YES ?,??使用者??被列入到某??案?, 在??案?的使用者??法登入 vsftpd 伺服器!??案?名?下列?定?目有?。
    userlist_file=/etc/vsftpd.user_list
    若上面 userlist_deny=YES ?,????案就有用?了!在???案?的??都?法使用 vsftpd 喔!


    --------------------------------------------------------------------------------

    匿名者登入的?定值
    anonymous_enable=YES (NO)
    ?定?允? anonymous 登入我?的 vsftpd 主?!??是 YES ,底下的所有相??定都需要????定? anonymous_enable=YES 之後才?生效!

    anon_world_readable_only=YES (NO)
    ?允? anonymous 具有下?可??案的?限,??是 YES。

    anon_other_write_enable=YES (NO)
    是否允? anonymous 具有?入的?限???是 NO!如果要?定? YES, 那??放? anonymous ?入的目?亦需要?整?限,? vsftpd 的 PID ?有者可以?入才行!

    anon_mkdir_write_enable=YES (NO)
    是否? anonymous 具有建立目?的?限???值是 NO!如果要?定? YES, 那? anony_other_write_enable 必??定? YES !

    anon_upload_enable=YES (NO)
    是否? anonymous 具有上??料的功能,??是 NO,如果要?定? YES , ? anon_other_write_enable=YES 必??定。

    deny_email_enable=YES (NO)
    ?某些特殊的 email address 抵?住,不?那些 anonymous 登入! 如果以 anonymous 登入主??,不是?要求?入密???密?不是要您 ?入您的 email address ??如果你很??某些 email address , 就可以使用???定??他取消登入的?限!需?下??定?目配合:

    banned_email_file=/etc/vsftpd.banned_emails
    如果 deny_email_enable=YES ?,可以利用???定?目??定哪? email address 不可登入我?的 vsftpd 喔!在上面?定的?案?,一行?入一? email address 即可!

    no_anon_password=YES (NO)
    ??定? YES ?,表示 anonymous ??略?密???步?,而直接?入 vsftpd 伺服器?喔!所以一般??都是 NO 的!

    anon_max_rate=0
    ???定值後面接的?值?位? bytes/秒 ,限制 anonymous 的??速度,如果是 0 ?不限制(由最大??所限制),如果您想? anonymous ?有 30 KB/s 的速度,可以?定『anon_max_rate=30000』

    anon_umask=077
    限制 anonymous 的?限!如果是 077 ? anonymous ?送??的?案 ?限?是 -rw------- 喔!


    --------------------------------------------------------------------------------

    ?於系?安全方面的一些?定值
    ascii_download_enable=YES (NO)
    如果?定? YES ,那? client 就可以使用 ASCII 格式下??案。

    ascii_upload_enable=YES (NO)
    ?上一??定?似的,只是???定??上?而言!??是 NO

    one_process_model=YES (NO)
    ???定?目比?危?一?~??定? YES ?,表示每?建立的?? 都??有一支 process 在??,可以增加 vsftpd 的效能。不?, 除非您的系?比?安全,而且硬?配?比?高,否?容易耗?系??源喔!一般建??定? NO 的啦!

    tcp_wrappers=YES (NO)
    ?然我?都??支援 TCP Wrappers 的啦!所以?定? YES 吧!

    xferlog_enable=YES (NO)
    ??定? YES ?,使用者上??下??案都?被??起?。??的?案?下一??定?目有?:

    xferlog_file=/var/log/vsftpd.log
    如果上一? xferlog_enable=YES 的?,??就可以?定了!??是登??的?名啦!

    xferlog_std_format=YES (NO)
    是否?定? wu ftp 相同的登??格式?!??? NO ,因?登???比?容易?! 不?,如果您有使用 wu ftp 登??的分析??,??才需要?定? YES

    nopriv_user=nobody
    我?的 vsftpd ??以 nobody 作?此一服??行者的?限。因? nobody 的?限 相?的低,因此即使被入侵,入侵者?能取得 nobody 的?限喔!

    pam_service_name=vsftpd
    ??是 pam 模?的名?,我?放置在 /etc/pam.d/vsftpd 即是??咚咚!

    上面?些是相?常?的 vsftpd 的?定??,?有很多??我?有列出?,您可以使用 man 5 vsftpd.conf 查?喔!不?,基本上上面?些??已??我??定 vsftpd ?。



    --------------------------------------------------------------------------------
    vsftpd ??的模式

    vsftpd 可以?有????的方式,分?是一直在??的 stand alone ,一??是透? xinetd ?? super daemon ?管理的方式,??方式所使用的??程序不太相同,而我?的 CentOS ???是以 stand alone ???的。 那什??候???? stand alone 或者是 super daemon 呢?如果你的 ftp 伺服器是提供?整????路??行大量下?的任?,例如各大?院校的 FTP 伺服器,那建?你使用 stand alone 的方式, 服?的速度上?比?好。如果?是提供??部人?使用的 FTP 伺服器,那使用 super daemon ?管理即可啊。


    利用系?提供的 script ??? vsftpd

    其? CentOS 不用作任何?定就能??? vsftpd ?!是????的啦:
    [root@linux ~]# /etc/init.d/vsftpd start
    [root@linux ~]# netstat -tulnp| grep 21
    tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 11689/vsftpd
    # 看到?,是由 vsftpd 所??的呢!



    自行?定以 super daemon ???

    如果你的 FTP 是很少被使用的,那?利用 super daemon ?管理不失?一?好主意。 不?若你想要使用 super daemon 管理的?,那就得要自行修改一下?定?了。其?也不?啦,你??要???理的:
    [root@linux ~]# vi /etc/vsftpd/vsftpd.conf
    # 找到底下?一行:大?在 109 行左右啦!
    listen=YES
    # ?他改成??啊:
    listen=NO


    接下?修改一下 super daemon 的?定?,底下???案你必?要自行建立的,原本是不存在的喔:
    [root@linux ~]# vi /etc/xinetd.d/vsftpd
    service ftp
    {
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/vsftpd
    log_on_success += DURATION USERID
    log_on_failure += USERID
    nice = 10
    disable = no
    }


    然後????看看呢:
    [root@linux ~]# /etc/init.d/vsftpd stop
    [root@linux ~]# /etc/init.d/xinetd restart
    [root@linux ~]# netstat -tulnp| grep 21
    tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 32274/xinetd



    有趣吧!?者??的方式可不一?啊!管理的方式就?差很多的呦! 不管你要使用哪???的方式,切?不要?者同???,否???生??的! 你??使用 chkconfig --list ?查一下?????的方式,然後依?你的需求??定用哪一?方式??。 ?哥底下的?定都?以 stand alone ?? CentOS ??的??模式??理,所以?????的?作?他改回?喔!



    --------------------------------------------------------------------------------
    CentOS 的 vsftpd ??值

    在 CentOS 的??值?中,vsftpd 是同??放??用??匿名使用者的,CentOS 的??值如下:
    [root@linux ~]# vi /etc/vsftpd/vsftpd.conf
    # 底下?哥?列出有?定的?目,若??定?,?以您系?的 man 5 vsftpd.conf
    # ?果去搜???值即可喔!
    # 1. ?匿名者有?的??:
    anonymous_enable=YES

    # 2. ???用?有?的?定
    local_enable=YES
    write_enable=YES
    local_umask=022
    userlist_enable=YES

    # 3. ?主?有?的?定
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    pam_service_name=vsftpd
    listen=YES
    tcp_wrappers=YES


    上面各??定值?自行?考前一小? vsftpd.conf ?定?目的???明吧。 而通???的?定值咱?的 vsftpd 可以?到如下的功能:

    你可以使用 anonymous ??匿名??或其他???? (/etc/passwd) 登入;
    anonymous 的家目?在 /var/ftp ,且?上??限,亦已?被 chroot 了;
    ??用?的家目??考 /etc/passwd ,??有被 chroot ,可前往任何有?限可?入的目?中;
    任何於 /etc/vsftpd.ftpusers ?存在的??均?法使用 vsftpd ;
    可利用 /etc/hosts.{allow|deny} ?作?基?防火?;
    ?用?端有任何上?/下????,????被??到 /var/log/vsftpd.log 中;
    主?式??的埠口? port 20;
    使用格林威治?? (GMT)。
    所以?你?? vsftpd 後,你的??用?就能?直接利用 vsftpd ??服????他自己的?料了。 不?比?大的??是,因? vsftpd ??使用 GMT ??,因?你在用?端使用 ftp ???接到 FTP 伺服器?,???每??案的??都慢了八小?了!真是??啊! 所以建?你加?一???值,就是『 use_localtime=YES 』?!
    [root@linux ~]# vi /etc/vsftpd/vsftpd.conf
    # 在???案?中加入?一句即可
    use_localtime=YES
    .....底下省略.....

    [root@linux ~]# /etc/init.d/vsftpd restart


    如此一?你的 FTP 伺服器不但可以提供匿名???下? /var/ftp 的?料,如果使用?????登入的?, 就能??入到?使用者的家目?底下去了!真是很??方便的一??定啊!且使用本地端??呢! ^_^



    --------------------------------------------------------------------------------
    ?有??用?登入的?定

    ?然在 CentOS 的??情??中??用?已?可以使用 FTP 的服?了,不?我?可能?需要一些?外的功能?限制??用?, ?例??,限制使用者?法??家目? (chroot) 、限制下?速率、限制使用者上??案?的?限 (mask)等等。 底下我?先列出一些希望?到的功能,然後再???行?外功能的?理:

    希望使用台?本地??取代 GMT ??;
    使用者登入??示一些?迎?息的??;
    系???不可登入主? (亦即 UID 小於 500 以下的??);
    一般??用?可以?行上?、下?、建立目?及修改?案等?作;
    使用者新增的?案、目?之 umask 希望?定? 002;
    其他主??定值保留??值即可。
    你可以自行?理 vsftpd.conf ???案,以下?是一??例。注意,如果你的 vsftpd.conf ?有相??定值, ?自行?上吧!OK!?我??始一步一步?依序?理先:

    先建立?定?,???定?已?包含了主要?定值:
    [root@linux ~]# vi /etc/vsftpd/vsftpd.conf
    # 1. ?匿名者相?的??,在??案例中?匿名登入取消:
    anonymous_enable=NO

    # 2. ???用?相?的??
    # 可?入,且新增目?、?案?限? 775,因? umask ? 002 嘛!
    local_enable=YES
    write_enable=YES
    local_umask=002
    # ?定抵?某些使用者登入的?目?定值!注意,底下的?案必?存在!
    userlist_enable=YES
    userlist_deny=YES
    userlist_file=/etc/vsftpd.user_list

    # 3. ?主?有?的?定
    use_localtime=YES
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    pam_service_name=vsftpd
    listen=YES
    tcp_wrappers=YES
    banner_file=/etc/vsftpd/welcome.txt

    [root@linux ~]# /etc/init.d/vsftpd restart




    建立?迎?息:

    ?我?想?登入者可查?咱?系?管理?所下?的『公告』事??,可以使用???定!那就是 banner_file=/etc/vsftpd/welcome.txt ????的用途了!我?可以?????案即可。 好了,?始?建立?迎?面吧!
    [root@linux ~]# vi /etc/vsftpd/welcome.txt
    ?迎光?本小站,本站提供 FTP 的相?服?!
    主要的服?是??本???用?提供的,
    若有任何??,???哥??!




    建立限制系???登入的?案

    再?是??系?????予抵?的?制,其?有???案啦,一?是 PAM 模?管的,一?是 vsftpd 主?提供的, 在??的情?下????案分?是:


    /etc/vsftpd.ftpusers:就是 /etc/pam.d/vsftpd ???案的?定所影?的;
    /etc/vsftpd.user_list:由 vsftpd.conf 的 userlist_file 所?定。

    ????案的?容是一?的哩~?且????案必?要存在才行。?你?考你的 /etc/passwd ?定?, 然後? UID 小於 500 的??名??他同??到????案?吧!一行一???!
    [root@linux ~]# vi /etc/vsftpd.user_list
    root
    bin
    ....底下省略....




    ???果:

    你可以使用?形介面的 FTP 用?端????理,也可以透? Linux 本身提供的 ftp 用?端功能哩! ?於 ftp 指令我?已?在之前的常用?路指令??了, 你可以自行前往?考。??直接??一下吧:
    1. ??使用已知使用者登入,例如 dmtsai ????用?:
    [root@linux ~]# ftp localhost
    Connected to localhost (127.0.0.1).
    220-?迎光?本小站,本站提供 FTP 的相?服?! <==??建立的?迎?息
    220-主要的服?是??本???用?提供的,
    220-若有任何??,???哥??!
    220
    Name (localhost:root): dmtsai <==登入者??!
    331 Please specify the password.
    Password: <==?入密?,?幕不?有任何?息的?示
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> bye
    221 Goodbye.


    在以上面的方式??完?後,你可以在登入者???分?填? (1)root (2)anonymous ???登入看看! 如果不能登入的?,那就是?定 OK 的啦!^_^

    --------------------------------------------------------------------------------

    chroot 的使用
    假?你的系??中有?多??,但是 dmtsai 以及 bird1 ?????是?放?一般客?的, 你不想??????可以??他的家目?,???候就得使用 chroot 的?定了。?定的方式很??, 你先要修改 vsftpd.conf ,增加????目:
    [root@linux ~]# vi /etc/vsftpd/vsftpd.conf
    # 增加是否?定??某些使用者? chroot 的相??定呦!
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd.chroot_list

    [root@linux ~]# /etc/init.d/vsftpd restart


    然後建立要被 chroot 的使用者?案:
    [root@linux ~]# vi /etc/vsftpd.chroot_list
    dmtsai
    bird1


    不要?疑!??就能?????使用者限制在家目??了,有???吧!



    --------------------------------------------------------------------------------

    更?格的 chroot ?境
    上面提到的是????用??有 chroot 而特定人士被 chroot 的?境,那如果我想要的是: 所有使用者??? chroot ,但某些使用者可不受限制的?境呢? 那你就得要??做了:
    [root@linux ~]# vi /etc/vsftpd/vsftpd.conf
    # ??所有??用?被 chroot 而?放某些人可完整存取 (不 chroot) 的情?
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd.chroot_list

    [root@linux ~]# /etc/init.d/vsftpd restart


    由於多了 chroot_list_enable=YES ????,因此?入 /etc/vsftpd.chroot_list ?的使用者反而是被??可以不受 chroot 的??!假?系?中的 nikky ??使用者?被信任的,所以你要??:
    [root@linux ~]# vi /etc/vsftpd.chroot_list
    nikky


    ?未?所有新增的用?都是??被 chroot 的,除非?用?被?入 /etc/vsftpd.chroot_list 才能?不?被 chroot 呢!?不是比??格??



    --------------------------------------------------------------------------------

    限制下???
    有的?候你可能不希望??被使用者上?/下?所耗?,而影?咱?伺服器的其他工作之?作, 所以限制使用者????有?也是需要的!假?『我要限制所有使用者的????最大可? 100KBytes/秒』, 你可以??做即可:
    [root@linux ~]# vi /etc/vsftpd/vsftpd.conf
    # 增加底下?一???即可:
    local_max_rate=100000

    [root@linux ~]# /etc/init.d/vsftpd restart


    上述的?位是 Bytes/秒,所以你可以依?你自己的?路?境?限制你的??!??就?他限制好?!有?容易吧!^_^



    --------------------------------------------------------------------------------

    限制最大上?人??同一 IP 的?源?
    如果你有限制最大使用??的?,那?你可能?需要限制最大?上人?才行!?例??, 你希望最多只有 10 ?人同?使用你的 FTP 的?,?且每? IP ?源最多只能建立一? FTP 的???, 那你可以??做:
    [root@linux ~]# vi /etc/vsftpd/vsftpd.conf
    # 增加底下的?????:
    max_clients=10
    max_per_ip=1

    [root@linux ~]# /etc/init.d/vsftpd restart


    ??就搞定了!?你的 FTP 不?人??患?!



    --------------------------------------------------------------------------------

    建立?格的可使用 FTP 的??列表
    在上述的?定?中,我??『不?使用 FTP 的???入 /etc/vsftpd.user_list ?案中』,所以?有?入 /etc/vsftpd.user_list ?中的使用者就能?使用 FTP 了!如此一?,未?新增的使用者??都能?使用 FTP 的服?。 如果??角度?思考,若我想只?某些人可以使用 FTP 而已,亦即是新增的使用者??不可使用 FTP ??服?的?那???如何作呢?你需要修改?定?成???:
    [root@linux ~]# vi /etc/vsftpd/vsftpd.conf
    # ?????必?要修改成??:
    userlist_enable=YES
    userlist_deny=NO
    userlist_file=/etc/vsftpd.user_list

    [root@linux ~]# /etc/init.d/vsftpd restart


    ?此?『?入 /etc/vsftpd.user_list ?成可以使用 FTP 的??』了! 所以未?新增的使用者如果要能?使用 FTP 的?,就必?要?入 /etc/vsftpd.user_list 才行! 使用???制?特?小心,否?容易搞混掉~


    透??????的?定值,相信 vsftpd 已?可以符合大部分合法 FTP ?站的需求?! 更多??的用法???考 man 5 vsftpd.conf 吧!

    例?:
    假?你因?某些特殊需求,所以必?要?放 root 使用 FTP ???案,那?你??要如何?理?
    答:
    由於系????法使用 FTP 是因? PAM 模?? vsftpd 的?建功能所致,亦即是 /etc/vsftpd.ftpusers 及 /etc/vsftpd.user_list ????案的影?。所以你只要?入????案,?且? root 那一行?解掉, 那 root 就可以使用 vsftpd?? FTP 服?了。 不?,不建?如此作喔!



    --------------------------------------------------------------------------------
    ?有匿名登入的相??定

    ?然你可以同?????用??匿名用?,不?建?你主??是依?需求,???一?身份??定吧! 底下我????匿名用?,且不?放??用?。一般??,???定是??似大?院校的 FTP 伺服器?使用的哩!

    使用台?本地的??,而非 GMT ??;
    提供?迎?息,?明可提供下?的??;
    ??放 anonymous 的登入,且不需要?入密?;
    ?案??的速限? 30 Kbytes/second;
    ?料?接的?程 (不是命令通道!) 只要超? 60 秒?有回?,就?制 Client ??!
    只要 anonymous 超?十分??有?作,就予以??;
    最大同?上?人?限制? 50 人,且同一 IP ?源最大???量? 5 人;
    OK!那如何?定呢?首先我?必?要知道的是匿名使用者的目?在哪?? 事?上匿名者??登入的根目?是以 ftp ??使用者的家目??主,所以你可以使用『 finger ftp 』?查?。 咱?的 CentOS ??的匿名者根目?在 /var/ftp/ 中。且匿名登入者在使用 FTP 服??,他??可以使用『 ftp 』 ??使用者身份的?限喔,只是被 chroot 到 /var/ftp/ 目?中就是了。

    因?匿名者只?在 /var/ftp/ ?中??,所以你必??要提供?使用者下?的?料通通?放置到 /var/ftp/ 去。 假?你已?放置了 linux 的相?目?以及 gnu 的相???到?目?中了,那我?可以??做?假?:
    [root@linux ~]# mkdir /var/ftp/linux
    [root@linux ~]# mkdir /var/ftp/gnu


    然後? vsftpd.conf 的?料清空,重新???理他吧:

    建立 vsftpd.conf 的?定?料
    [root@linux ~]# vi /etc/vsftpd/vsftpd.conf
    # ????案改成??:
    # 1. ?匿名者相?的??:
    anonymous_enable=YES
    # 不必提供密?啦!可直接登入哩!
    no_anon_password=YES
    # 限制流速啦!
    anon_max_rate=30000
    # ?????有?的?定?目
    data_connection_timeout=60
    idle_session_timeout=600
    # 限制??人?
    max_clients=50
    max_per_ip=5

    # 2. ???用?相?的??,本案例中???他的情?!
    local_enable=NO

    # 3. ?主?有?的?定
    use_localtime=YES
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    pam_service_name=vsftpd
    listen=YES
    tcp_wrappers=YES
    banner_file=/etc/vsftpd/anon_welcome.txt

    [root@linux ~]# /etc/init.d/vsftpd restart




    建立?迎?面?下?提示?息

    各位??的??朋友!要注意~在??案例?中,我???迎?息?定在 /etc/vsftpd/anon_welcome.txt ???案中, 至於???案的?容你可以???:
    [root@linux ~]# vi /etc/vsftpd/anon_welcome.txt
    ?迎光?本站所提供的 FTP 服?!
    本站主要提供 Linux 作?系?相??案以及 GNU 自由??喔!
    有????站???!??大家!
    主要的目??:

    linux 提供 Linux 作?系?相???
    gnu 提供 GNU 的自由??


    看到?!主要?的?料都是??一些公告事?就是了!


    ??

    同?的,我?使用 ftp ??????他??一下吧!
    [root@linux ~]# ftp localhost
    Connected to localhost (127.0.0.1).
    220-?迎光?本站所提供的 FTP 服?! <==同?的,一些?迎?息
    220-本站主要提供 Linux 作?系?相??案以及 GNU 自由??喔!
    220-有????站???!??大家!
    220-主要的目??:
    220-
    220-linux 提供 Linux 作?系?相???
    220-gnu 提供 GNU 的自由??
    220
    Name (localhost:root): anonymous <==一定得是??匿名??
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> dir
    227 Entering Passive Mode (127,0,0,1,94,56)
    150 Here comes the directory listing.
    drwxr-xr-x 2 0 0 4096 Dec 18 17:37 gnu
    drwxr-xr-x 2 0 0 4096 Dec 18 17:37 linux
    drwxr-xr-x 2 0 0 4096 Aug 13 03:25 pub
    226 Directory send OK.
    ftp> bye
    221 Goodbye.


    看到否??次可就不需要?入任何密?了,因?是匿名登入嘛!而且,如果你?入任何其他的??, 那? vsftpd ?立刻回???的??喔!OK 的啦!


    --------------------------------------------------------------------------------

    建立上?/下?目?
    在上列的?料?中,??上匿名使用者?可?行下?的?作而已。如果你?想?匿名者可以上??案或者是建立目?的?, 那你?需要?外增加一些?定才行:
    [root@linux ~]# vi /etc/vsftpd/vsftpd.conf
    # 新增底下??行啊!
    write_enable=YES
    anon_other_write_enable=YES
    anon_mkdir_write_enable=YES
    anon_upload_enable=YES

    [root@linux ~]# /etc/init.d/vsftpd restart


    如果你?定上面四???,??允?匿名者?有完整的建立、?除、修改?案?目?的?限。 不?,??要生效?需要 Linux 的?案系??限正?才行! 我?知道匿名者取得的身份是 ftp ,所以如果想?匿名者上??料到 /var/ftp/upload 中, ?需要??做:
    [root@linux ~]# mkdir /var/ftp/upload
    [root@linux ~]# chown ftp /var/ftp/upload


    然後你以匿名者身份登入後,就???匿名者的根目?多了一? /upload 的目?存在了, ?且你可以在?目?中上??案/目?喔! 如此一?系?的?限大?!很要命喔!所以,?仔?的控制好你的上?目?才行!



    --------------------------------------------------------------------------------

    建立?可上?目?
    一般??,使用者上?的?料在管理?尚未查??是否合乎版?等相?事宜前,是不???其他人下?的! 然而前一小?的?定?中,使用者上?的?料是可以被其他人所???下?的! 如此一??在是很危?!所以如果你要?定 /var/ftp/upload ?能上?不能被下??, 那?被上?的?料的?限就得要被修改一下才行!??前一小?所?定的四????化成?:
    [root@linux ~]# vi /etc/vsftpd/vsftpd.conf
    # ???行?他改一改先!
    write_enable=YES
    anon_mkdir_write_enable=YES
    anon_upload_enable=YES
    chown_uploads=YES
    chown_username=root

    [root@linux ~]# /etc/init.d/vsftpd restart


    ?然啦,那? /var/ftp/upload ?是需要可以被 ftp ??使用者?入才行! 如此一?被上?的?案??被修改?案?有者成? root ??使用者, 而 ftp (匿名者取得的身份) 是?法?取 root 的?料的,所以也就?法被下??! ^_^



    --------------------------------------------------------------------------------

    被?式??埠口的限制
    FTP 的??分?主?式?被?式,主?式??比?好?理,因?都是透?伺服器的 port 20 ?外主???, 所以防火?的?理比???。被?式??就比?麻?~因??? FTP 伺服器???取???有在使用?中的埠口?建立被?式??,那防火?的?定就麻?啦!

    ???,我?可以透?指定??固定???的埠口?作? FTP 的被?式?料?接之用即可, ??我?就能??先知道 FTP ?料??的埠口啦!?例??,我?假?被?式?接的埠口? 65400 到 65410 ???埠口?,可以???定:
    [root@linux ~]# vi /etc/vsftpd/vsftpd.conf
    # 增加底下??行即可啊!
    pasv_min_port=65400
    pasv_max_port=65410

    [root@linux ~]# /etc/init.d/vsftpd restart



    匿名使用者的?定大致上??就能符合你的需求?!自己看著?吧! ^_^

    --------------------------------------------------------------------------------
    用?端的 FTP ????

    用?端的????主要有文字介面的 ftp 及 lftp ??支指令,??的使用方式??考常用?路指令章?的?明。至於 Linux 底下的?形介面??,可以?考 gftp ?支程式喔!?形介面的啦!很??啊!

    上述的??都是自由??啊,那? Windows 作?系?有?有自由??啊?有的, 你可以使用 filezilla ??好?西!??玩意?的???明?下??可以在底下的??找到:

    ?明?站:http://filezilla.sourceforge.net/
    下??站:http://sourceforge.net/project/showfiles.php?group_id=21558
    目前 (2006/12) 最新的?定版本是 2.2.29 版,所以底下?哥就以??版本?跟大家?明。 ?什?要?? Filezilla 呢?除了他是自由??之外,??伙竟然可以??到 SSH 的 sftp 呢! 真是很不?的一??伙啊!^_^!另外要注意的是,底下?哥是以 Windows 版本??明的, 不要拿?在 X server 上面安?喔! ^_^

    因???程式是? Windows 安?用的,所以安?的?程就是.....(下一步)^n 就好了! ?且??程式支援多??系,所以你可以??繁?中文呢!?在是很棒! 安?完?之後,?你?行他,就?出?如下的?面了:



    ?四、Filezilla 的操作方式

    ?四的 1, 2, 3, 4, 5 分?代表的?料是:

    代表 FTP 伺服器的?出??,例如?迎?息等??;
    代表本?的?案,? 3 有?;
    代表本?的磁碟?所在?,? 2 有?;
    代表?端 FTP 伺服器的目???案;
    代表???的?列??
    而另外 a, b, c ?代表的是:

    站台管理?,你可以?一些常用的 FTP 伺服器的 IP ?使用者????在此;
    更新,如果你的?料有更新,可使用??按??同步 filezilla 的?幕?示;
    位址、使用者、密???接埠?四?玩意?可以即???,不????。
    好,接下?我??接到 FTP 伺服器上面去,所以你可按下?四的 a 部分,?出?如下?面:



    ?五、Filezilla 的操作方式

    上?五的箭??相?的?容是??的:

    先按下『新站台』的按?,然後在箭? 2 的地方就?出?可?入的方框;
    在?方框?中填?一?你容易??的名字,?便填?也?有??的;
    在??方框?中填?主?的 IP 就好了,?接埠如果不是??的 port 21 ,?填?其他埠口。
    ??地方可以挑?不同的???制,包括??常?的?制?:
    ?? FTP
    FTP + SSL/TLS 加密?制
    FTP + SSL 加密?制
    SFTP (透? SSH)
    FTP + TLS 加密?制
    如果你??要利用 filezilla ?接到 sftp 的?,??地方可以挑? sftp 喔!不然的?就用 FTP 即可;
    在????匿名登入或者是一般登入,所?一般登入即是利用?????登入;
    在??如果使用一般登入?,?你可以填?使用者及密??位,否?就?主?以 anonymous ?匿名登入呢!
    基本上???定完就能??上主?了,不?,如果你?想要更??的???料?接的方式 (主?式?被?式) 以及其他?料?, 可以按下?五的『???定』按?,就?出?如下?面了:



    ?六、Filezilla 的操作方式

    在???面?中你可以??是否使用被?式???制,?可以?整??的?示呢! 如果 FTP 伺服器的???定??,?致出? 8 小?的?差? (台北??? GMT ??),就能?利用???定?目??整了! 此外,也能??行?系的?整,呵呵!?大部分的 FTP ???目都考?到了,??就 OK 啦!然後按下?六的?定, ?到?五?面?中按下『??』後,就能?得到如下的?面了:



    ?七、Filezilla 的操作方式

    更多的用法就?您自行研究?!


    --------------------------------------------------------------------------------

    利用??器功能
    我?在 Apache ?? WWW 伺服器的章??中曾?????器所支援的?定,其中一?就是 ftp ???定?! ???定的?理方式可以在?址列的地方???入的:

    ftp://username@your_ip
    要?得,如果你?有?入那? username@ 的字??,系????以匿名登入??理?次的??。因此如果你想要使用??用????, 就在在 IP 或主?名?之前填?你的??。?例??,?哥的主? (192.168.1.254) 若有 dmtsai ??使用者, 那我????器後,可以??做:

    ftp://dmtsai@192.168.1.254
    然後在出?的???窗?中?入 dmtsai 的密?,就能?使用??器?管理我在 FTP 伺服器?的?案系??! 是否很容易啊! ^_^


    --------------------------------------------------------------------------------
    其他 FTP 伺服器相??定

    除了基??定之外,我??? FTP ?有哪些需要考?的地方呢?底下就??一?:


    --------------------------------------------------------------------------------
    防火??定

    防火??定有什??的??防火?那一章?面的 script 拿出?, 加入底下?一段在?:
    iptables -A INPUT -p TCP -i $EXTIF --dport 21 -j ACCEPT


    ??就好了???然不是啦!要?得我??可能?有被?式??的??啊,所以某些特殊情?底下, 或?你?需要??被?式??的??的埠口哩!以上面我???的 port 65400 ~ 65410 ????作?例好了, 你???需要加入?一段呢:
    iptables -A INPUT -p TCP -i $EXTIF --dport 65400:65410 -j ACCEPT


    另外,如果你想要使用 tcp wrappers 的方式??理 FTP 的???,例如?允??部 (192.168.1.0/24) ???,那??可以??做:
    [root@linux ~]# vi /etc/hosts.allow
    vsftpd: 192.168.1.0/255.255.255.0

    [root@linux ~]# vi /etc/hosts.deny
    vsftpd: ALL




    --------------------------------------------------------------------------------
    Super daemon 的?外管理?目

    ?於使用 xinetd ?? super daemon ?管理服?的方法??得吧? 要?得基?篇?到的??系?服?喔! 如果忘?的?,也要?得使用『 man xinetd.conf 』??好用的查?功能?!

    我?知道 stand alone 的??方法可以透? max_clients 及 max_per_ip ???????理同?上?的最大人?。 但是如果是 super daemon 管理的呢?那?就得要透? xinetd 的?法??理了。 如果你是使用 super daemon ?管理 vsftpd 的?, 要?得先修改 vsftpd.conf ?的『listen』?目喔。然後??做:
    [root@linux ~]# vi /etc/xinetd.d/vsftpd
    # vsftpd is the secure FTP server.
    service ftp
    {
    disable = no
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/vsftpd
    server_args = /etc/vsftpd/vsftpd.conf
    # 上面?? server 的?定?依照您的主??境??定!
    # 至於 server_args ???入您的 vsftpd 的?定?完整?名即可!
    per_source = 5 <==?同一 IP 的???目有?
    instances = 200 <==同一??最多的???目
    no_access = 192.168.1.3
    banner_fail = /etc/vsftpd/vsftpd.busy_banner
    # 上面???案就是?主?忙碌中,?在 Client 端?示的?容!
    log_on_success += PID HOST DURATION
    log_on_failure += HOST
    }

    [root@linux ~]# vi /etc/vsftpd/vsftpd.conf
    # ?定???案?存在????喔!
    listen=NO

    [root@linux ~]# vi /etc/vsftpd/vsftpd.busy_banner
    421 很抱歉,伺服器?在上?人??多,?待??再??!
    # 那? 421 是??代?哩!

    [root@linux ~]# /etc/init.d/vsftpd stop
    [root@linux ~]# /etc/init.d/xinetd restart


    ???定就可以啦!很??的一??定?作,就可以?您的 vsftpd ?的更安全一些喔!



    --------------------------------------------------------------------------------
    常????解?之道

    底下?明??常?的???解?之道吧!


    如果在 Client 端上面???法??成功,??查:
    iptables 防火?的???中,是否?放了 client 端的 port 21 登入?
    在 /etc/hosts.deny ?中,是否? client 的登入?限?住了?
    在 /etc/xinetd.d/vsftpd ?中,是否?定??,?致 client 的登入?限被取消了?
    如果 Client 已??上 vsftpd 伺服器,但是??示『 XXX file can't be opend 』的字?,??查:
    最主要的原因?是在於在 vsftpd.conf ?中?定了?查某??案,但是您??有???案?定起?, 所以,??查 vsftpd.conf ?面所有?定的?案?名,使用 touch ??指令???案建立起?即可!
    如果 Client 已??上 vsftpd 伺服器,??法使用某???登入,??查:
    在 vsftpd.conf ?面是否?定了使用 pam 模??????,以及利用 userlist_file ?管理???
    ??查 /etc/vsftpd.ftpusers 以及 /etc/vsftpd.user_list ?案?是否?????入了?
    如果 Client ?法上??案,?如何是好?
    最可能?生的原因就是在 vsftpd.conf ?面忘?加上???定『write_enable=YES』???定,?加入;
    是否所要上?的目?『?限』不?,?以 chmod 或 chown ?修?;
    是否 anonymous 的?定?面忘?加上了底下三???:
    anon_other_write_enable=YES
    anon_mkdir_write_enable=YES
    anon_upload_enable=YES
    是否因??定了 email 抵??制,又? email address ?入??案中了!???查!
    是否?定了不? ASCII 格式?送,但 Client 端?以 ASCII ?送呢??在 client 端以 binary 格式??送?案!
    上面是?常??的??,如果?是?法解?您的??,?您?必分析一下????案:/var/log/vsftpd.log ? /var/log/messages ,?面有相?多的重要?料,可以提供?您?行除?喔!



    --------------------------------------------------------------------------------
    重?回?

    FTP 是?案???定 (File Transfer Protocol) 的??,主要的功能是?行伺服器?用?端的?案管理、??等事?;
    FTP 的伺服器??非常多,例如 Wu FTP, Proftpd, vsftpd 等等,各? FTP 伺服器??的?展理念?不相同, 所以????依照您的需求??定所需要的??套件;
    FTP 使用的是明???,而?去一些 FTP 伺服器??也曾被??安全漏洞,因此?定前??定???已是最新版本,避免安全??的衍生;
    由於 FTP 是明???,其?可以使用 SSH 提供的 sftp ?取代 FTP ;
    大多?的 FTP 伺服器??都提供 chroot 的功能,???用?限制在他的家目??;
    FTP ?? daemon 比?常以 super daemon ?管理,亦即 xinetd 或者是 inet ?管理;
    FTP ?? daemon 所??的正?埠口? 20 ? 21 ,其中 21 ?命令通道, 20 ??料??通道;
    FTP 的?料??方式主要分?主??被?(Passive, PASV),如果是主?的?,? ftp-data 在伺服器端主?以 port 20 ?接到用?端,否???放被?式??的埠口等待用?端??接;
    在 NAT 主??的用?端 FTP ?????可能?生困?,?可以透? iptables 的 nat 模?或利用被?式???克服;
    一般??, FTP 上面共有三?群?,分?是??用?、?客?匿名登入者(real, guest, anonymous);
    可以藉由修改 /etc/passwd ?面的 Shell ?位,??使用者?能使用 FTP 而?法登入主?;
    FTP 的指令、?使用者活?所造成的登??是放置在 /var/log/xferlog ?面;
    在用?端使用 ftp ??程式?,可以加上『 ftp -p hostname』?????成 passive 模式。
    vsftpd ??注在安全??上而?展的一套 FTP 伺服器??,他的?定?在 /etc/vsftpd/vsftpd.conf ;

  22. baizx 于 2009-08-10 10:50:04发表:

    SAMBA 伺服器

    什?是 SAMBA ?

    在??章?中,我?要教大家跳的是?情有?的巴西 SAMBA 舞蹈..... 喔不~搞?了~是要向大家介? SAMBA ??好用的伺服器啦!咦!怪了! 怎?伺服器的名??使用 SAMBA 呢??真是怪怪的呢!那??? SAMBA 伺服器的功能是什?呢?另外, 他最早是?由什??的想法而??出?的呢?呵呵!底下就?我?慢慢的?一?吧!


    --------------------------------------------------------------------------------
    SAMBA 的?展?史?名?的由?

    在早期的?路世界?中,?案?料在不同主?之?的??大多是使用 FTP ??好用的伺服器????行?送。不?使用 FTP ???案?有?小小的??, 那就是您?法直接修改主?上面的?案?料!也就是?,您想要更改 Linux 主?上面的某??案?,你必?要???案自伺服器上下?下?後才能修改。 也因此??案在伺服器?用?端都?存在。???候,?一如果有一天您修改了某??案, ?忘???料上?回主?,那?等?了一?子之後,呵呵,您如何知道那??案才是最新的?


    ??案在?部主?之?直接修改
    既然有??的??,那?好吧,我可不可以在用?端的?器上面直接取用 server 上面的?案, 如果可以在用?端直接?行 Server 端?案的存取,那?我在用?端就不需要存在??案?料?,也就是?, 我只要有 Server 上面的?案?料存在就可以啦!有?有??的?案系?啊 (File System)! 很高?的是,前面我?已?提?的 Network File System, NFS 就是??的?案系?之一啦!我只要在用?端? Server 所提供分享的目?????, 那?在用?端的?器上面就可以直接取用 Server 上的?案?料?,而且, ??料就像是我用?端上面的 partition 一般,真是好用!

    而除了可以? Unix Like 的?器互相分享?案的 NFS 伺服器之外,在微? (Microsoft) 作?系?上面也有?似的?案系?,那就是 Common Internet File System, CIFS ??咚咚啦!CIFS 最??的想法就是目前常?的『?路上的芳?』咯! Windows 系?的??可以透?桌面上『?路上的芳?』?分享?人所提供的?案?料哩!真是方便。 不?,NFS ?能? Unix ?器?通, CIFS 只能? Windows ?器?通。??筋,那?有?有? Windows ? Unix-Like ???不同的平台相互分享?案?料的?案系?呢?


    利用封包??逆向工程?展的 SMB Server
    在 1991 年一?名叫 Andrew Tridgwell 的大?生就有??的困?,他手上有三部?器,分?是跑 DOS 的?人??、DEC公司的 Digital Unix 系?以及 Sun 的 Unix 系?。在??, DEC 公司有?展出一套?? PATHWORKS 的??,?套??可以用?分享 DEC 的 Unix ??人??的 DOS ???作?系?的?案?料,可惜? Tridgwell ?得?困?的是,Sun 的 Unix ?法藉由??????到?料分享的目的。

    ???候 Tridgwell 就想?:『咦!既然??部系?可以相互?通,?道理 Sun 就必需??苦命吧?可不可以???部系?的?作原理找出?,然後? Sun ?部?器也能?分享?案?料呢?』, ?了解???的的??,他老兄就自行?了? program 去??? DOS ? DEC 的 Unix 系?在?行?料分享?送?所使用到的通??定??,然後??些重要的???取下?, ?且基於上述所找到的通??定而??出Server Message Block (SMB) ???案系?,而就是?套 SMB ??就能?? Unix ? DOS 互相的分享?料?!

    Tips:
    再次的?他??一次,在 Unix Like 上面可以分享?案?料的 file system 是 NFS,那?在 Windows 上面使用的『?路上的芳?』所使用的?案系???? Common Internet File System, CIFS

    取名 SAMBA 的主因 ^_^
    既然?成了??,想一想,?是需要??一下商?吧!因此 Tridgwell 就去申?了 SMBServer (Server Message Block 的??) ??名字?做?他撰?的????的商?,可惜的是,因? SMB 是?有意?的文字,因此?有?法?成??。既然如此的?,那?能不能在字典?面找到相?的字?可以做?商????呢? 翻了老半天,呵呵!?? SAMBA ?好含有 SMB , 又是?情有?的拉丁舞蹈的名?,不然就用??名字?做?商?好了! ?成?我?今天所使用的 SAMBA 的名?由?啦! ^_^

    --------------------------------------------------------------------------------
    SAMBA 常?的?用

    由上面?明的 SAMBA ?展?由,您就??不?知道咯, SAMBA 最初?展的主要目就是要用??通 Windows ? Unix Like ???不同的作?平台,那? SAMBA 可以?行哪些?作呢?

    分享?案?印表?服?;
    可以提供使用者登入 SAMBA 主??的身份??,以提供不同身份者的???料;
    可以?行 Windows ?路上的主?名?解析 (NetBIOS name)
    可以?行?置的分享 (例如 Zip, CDROM...)
    底下我????? SAMBA 伺服器的?用?例吧!


    利用??直接?修 WWW 主?上面的???料
    相信很多人都是利用?人??????作完?之後,再以?似 FTP 之?的服????上?到 WWW 主?的, 但??有?困?,那就是同?在用?端? WWW 主?上?都有一份???料,常常?忘?哪一份是最新的, 最麻?的是,有?候下?下?的?案已???好多修改了,?在下次的 FTP 作?,不小心又下?一次??料, ?果?已?修改?的?料覆??去~天?!又要重?一遍.....真是??!

    如果你有安? SAMBA 伺服器的?定的?,那?透?『?芳』的功能,直接???端伺服器所提供的目?, 如此一?你可以直接在你的?人??上面修改主?的?案?料,只有一份正?的?料而已喔! ?就有?像是『?上?修』呢,一修改完成,在 Internet 上面可以立刻??,方便的很?!


    做成可直接??的?案伺服器
    在?哥??室中,由於???量不多,研究生常常?使用到不同的?? (因?大家都得??有人用的??啊!) ,此外,也常常有研究生拿自己的 NoteBook ?工作,因此,有些??的?料就分散在各????中,使用上相?的不方便。 ???候,?哥就使用 SAMBA ?硬碟空?分享出?,由於使用者要登入 SAMBA ??伺服器主??需要?入使用者?料 (???密?),而不同的登入者?取得不一?的目??源,所以可以避免自己的?料在公用??上面被??, 此外,在不同的公用??上面都可以登入 SAMBA 主?,?料的使用上面真是相?的棒啊!


    印表?伺服器
    SAMBA 除了分享?案系?外,也可以分享印表?喔,?哥的研究室好?部??就是直接以 Linux 分享的印表??印??告的。您??『啊 Windows 也可以?的到啊!?有什?了不起的!』是啊。 但是因? Linux 做?伺服器主??,?哥?? Linux ?竟?是比??定一?,可以 24 小?且全年?休的努力工作?。此外,因?目前透?『?路上的芳?』?攻??域?路的 Windows 作?系?的??病毒?在是太多了,防不?防, Linux ?於??的攻???有很大的影? (因?常?的攻?手法均?? Windows 而?~),所以也比?安全一些?~


    SAMBA 的?用挺?泛的,尤其?於?域?路?的????,更是一?不可多得的好用的伺服器, ?然或?你??,SAMBA 的功能不?是模仿 Windows 的?芳以及 AD 相?的??, 那我直接使用 Windows 不就 OK 了?可惜的是, Windows XP ?於?芳的??限制依版本而有所不同, 以企?常?的??版 (Professional) ??,他?能提供最多同?十???到?芳的??能力,?.....不太?用吧! 所以?,SAMBA ?定、可靠又?有限制???,值得??吧!^_^!更多的?用您可以自行?掘?!



    --------------------------------------------------------------------------------
    SMB 使用的 NetBIOS 通??定

    事?上,就像 NFS 是架?在 RPC Server 上面一?, SAMBA ???案系?是架?在 NetBIOS (Network Basic Input/Output System, NetBIOS) ??通??定上面所??出?的。既然如此,我??然就要?解一下 NetBIOS ?!

    最早 IBM ?展出 NetBIOS 的目的?是要??域?路?少????行?路??的一?通??定而已, 所以考?的角度?不是??大型?路,因此,?? NetBIOS 是?法跨路由的 (Router / Gateway)。?? NetBIOS 在?域?路??在是很好用, 所以微?的?路架?就使用了??咚咚??行?通的?!而 SAMBA 最早?展的?候,其?是想要? Linux 系?可以加入 Windows 的系??中?分享使用彼此的?案?料的,所以?然 SAMBA 就架?在 NetBIOS ?展出??。

    不? NetBIOS 是?法跨路由的,因此使用 NetBIOS ?展起?的伺服器理?上也是?法跨越路由的呢! 那??伺服器的使用??不就受限相?的多了?好在,我??有所?的 NetBIOS over TCP/IP 的技?呢!?是什??的技?啊?

    ??例子??好了,我?知道 TCP/IP 是目前?路?接的基本?定,?在我?? NetBIOS 想成是一封明信片, ??明信片只能?您自己欣?而已,如果今天我?要???明信片送到?方的朋友那??!就需要透??件系? (例如?局啦、??快?啦等等的) ??送了!?? TCP/IP 就可以???件??系?啦!透??? NetBIOS over TCP/IP 的技?,我?就可以跨路由的使用 SAMBA 伺服器所提供的功能咯! ?然啦,目前 SAMBA ?是比??泛的使用在 LAN ?面?。

    Tips:
    或?您???在 Windows ?路?定?面常常看到 NetBEUI ??咚咚,那是什?呢?那?是 NetBIOS Extened User Interface 的??,也是 IBM 在 NetBIOS ?展出?之後的改良版本。?然??者的技?不太相同, 不?,我?只要知道一些??的概念就可以了!所以,在??我?不?? NetBEUI ?介?。


    --------------------------------------------------------------------------------
    SAMBA 使用的 daemons

    NetBIOS ?初?展?就著眼在?域?路?的快速?料交流,而因?是定?在?域?路?,因此他??有使用?似 TCP/IP 之?的???定,也就不需要 IP 的?定。如此一??料如何在?部主?之?交流呢? 其?主?在 NetBIOS ?定?中的定??使用『NetBIOS Name』,每一部主?必?要有不同的 NetBIOS Name 才行, 而?案?料就是在不同的 NetBIOS name 之??通?!我?以一??芳的?定?作??的?明好了:

    取得?方主?的 NetBIOS name 定位?主?所在:
    ?我?想要登入某部 Windows 主?使用他所提供的?案?料?,必需要加入? Windows 主?的群? (Workgroup),?且我?的?器也必需要?定一?主?名?,注意喔,??主?名?跟 Hostname 是不一?的,因???主?名?是架?在 NetBIOS ?定上的,我?可以??的?呼他? NetBIOS Name 好了。在同一?群??中,NetBIOS Name 必需要是?一?二的喔!

    利用?方?予?限存取可用?源:
    在我?找到?主?名?後,是否能登入??方主?或者是取用?方主?所提供的?源, ?要看?方 Windows 主?有?有提供我?使用的?限?!所以,?不是登入? Windows 主?之後我?就可以?限制的取用?主?的?案?源了。也就是?,如果?方主?允?你登入, 但是??有?放任何?源?您取用,呵呵,登入主?也?法查看?方的硬碟?面的?料的啦!
    我?的 SAMBA ?是透??支服??控制???步?,分?是:

    nmbd :?? daemon 是用?管理工作群?啦、NetBIOS name 啦等等的解析。 主要利用 UDP ?定?? port 137, 138 ???名?解析的任?;

    smbd :?? daemon 的主要功能就是用?管理 SAMBA 主?分享的目?、?案?印表?等等。 主要利用可靠的 TCP ?定????料,?放的埠口? 139 及 445(不一定存在) 。
    所以?, SAMBA 每次??至少都需要有??? daemons 喔!?可不要忘??! ^_^而?我???了 SAMBA 之後,主?系?就??? 137, 138, 139 三? port ,且同??有 UDP/TCP 的??服?喔!?可不要忘?了! 因?後面?定防火?的?候,??使用到?三? port 的呢!



    --------------------------------------------------------------------------------
    ??模式的介? (peer/peer, domain model)

    SAMBA 主?的?用相?的?泛,而且可以依照不同的?域???使用者??、密?的控管方式不同, ?加以不同的???用,例如最常?的 Workgroup 及 Domain ??方式的??模式呢! 底下我?就是要??一????最常?的?域?路的??模式 peer/peer 及domain model。


    peer/peer (Workgroup model):
    peer 有同等、同?的意思存在,那? peer/peer 由字面上的解??看,?然就是同等地位的 PC 架?了!?是什?意思呢???的??,在?域?路?面的所有 PC 均可以在自己的??上面管理自己的???密?, 同?每一部??也都具有?力可以?行各???的能力,只是藉由?路?各? PC ??在一起而已的一?架?, 所以,每一部?器都是可以?立?作的喔!\r

    ??的架?在目前小型?公室?面是最常?的。例如?公室?面有十?人,每?人桌上可能都安?有一套 Windows 作?系?的?人??,而?十部??都可以?立?行?公室??的?行啊、?立上?啊、?立玩??啊等等的, 因??十部??都可以?立?作,所以不?有一部???掉,其他的??就?法工作的情??生,?就是 peer/peer 的典型架?。

    以下?的架??例,在??的架?下,假? A 君?了一??告?,而 B 君想要以?路直接取用???告??,他就必?要知道 A 君使用的??的???密?,?且 A 君必?要在 PC A 上面?用 Windows 的『?源分享(或者是共用)』之後,才能?? B 君???入喔 (此? PC A ? Server) !而且, A 君可以??依照自己的喜好?更改自己的???密?,而不受 B 君的影?,不?, B 君就得要取得 A 君同意取得新的???密?後,才能?登入 PC A 喔!反???,同?的, A 要取得 B 的?料?,同?需要取得 PC B 的???密?後,才能??利登入啊 (此? PC A ? Client 喔)!因? PC A, PC B, PC C 的角色?地位都同?可以? Client ? Server ,所以就是 peer/peer 的架?了!



    ?一、Peer/Peer 的??模式

    生活周遭中,哪?看到的?? peer/peer 的架?呢?想起?了????!就是藉由 Windows 的『?路上的芳?』所?成的『工作群?(workgroup)』的架?,那就是典型的 peer/peer 架?啦!所以, peer/peer 也可以直接?成 workgroup 的??架?喔。

    使用 peer/peer 的架?的好?,是每部??均可以?立?作,而不受他人的影?!不?, 缺?就是?整??域?的所有人?都要?行?料分享?,光是知道所有???面的???密?,就?很??筋了! 所以, Peer/Peer 的架?是比??合 (1)小型的?域,或者是 (2)?有需要常常?行?案?料分享的?路?境,或者是 (3)每?使用者都?自?有???的?有?(就是?,???是使用者的,而不是公用的啦!) 而,如果??位的所有 PC 均是公有的,而且您需要?一控管整??域?面的???密?的?,那就得使用底下的 domain models 了!


    domain model
    假?今天您服?的?位有 10 部??,但是您的?位有 20 ??工,?也就是?,? 20 ??工?流?著用? 10 部??。如果每部??都如同 peer/peer 的架??,那?每部??都需要?入? 20 ??工的???密??提供他?登入喔,而且,今天假如有??工想要?更自己的密??,就需要到 10 台??上面?行密??更的作?!否?他就必?要?得? 10 部???面,那一部??是??那一?密?.....好?那~

    如果上述是??的情?,使用 peer/peer 架?就不是一?好方法了!???候就需要藉由 domain model ??成您的需求啦!所?的 domain model 概念其?也很??,既然使用???源需要???密?, 那?我?所有的???密?都放置在一部主控?? (Primary Domain Controller, PDC) 上面,在我的?域?面,任何人想要使用任何???,都需要在?幕前方?入???密?,然後通通藉由 PDC 主?的辨?後,才?予??的使用?限,也就是?,不同的身份?具有不一?的???源使用?限就是了! 例如底下的?示:



    ?二、domain model 的??模式

    PDC 主?控管整??域?面的各??器 (PC A ~ PC D) 的???密?的??,假如今天有?使用者??名?? Ken ,且密?? mypasswd ?,他不?使用哪一部?? (PC A ~ PC D) 只要在?幕前方?入 ken ?他的密?,???器?先到 PDC 上面查?是否有 ken ,以及 ken 的密?,?且 PDC 主???予 ken ??使用者相?的???源使用?限。? ken 在任何一部主?上面登入成功後,他就可以使用相?的???源了!

    ??的架?比??合人?人往的企?架?,?系?管理?要控管新?人?的???源使用??,可以直接?? PDC ?修改就好了,不需要每一部主?都去修修改改的,?於系?管理???,??的架?在控管???源上,?然是比???的啦!


    各?架??用的?境??用的人都不相同,??有那?是最好啦!?依照您的工作?境?????的模式?!?然, SAMBA 可以?到上述??模式的啦!底下我??分??介?喔!


    --------------------------------------------------------------------------------
    SAMBA 伺服器的基??定

    SAMBA ??套件?乎在所有的 Linux distributions 上面都有提供,因?即使你的 Linux ?做??人桌上型??使用?, 你依?可能?需要??到?端的 Windows 的?芳的,那??候就得要 samba 提供的用?端??功能?! 因此你只要直接安?系?上面提供的?? samba 版本即可。底下我??先介? samba 伺服器,然後在介?用?端功能喔!


    --------------------------------------------------------------------------------
    Samba 所需套件及其套件??

    目前常?的 samba 版本? 3.x 版,?版的 2.x 版在?定上有?不一?,因此在?入?定前?先??你的 samba 版本。 咱?的 CentOS 4.x 提供的是 Samba 3.x 的版本。那?你需要什?套件呢?基本上有?些:

    samba:
    ??套件主要包含了 SAMBA 的主要 daemon ?案 (smbd 及 nmbd)、 SAMBA 的文件? (document)、以及其他? SAMBA 相?的 logrotate ?定?及???????案等;

    samba-common:
    ??套件?主要提供了 SAMBA 的主要?定? (smb.conf) 、 smb.conf ?法??的??程式 (testparm)等等;

    samba-client:
    ??套件?提供了? Linux 做? SAMBA Client 端?,所需要的工具指令,例如?? SAMBA ?案格式的?行? smbmount 等等。
    ?三?套件你都得要安?才行喔!如果尚未安?的?,看是要由原版光碟去安?,?是使用 yum 都可以啦! 安?完?之後,你可以依序察看一下 Samba 的套件??喔!?他相?的?案基本上有?些?西:

    /etc/samba/smb.conf:
    smb.conf 是 Samba 的主要?定?名,如果你的 distribution 的 SAMBA ?定?不在 /etc/samba/ 目??中, 那?你??使用 locate 或 find 等方式?他找出?就好啦。基本上,咱?的 Samba 就?有???定?而已, 且???定?本身就是很??的?明文件了,?用 vi 去查?他吧!???案主要在?定工作群?、 NetBIOS 名?以及分享的目?等相??定,我?後?要介?的都是???案而已啦!

    /etc/samba/lmhosts:
    ???案的主要目的在?? NetBIOS name ??主?名?的 IP ,事?上他有?像是 /etc/hosts 的功能!只不??? lmhosts ??的主?名?是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!由於目前 SAMBA 的功能越?越?大,所以通常只要您一?? SAMBA ?,他就能自己捉到 LAN ?面的相???的 NetBIOS name ?? IP 的??,因此???案通常可以不用?定了!

    /etc/samba/smbpasswd:
    ???案???不存在啦!他是 SAMBA ??的使用者密???表。?我??定的 SAMBA 伺服器是???密的,需要使用者?入???密?後才能登入的???,使用者的密???就是放置在??咯 (?然?,您可以自行在 smb.conf ?面?定密?放置的地方及密??名, 不?我???都以??的????明) 。比?需要注意的是,???案因?包含了使用者的密?, ?然?限方面要??注意啦!???案的?有者需要是 root ,且?限?定? 600 才行喔!

    /etc/samba/smbusers:
    由於 Windows ? Unix-like 在管理???客的??名?不一致,分?? administrator 及 root, ?了????者之?的????,可以使用???案??定。不????案的使用必?要?由 smb.conf ?的『 username map 』?定?目???才行。

    testparm:
    ??指令主要在?? samba ?定? smb.conf 的?法正??否,?你??? smb.conf ?,??必使用??指令??查一次, 避免因?打字??引起的困?啊!

    smbd, nmbd:
    前??小?曾?提?的??主要 daemon 就在??!

    smbstatus:
    列出目前的 SMB server 的??,也是很有用途的一?指令啦!

    smbpasswd:
    如果您的 SAMBA ?定的???格,需要?定使用者的???密?,那?那?密??案的建立就需要使用 smbpasswd ?建置才可以的喔!所以??指令?建立 SAMBA 的密?有?咯!

    smbclient:
    ?你的 Linux 主?想要藉由『?路上的芳?』的功能?查看?台??所分享出?的目???置?,就可以使用 smbclient ?查看啦!??指令也可以使用在自己的 SAMBA 主?上面,用?查看是否?定成功哩!

    smbmount:
    在 Windows 上面我?可以?定『?路磁碟?』??接到自己的主?上面,同?的,在 Linux 上面,我?可以透? smbmount ???端主?分享的?案?目???到自己的 Linux 主?上面哪!不?,其?我?也可以直接使用 mount ??指令??行同?的功能就是了。

    nmblookup:
    有??似 nslookup 啦!重?在查出 NetBIOS name 就是了。

    smbtree:
    ?玩意就有?像 Windows 系?的?路上的芳??示的?果,可以?示?似『靠近我的??』之?的?料, 能?查到工作群????名?的??目?分??,有趣吧!

    /usr/share/doc/samba-<版本>:
    ??目?包含了 SAMBA 的所有相?的技?手?喔!也就是?,?您安?好了 SAMBA 之後,您的系??面就已?含有相??富而完整的 SAMBA 使用手?了!值得高?吧! ^_^,所以,??自行?考喔!
    大致的套件??就是??,底下就????一???的案例吧! ^_^



    --------------------------------------------------------------------------------
    基??定流程? smb.conf 的主要??

    既然 Samba 是要加入 Windows 的?芳?中,所以他的?定方式??是要??芳差不多才是。所以我?先?聊一聊 Windows 的一些?定方法再?。在早期 Windows 的?芳?定真是很??,不?也因?太??, 所以?生的安全??可是相?的麻?的。後?在 Windows XP 的 sp2 (服?包第二版) 加入了很多的??防火??制, 因此使用?芳的??限制常常?是??的:

    主??主?之?必?要在同一??域?中 (否?需要修改 Windows ??防火?);
    最好?定?同一工作群?;
    主?的名?不可相同 (NetBIOS name);
    ??版 Windows XP 最多?能提供同?十?用???到?芳。
    ?你的 Windows 主?群符合上述的?件後,就很容易?理?芳分享的工作啦!分享的步?是??的:

    叫出?案?管,然後在要分享的目?、磁碟或?置 (如印表?) 上面按下右?,??『共用』,然後就能??定好分享的?料了;
    最好建立一??用?使用的???密?,?其他主?的使用者可以透????密????入?芳;
    真是有???的!那? Samba 怎??定啊?也是很??,依?上述的限制以及流程你可以??想像:

    在 smb.conf ?中?定好工作群?、NetBIOS 主?名、密?使用??等等?主?相?的??;
    在 smb.conf ??定好??要分享的目?或?置以及可供使用的使用者?料;
    根?步? 2 的?定,在 Linux ?案系??中建立好分享出去的?案或?置的使用?限;
    根?步? 2 的?定,以 smbpasswd 建立起使用者的??及密?
    ?? Samba 的 smbd, nmbd 服?,?始??哩!
    瞧!根?上面的流程,其?我?最需要知道的就是 smb.conf ???定?的??就是了。 所以首先我?就要?介?一下???案的?定方式?!???案其?可以分??部份?看, 一?是主???部分,在 smb.conf ?中以 [global] 作??定的依?;另一??是分享的??, 以??的目?名??依?。你要先知道的是:在 smb.conf ?中, 井字??分? (# 跟 ;) 都是?解符?!底下咱?就?????咚咚吧!


    --------------------------------------------------------------------------------

    主?整???
    在 smb.conf ???定??中的?定有?像底下??:
    # ?有很多加上 # 或 ; 的?解?明,你也可以自行加上?提醒自己相??定
    [global]
    ???目 = ?定?容
    ....

    [分享?源名?]
    ???目 = ?定?容
    ....


    在 global ?中的就是一些主?的整???了,包括工作群?、主?的 NetBIOS 名?、字元??的?示、登??的?定、 是否使用密?以及使用密???的?制等等,都是在?? [global] ?目中?定的。至於 [分享?源名?] ?是??你?放的目????限方面的?定,包括?可以???目?、是否可以??等等??。 在 [global] 部分?於主?名???方面的??主要有:

    workgroup = 工作群?的名?:注意,主?群要相同;
    netbios name = 主?的 NetBIOS 名?啊,每部主?均不同;
    server string = 主?的?易?明,???便?即可。
    另外,?去常常?使用者心生不?的?系?示??方面,您?必要清楚的知道的是, SAMBA 主?上面的?料 (例如 mount 磁碟分割槽的??以及原本的?料??), SAMBA 伺服器?示的?系, Windows 用?端?示的?系, Windows 用?端?上 SAMBA 的?? 都需要符合?定值才行! 在新版的 3.x 上面有??提供?些?系??的?定喔,如下所示:

    display charset = 自己伺服器上面的?示??, 例如你在?端??所查?的????。一般??,?底下的 unix charset ?相同。
    unix charset = 在 Linux 伺服器上面所使用的??,一般??就是 i18n 的???! 所以你必?要?考 /etc/sysconfig/i18n ?的『??』??。
    dos charset = 就是 Windows 用?端的??了! 一般??我?的繁?中文 Windows 使用的是 big5 ??,????在 Samba ?的格式被??『 cp950 』喔!
    ?於?系??,建?您?考一下???的?一篇:

    http://phorum.vbird.org/viewtopic.php?t=22001
    我?的?友 eyesblue ?得太好了!所以建?大家直接前往查?即可!除此之外,?有登??方面的??, 包括?些??:

    log file = 登??放置的?案,?名可能?使用???理;
    max log size = 登??最大?能到多少 Kbytes ,若大於??字,??被 rotate 掉。
    ?有跟密?有?的??,包括???:

    security = user, server, domain, share 四?一,?四??定值分?代表:
    user :使用 SAMBA 本身的密??料?,密??料??底下的 smb passwd file 有?;
    share:分享的?料不需要密?即可分享;
    server, domain:使用外部主?的密?,亦即 SAMBA 是用?端之意,如果?定???目, 你?得要提供『password server = IP』的?定值才行;
    encrypt passwords = Yes 代表密?要加密,注意那? passwords 要有 s 才?!
    smb passwd file = 密?放置的?案,通常是 /etc/samba/smbpasswd 。
    事?上 Samba 的密?方面?定值很多喔,包括你?可以利用 samba ?修改 /etc/passwd ??的人物的密?呢! 不????候就得需要『 unix password sync 』以及『 passwd program 』?????值的?忙了。 我???先?比???的,其他??的部分可以 man smb.conf 去?行搜?查?喔! ^_^



    --------------------------------------------------------------------------------

    分享目???
    在目???部分,主要有底下???常?的??喔:

    [分享名?] :??分享名?很重要,他是一?『代?』而已。 ?例??,你在 Windows ?中使用『共用』?分享?芳?,假?你?『D:\game』分享出?, 系?不是??要你?入一?『在?路上面的名?』??假?你?入『My_Games』??名?好了, 那?未?大家在?芳看到的???料? (D:\game) 名?其?是『\\你的IP\My_Games』啦!
    comment :??目?的?明!
    path :在?芳中?示的名? [分享名?] 中,所???入的 Linux ?案系?。 也就是?,在?芳?中看到的是 [分享] 的名?,而??操作的?案系??是在 path ??所?定的。
    read only:是否唯??
    public :是否?所有可以登入的使用者看到???目?
    writable :是否可以?入???需要注意一下喔!那? read only ? writable 不是???相似的?定值??如果 writable 在???定? no ,亦即不可?入,那跟 read only 不就互相抵?了!那?才是正?的?定?答案是:最後出?的那??定值?主要的?定!
    create mode ? directory mode 都??限有?的咯!
    valid users = 使用者,???目可以指定能??入到此?源的特定使用者。
    因?分享的?源主要? Linux 系?的?案?限有?,因此??的?定??多??限有?。



    --------------------------------------------------------------------------------

    ??特性
    ?了?化?定值,Samba 提供很多不同的???我??使用,主要有底下?????喔:

    %S:取代目前的?定?目值,所?的『?定?目值』就是在 [分享] ?面的?容! ?例??,例如底下的?定?例:
    [homes]
    valid users = %S
    ....


    因? valid users 是允?的登入者,?定? %S 表示任何可登入的使用者都能?登入的意思~今天如果 dmtsai ??使用者登入之後,那? [homes] 就?自?的?成了 [dmtsai] 了!??可以明白了?? %S 的用意就是在替?掉目前 [ ] ?面的?容啦!

    %m:代表 Client 端的 NetBIOS 主?名?喔!
    %M:代表 Client 端的 Internet 主?名?喔!就是 HOSTNAME。
    %L:代表 SAMBA 主?的 NetBIOS 主?名?。
    %H:代表使用者的家目?。
    %U:代表目前登入的使用者的使用者名?
    %g:代表登入的使用者的群?名?。
    %h:代表目前?部 SAMBA 主?的 HOSTNAME 喔!注意是 hostname 不是 NetBIOS name 喔!
    %I:代表 Client 的 IP 咯。
    %T:代表目前的日期???
    至於相?的???用,我??在底下的?定?中略做介?喔!


    以上就是在 smb.conf 上?常看到的???定?目,相信初次接? Samba 的朋友,看到上??的?料肯定是一??水的! 我?底下用??小?例???的介? smb.conf 的?定後,您就?知道?些??如何?用了! ?得,看完底下的下?例後,要回?再??些??的意?瞧一瞧, 而且若有其他?外的???知,?必自行 man smb.conf 喔!重要的很!



    --------------------------------------------------------------------------------
    ?有密?的 smb.conf ?定(???)

    瞎密?不需要密?就能?使用 SAMBA 主?所提供的目??源?真假???啦,可以?到的。 不?,因?不需要密?就能?登入,?然你可以?定?限成?唯?,?使用者可以『瞧瞧而已』, 但是?竟比?危?,因?如果你不小心?重要?料放置到?分享的目??中,?不危?? 所以?量不要???定。不?,我??是得介?一下啦!先?明一下我?的?定需求:


    主????定的????:
    在 LAN ?所有的?芳主?工作群? (workgroup) ?: vbirdhouse
    ?部 Linux 主? (Samba 服?) 的 NetBIOS 名??: vbirdserver
    使用者登入???定?: share
    ?分享 /tmp ??目?而已,且取名?: temp
    Linux 主?的??格式假????? (Unicode, 亦即 utf8)
    用?端?中文 Windows ,在用?端的??也使用 big5 的??
    底下就?始依序??行 samba 的?定吧!


    --------------------------------------------------------------------------------

    1. ?定 lmhosts ?案?容 (optional):
    我?前面?到 NetBIOS 名?可以由?播的方式自?取得,而 NetBIOS 也可以透??域?路??由一部主控???管理, 此外,你也可以利用自己主??中的 lmhosts ???定???行 NetBIOS ? IP 的??, ? NetBIOS ? TCP/IP 可以??上???!一般??,???案是可以不必?定的,因?可以?由?播的方式取得??的嘛! 不?,某些?刻??可以?定一下,免除一些?外的搜????。我的??中??名?? IP 是??的:
    [root@linux ~]# vi /etc/samba/lmhosts
    127.0.0.1 localhost
    192.168.1.254 vbirdserver
    192.168.1.21 vbirdcpu2
    192.168.1.11 vbirdcpu1
    # ???案的?容很??,? /etc/hosts 很?似,左?是 IP 右?是主?名?。
    # 只是主?名?必?符合 NetBIOS name 的??,包括:
    # 主?名?不要超? 15 ?字元,不要含有特殊字元等等。
    # 亦可使用 man lmhosts ?查?喔!


    ?哥???常用的有三部主?,除了 Linux ?部?器外,?有?部?人??,我???部??的 NetBIOS name ?到???案?中,可以免除 Samba 自己去搜??!而再次??,??名?是 NetBIOS name 而非 HOSTNAME 喔!


    --------------------------------------------------------------------------------

    2. ?查?系?料
    ?去朋友?在?行 SAMBA 的?定?,最容易?生??的地方就是在中文?名部分, ?大部分的朋友只要使用了中文?名,常常??生一些??,就是?法?利的上?下?, 或者是原先的中文?名上?後,??成奇怪的???名。

    ?了解?????,你必?要知道???目:

    原始?案 (你要分享的?案) ??的格式?何?一般??,中文 Windows 的????? Big5 ;
    ???案放置在 Linux 上,??部 Linux 的???系???何??? /etc/sysconfig/i18n 有?;
    在 Samba 上?的?示???何?一般???上述的 Linux ????相同即可;
    在用?端?接到 Samba 主?的??之?系???何?如果是中文 Windows 作?系?,??? Big5。
    你的?系?料必?要在上面????境中?行??,因此如果你的用?端?上 Samba 的????? Big5 , 你的 Samba 使用的?系也是 Big5 ,但是 Linux 主?????支援 utf8 的???,而你的 smb.conf 又?有?定好,此??料??就??生一些??,因此你就?看到很多???名了。

    所以,你至少得要知道你的 Linux ?系???何?在 Red Hat 系? (含我?的 CentOS) 可以查? /etc/sysconfig/i18n ???案, 如下所示??哥的 i18n :
    [root@linux ~]# cat /etc/sysconfig/i18n
    LANG="en_US.UTF-8" <==?才是你需要注意的地方!
    SUPPORTED="zh_HK.UTF-8:zh_HK:zh:zh_CN.UTF-8:zh_CN:zh:zh_SG.UTF-8:
    zh_SG:zh:zh_TW.UTF-8:zh_TW:zh:en_US.UTF-8:en_US:en"
    SYSFONT="latarcyrheb-sun16"


    由上?看起?,?哥??的?系??? en_US.UTF-8,不?尚有支援 zh_TW ??的中文??。 先假??哥的?????? (Unicode) 好了。知道了之後就能??始?理 smb.conf ?!



    --------------------------------------------------------------------------------

    3. ?定 smb.conf ?定?
    在??例子?中我??分享 /tmp ??目?而已,而且假???分享出?的目?是可??的, 另外,我???有分享印表?喔!而在 smb.conf ?中的?解符?可以是『 # 』也可以是『 ; 』喔!要注意!
    [root@linux ~]# cd /etc/samba
    [root@linux samba]# cp smb.conf smb.conf.raw <==先?份再?!
    [root@linux samba]# vi smb.conf
    # 先?定好主?方面的??
    [global]
    # ?主?名?有?的?定??
    workgroup = vbirdhouse
    netbios name = vbirdserver
    server string = This is vbird's samba server

    # ??系方面有?的?定?目喔,?何如此?定??考前面的?明
    unix charset = utf8
    display charset = utf8
    dos charset = cp950

    # ?登??有?的?定?目,注意?? (%m)
    log file = /var/log/samba/%m.log
    max log size = 50

    # ??才是?密?有?的?定?目哩!
    security = share

    # 其他??存在的?目
    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
    dns proxy = no
    template shell = /bin/false
    winbind use default domain = no

    # 底下?是?? /tmp 的?定而?的!可??且可?入喔!
    [temp]
    comment = Temporary file space
    path = /tmp
    read only = no
    public = yes


    ?您特?留意,在原本的 smb.conf 上面就已?有很多??值了,?些??值如果你不知道他的用途, ?量保留??值,也可以使用 man smb.conf 去查????值的意?。?例??, CentOS 4.x 的 smb.conf ??有?? server/client 的封包???目?定值的 socket options ,也有?? Windows NT 及 Unix 系?的????之 idmap uid 之?的?定值,?些?定值在大型的??架??使用到,在我??有一?部 Linux samba 伺服器的?境下.... ??是可以不予理?的啦!



    --------------------------------------------------------------------------------

    4. 用 testparm 查? smb.conf 的?法?定正?性
    在?? samba 之前,我??必要?解到 smb.conf ?面?法是否正?,??的方式使用 testparm ??指令即可。 ??方式如下:
    [root@linux ~]# testparm
    ??:
    -v :查?完整的???定,?同??值也??示出?喔!

    [root@linux ~]# testparm
    Load smb config files from /etc/samba/smb.conf
    Processing section "[temp]" <==??地方可以仔?看看,如果有???在???示
    Loaded services file OK.
    Server role: ROLE_STANDALONE
    Press enter to see a dump of your service definitions <==?按 [Enter] 按?

    # Global parameters
    [global]
    dos charset = cp950
    display charset = utf8
    workgroup = VBIRDHOUSE
    netbios name = VBIRDSERVER
    server string = This is vbird's samba server
    security = SHARE
    log file = /var/log/samba/%m.log
    max log size = 50
    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
    dns proxy = No

    [temp]
    comment = Temporary file space
    path = /tmp
    read only = No
    guest ok = Yes


    上?是?法???各??目的列出,如果你下? testparm ?出?如下?面那就是有??:
    Unknown parameter encountered: "linux charset" <==??的?定
    Ignoring unknown parameter "linux charset"
    Processing section "[temp]"
    Loaded services file OK.
    Server role: ROLE_STANDALONE
    Press enter to see a dump of your service definitions


    如果??上述的??,?表示你的 smb.conf 有? linux charset 的?定??,不? smb.conf 其?是不支援????的。 可能的??是 samba 2.x ? samba 3.x 有一些?目的支援已?不存在了,所以你使用?版的 2.x ?定?? 3.x 上??行?,就?出???。此外,『打字??』也是很常?的一????!????一下?法先, 然後根? smb.conf 有的?目去?行修改吧。

    如果你想要?解 samba 的所有?定 (包括?有在 smb.conf ???定的??值),可以使用 testparm -v ?作??的?出, ?料相?的?富,透???您也可以知道你的主??境?定?何呢! ^_^



    --------------------------------------------------------------------------------

    5. ????察
    ???在太??了,利用??的 CentOS ??方式??理即可。
    [root@linux ~]# /etc/init.d/smb start
    [root@linux ~]# netstat -tlunp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 10338/smbd
    tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 10338/smbd
    udp 0 0 192.168.1.254:137 0.0.0.0:* 10343/nmbd
    udp 0 0 0.0.0.0:137 0.0.0.0:* 10343/nmbd
    udp 0 0 192.168.1.254:138 0.0.0.0:* 10343/nmbd
    udp 0 0 0.0.0.0:138 0.0.0.0:* 10343/nmbd


    特?注意,在 Samba (?芳) ?中?????多?埠口,?包括?料??的 TCP 埠口 (139, 445), 以及?行 NetBIOS 名?解析之?工作的 UDP 埠口 (137, 138),所以你才?看到很多?料的。 那?能否?支援 139 ??必要的埠口,?? 445 呢?可以啊~透? testparm -v 的?察, 可以??『 smb ports = 445 139 』???定值指定??埠口的,因此你可以在 smb.conf 增加???定值, ?改? smb ports = 139 即可。不?,建?先保留??值啦!



    --------------------------------------------------------------------------------

    6. 用?端的?察
    ?於用?端的?察我??在後??行介?。在???是?明如何?定我?的 Samba ?定?服?有?利的在?作。 我?可以在本?上透? smbclient ?支程式??理,他的基本?法是??的:
    [root@linux ~]# smbclient -L [//主?或IP] [-U 使用者??]
    ??:
    -L :?查?後面接的主?所提供分享的目??源;
    -U :以後面接的???????取得?主?的可使用?源


    由於在???例?中我???有??使用者的安全等?,所以必?要使用 -U ????。 因此你可以??看看:
    [root@linux ~]# smbclient -L //127.0.0.1
    Password: <==??按一下 [Enter] 吧!
    Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba 3.0.10-1.4E.9]

    Sharename Type Comment
    --------- ---- -------
    temp Disk Temporary file space
    IPC$ IPC IPC Service (This is vbird's samba server)
    ADMIN$ IPC IPC Service (This is vbird's samba server)
    Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba 3.0.10-1.4E.9]

    Server Comment
    --------- -------
    VBIRDSERVER This is vbird's samba server

    Workgroup Master
    --------- -------
    VBIRDHOUSE VBIRDSERVER


    上表?出的???中,分享的目??源 (Sharename) 就是在 smb.conf ?中?定的 [temp] 名??! 因此在??的意思是:任何人都可以?入 //127.0.0.1/temp ??目??中, 而??目?在 Linux 系?其?是 /tmp 目?。至於那? IPC$ 及 ADMIN$ ?是?了要?付 Windows ?境所必?要存在的?目就是了。


    基本上,到此?止咱?就?定好一???的不需要密?即可登入的 Samba 主?了! 你可以先行到用?端??功能的部分?行????。 底下我????以?易的需要密?才能?登入 Samba 的方式???一??例吧!



    --------------------------------------------------------------------------------
    安全等??使用者的工作群??定

    ?定一部不需密?即可登入的 Samba server 是非常??的,不?, 您?不希望某些有?密性?的?料放在不?防的?芳中?大家查?吧? ?例??,你?不希望你的家目?被人家?意??吧?家目??可能有你自己的情?呢!^_^

    那怎??????,我?可以透? Samba 主?提供的??方式??行使用者?限的?予, 也就是?,你在用?端??到主??,必?要?入正?的???密?後,才能?登入 Samba 主?查?到你自己的?料! 那?不?很?啊?不?啦! Samba 本身就提供一?小程式??助我??理密?的建立了, 整?流程?不太?。比?重要的是Samba 使用者??必?要存在於 Linux 系??中 (/etc/passwd), 但是 Samba 的密?? Unix 的密??案?不相同。?就比?有?小麻?~ ???,就?我?依??葫???理一下??部分的?定吧!


    主???分享的?源??
    ??前一?免密??的 smb.conf ?定??保留;
    ?? NetBIOS name 的解析方式依序由 lmhosts, broadcast 及 host ??行解析;
    安全等?提升? user 等?;
    密??案放置到 /etc/samba/smbpasswd ???案?中;
    密?必?要加密;
    每?可使用 samba 的使用者?有自己的家目?之外, users ??群?的使用者可以?入 /home/public 目?中, 且在?目?下 users ??群?的所有人可具有?入的?限喔!
    好了,?始一步步的?理吧!


    --------------------------------------------------------------------------------

    1. ?定 lmhosts
    ?部分?前一小?的?定相同,?自行前往查?喔!



    --------------------------------------------------------------------------------

    2. ?始?定 smb.conf ?案
    在???例的?定??中,我??新增????,新增的??部分?用特殊字?圈起?, 引用之前??的部分??一般字?。?交互?考看看?:
    [root@linux ~]# vi /etc/samba/smb.conf
    [global]
    workgroup = vbirdhouse
    netbios name = vbirdserver
    server string = This is vbird's samba server
    unix charset = utf8
    display charset = utf8
    dos charset = cp950
    log file = /var/log/samba/%m.log
    max log size = 50
    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
    dns proxy = no
    template shell = /bin/false
    winbind use default domain = no

    # ?密?有?的?定?目,包括密??案所在?加密?否喔!
    security = user
    encrypt passwords = yes
    smb passwd file = /etc/samba/smbpasswd

    # ? NetBIOS name 名?解析有?的?定
    name resolve order = lmhosts bcast host

    # 新增的每?使用者家目?及群?用?哩!
    [homes]
    comment = Home directories
    browseable = no
    writable = yes
    valid users = %S
    create mode = 0664
    directory mode = 0775
    [public]
    comment = the user groups work directory
    path = /home/public
    public = yes
    writable = yes
    valid users = @users
    [temp]
    comment = Temporary file space
    path = /tmp
    read only = no
    public = yes


    [global] 部分
    在新增的?料部分,主要是?密??案有?啦!包括安全等??定?使用本?的密???,亦即是『 security = user 』 那??目,而且加上了密?加密。至於 Samba 使用的密????就是 /etc/samba/smbpasswd ??, ?了增加自己的??,乾脆直接?到 smb.conf ?中即可。

    至於那?『 name resolve order 』就有趣了!他?明的是『?部 Samba 主??? NetBIOS name 的解析方式』, 主要的解析方式有??:

    lmhosts:直接以 lmhosts ???案的?容??照;
    wins:利用一部可管理 Windows ?芳的主控?????,本 Samba 主?向?部主? (wins server) 要求 NetBIOS 名?解析?果;
    host:透? /etc/hosts 或者是 NIS, DNS 等方式??理 NetBIOS name 的?果;
    bcast:在??中直接透? NetBIOS 的?播功能?理,亦即是向所有 Samba 主?介面的同一?域主??出名?解析的需求, ?例??咱?的 Samba 主?? 192.168.1.254/24 ,?以 bcast 解析 NetBIOS name ?,我?的伺服器?主?向 192.168.1.0/24 ?送出解析封包的要求啊。
    我?修改了??值,? Samba ?透? lmhosts, bcast 及 host 的方式?行主?名?的解析啊!

    [homes] 部分
    至於新增的目?方面,[homes] 是?比?特殊的分享名?,他代表 Linux 主?上?的使用者家目?。 我?知道 [homes] 代表的是分享目?的?源名?, 但你?不希望使用 Samba ?找到的?源分享名?? //127.0.0.1/homes 吧? 所以才?有『 valid users = %S 』???定值,那? %S 代表?有可登入 Samba 的所有使用者, 且?他登入後,那? [homes] ??成 [??] , ?至前一小?的??部分查?相?的?明。而且使用者的家目?是除了使用者本人外, ?不??放?其他人??的喔 (browseable = no),另外他的 umask ? 002,因?建立新? (create mode) ???限? 0664 ,而建立新目? (directory mode) ?? 0775 之故。

    [public] 部分
    另一?新增的分享?源比?有趣,我?命名? [public] ,指向的目?? /home/public , 有趣的地方在於使用的 valid users = @users ???定?目,加上 @ 之後的名?代表著群?之意,意思是?,在 Linux 主?上面可使用 Samba 的??中,只要???支援 users ??群?, 那?理?上他就能??入 /home/public 目??行存取的?限。不?能否?利的存取?案?? Linux 最底?的?案?限有?。且任何人均可查?到我?的主?有提供 [public] ??分享?源 (public = yes 之故)。

    例?:
    在上面的???定??中有提到分享出 /home/public ??目?,????目?的?限??如何?定才是符合我? Samba 案例的要求?
    答:
    在??案例?中我?提到任何具有 users 群?的使用者都能?完整的存取 /home/public , 所以??目?的群????於 users ,且?限至少需? 770 才行。如果 /home/public ??不存在?, ??要如此建立:
    [root@linux ~]# mkdir /home/public
    [root@linux ~]# chgrp users /home/public
    [root@linux ~]# chmod 770 /home/public


    ????於 users 群?的使用者?入到此目?後,才能??行??的功能。



    --------------------------------------------------------------------------------

    3. ?定可使用 Samba 的???密?
    ?定使用者??是很重要的一?,因??定??的?,?然也就任何人都?有?法登入的! 在??我?必?先要?明一下 Linux 的?案系?? SAMBA ?定的使用者登入?限的相?性!

    在 Linux ??系?下,任何程序都需要取得 UID ? GID (User ID ? Group ID) 的身份之後,才能??有?身份的?限,也才能???的?行存取?案等?作!

    ?於 Linux ??系?的 UID ? GID ???的相???,一般??在 /etc/passwd ?中,?然也能透? NIS, ldap 等方式?取??;

    SAMBA ?只是 Linux 底下的一套??,使用 SAMBA ??行 Linux ?案系??,?是需要以 Linux 系?下的 UID ? GID ???!
    如果上面????明您?有??了,?在就?看一下?我?在 Windows ??上面以?路上的芳???接 Linux ?且?行?料的存取?,?是怎?的一?情?呢?

    我?需要透? SAMBA 所提供的功能??行 Linux 的存取,而 Linux 的存取是需要取得 Linux 系?上面的 UID ? GID 的,因此,我?登入 SAMBA 主??,所利用 SAMBA 取得的其?是 Linux 系??面的相???!?也就是?,在 SAMBA 上面的使用者??,必?要是 Linux ??中的一?!
    所以?,在不考? NIS 或 LDAP 等其他??的??方式,??以 Linux 本??? (/etc/passwd) 作?身份???, 在 Samba 主?所提供可登入的??名?,必?要存在於 /etc/passwd ?中! ?是一?很重要的概念!例如你要先有 dmtsai 在 /etc/passwd ?中後,才能? dmtsai 加入 Samba 的使用者?中。?都是很基本的???限概念,如果您?得????方面有??, 若不考??哥的解?不良,表示你必?要回去??基?篇了~ ^_^

    好了,假?我的?器?面已?有 dmtsai, nikky, tang 等三人,不?我只想要? dmtsai 及 nikky 使用 SAMBA 而已的?, 那?如何????使用者加入??密?管理?案 /etc/samba/smbpasswd ?中呢?很??的啦!??做即可:
    1. 先??密??是否存在
    [root@linux ~]# ls -l /etc/samba/smbpasswd
    -rw------- 1 root root 104 Dec 25 23:13 /etc/samba/smbpasswd
    # 注意啊!要??的?限才可以喔!如果你的 Linux ?有???案,?自行建立。

    2. smbpasswd 指令功能
    [root@linux ~]# smbpasswd [-adem] username
    ???明:
    : 如果都?有加上任何一???,例如『 smbpasswd dmtsai 』?,?表示:
    修改 SAMBA 密?? (/etc/samba/smbpasswd) ?面的 dmtsai ????的密?!
    也就是?,密???面已?存在一? dmtsai 的??了!
    -a : 在 smbpasswd 密???面新增一?使用者
    -d : ?在 smbpasswd 密???面的某???的使用者???法使用 SAMBA
    ?多了 -d 的???,在 smbpasswd ?面某??位?多出一? D 的??,
    代表???目前?法使用喔!
    -e : ? -d ??相反,?某???恢?使用!
    -m : ? username ??器代? (Machine Account),??? domain model 有?!

    2.1 ?始新增使用者吧!
    [root@linux ~]# smbpasswd -a dmtsai
    New SMB password: <==在???入密?!??密?不一定要? /etc/shadow 相同
    Retype new SMB password: <==再?入一次
    Added user dmtsai.

    [root@linux ~]# cat /etc/samba/smbpasswd
    dmtsai:501:1B0F61E20F8F2D11AAD3B435B51404EE:F7EDDB3F55CC5DB1FE00D7F755028491:
    [U ]:LCT-4590969D:
    # 上面的?料?同一行的?料喔!?料?加密?的!

    2.2 如果要??拒?一?使用者的登入,可以??做:
    [root@linux ~]# smbpasswd -d dmtsai
    [root@linux ~]# cat /etc/samba/smbpasswd
    dmtsai:501:1B0F61E20F8F2D11AAD3B435B51404EE:F7EDDB3F55CC5DB1FE00D7F755028491:
    [DU ]:LCT-4590969D:
    # 就是?? D !代表的就是?? disable ?!
    [root@linux ~]# smbpasswd -e dmtsai


    接下?你可以透?相同的方式?新增 nikky ??使用者的 Samba 密?,那???人就能?使用 Samba ?。 然後我?就能??始???重新?? Samba ?且??看看?!



    --------------------------------------------------------------------------------

    4. 重新?? Samba ???
    在??重新??後,我?所?行的修?才?生效。然後使用 smbclient ??查看看,是否不同身份?有不一?的???果呢? ??看看:
    [root@linux ~]# testparm
    # ???作很重要!每次都要?行!??你的?法??後再?始!

    [root@linux ~]# /etc/init.d/smb restart

    [root@linux ~]# smbclient -L //127.0.0.1
    Password: <==直接按下 [Enter] 即可。
    Anonymous login successful <==是匿名登入喔!
    Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba 3.0.10-1.4E.9]

    Sharename Type Comment
    --------- ---- -------
    public Disk the user groups work directory
    temp Disk Temporary file space
    IPC$ IPC IPC Service (This is vbird's samba server)
    ADMIN$ IPC IPC Service (This is vbird's samba server)

    [root@linux ~]# smbclient -L //127.0.0.1 -U dmtsai
    Password: <==?入 dmtsai 在 smbpasswd ?案中所建立的密?喔!
    Domain=[VBIRDSERVER] OS=[Unix] Server=[Samba 3.0.10-1.4E.9]

    Sharename Type Comment
    --------- ---- -------
    public Disk the user groups work directory
    temp Disk Temporary file space
    IPC$ IPC IPC Service (This is vbird's samba server)
    ADMIN$ IPC IPC Service (This is vbird's samba server)
    dmtsai Disk Home directories


    由上表我?可以??,?由不同的身份登入可以取得不一?的???料, 所以在使用上面需要特?留意喔!



    --------------------------------------------------------------------------------

    5. ?於?限的再?明
    有的?候你???,明明在 smb.conf ?中已??定了 writable 可?入,使用者登入的身份也?有??, ?啥就是?法?入呢?是否是伺服器?定哪??有??啊?非也非也!主要的??常常是?自於 Linux ?案系?的?限啦!

    ?上面的例子??好了,我?在 smb.conf ?中?定 [public] ?可?入,亦即 /home/public 是可?入的。 假? dmtsai ?於 users ??群?,因此以 dmtsai 登入 SAMBA 伺服器後,?於 /home/public ??是具有可以??的能力的!但是,如果你以 root 的身份建立 /home/public ?又忘?修改?限的?, 此? /home/public 是?法? users ??群??入的,因此 dmtsai ??使用者?然不具有?入的能力。 ???,?解?哥想要?啥了??注意注意喔! ^_^


    上面的?定案例???足以提供一般家庭用的?境中?行?定了!如果您?要?充分享的目??能?登入的使用者, 可以??做:

    利用?? smb.conf ?多?放其他的目?,?且特?注意 Linux 在?目?下的?限喔!?使用 chown ? chmod 吧!
    利用 smbpasswd ?新增其他使用者到 /etc/samba/smbpasswd ?面去,如果?????有出?在 /etc/passwd ?面,?先以 useradd 新增???;
    不??行完任何的?定,?先以 testparm ?行??,之後以 /etc/init.d/smb restart ?重新??!
    事?上,SAMBA 的一般用途就是在????的模式中!多使用 SAMBA ?分享您的?源吧!?哥都是使用 SAMBA ?做??端伺服器?我的工作?互通有?的重要媒介?~



    --------------------------------------------------------------------------------
    ?定成?印表?伺服器 (CUPS 系?)

    ??上面的?明大部分都是??磁碟?目?的分享??行 SAMBA 的?定,那? SAMBA 有?有可能分享出?置呢???例子??,例如那?我?在?公室都?用到的印表?呢?如果?,能??我??公室的 File Server 同?提供印表?列印的功能,如此一?,藉由 Linux ??作?系?可以 24 小???的?定功能,我?就可以???行列印?!所以,底下我?就以 SAMBA ?行印表?列印功能的提供者的角度,?介??? smb.conf 的?定喔!

    在 Linux 底下?行列印的工具很多,不?我???要介?的?有目前???流行的 CUPS (Common Unix Printing System) ?一?。 ??的 CUPS 安??定方法我?已?在基?篇的 CUPS 章??中提?, 所以??我?不再???明,?介?大致的?理流程就是了。如果你需要?早期的 LPRng 列印系?的?, 建?可以?考底下的?料喔:

    依??的列印文件:http://www.imacat.idv.tw/tech/lnxprint.html
    ?哥的 LPRng ?介:http://linux.vbird.org/linux_server/0370samba/0370samba.php
    底下就??一?一般常?的流程?明吧:


    --------------------------------------------------------------------------------

    1 安?印表???定??
    再次?明,?不是所有的印表?都被 Linux 所支援的,所以?你想要??一部印表?到 Linux 系?上??, ??必到 http://www.linuxprinting.org/printer_list.cgi 上?去看看是否有被支援喔! 如果?有被支援,那就?一部印表?吧!不要?行垂死的?扎了....

    如果你的印表??接埠?使用 USB 或者是平行序列埠的?,那??你?接上印表?後, 可以利用底下的方式??看看是否成功的?接上了:
    [root@linux ~]# echo "Hello printer" > /dev/lp0 <==平行序列埠
    [root@linux ~]# echo "Hello printer" > /dev/usb/lp0 <==USB 埠


    如果印表?有回?,?表示 OK 的啦!你可以?行底下的工作了。如果你的印表???路印表?呢? 就是?印表?有 IP 的情?下,那??印表?就不需要加入 Samba 啦!因??印表?本身就可以直接提供用?端?接, 根本不必透? Samba ?提供?路??的嘛!?然啦,如果你有特殊需求, ??路印表?加入 Samba server ?提供??芳中的其他用?,也是可以的啦!底下直接?看看如何使用 CUPS 吧。



    --------------------------------------------------------------------------------

    2. ?定 CUPS 的印表?
    ?先??你的 CUPS 已?安?妥?了,原?上,你必?要有底下??套件存在才行:

    cups-libs
    cups
    接下?我?可以?始?定 CUPS 了!?定的原?是??的:

    我需要? 192.168.1.0/24 ???域可以使用印表?
    我需要? 192.168.1.0/24 及 127.0.0.0/8 可以管理 CUPS 系?
    然後?始??做:
    [root@linux ~]# vi /etc/cups/cupsd.conf
    # 底下???目在控制?可以使用 CUPS 系?,?在 772 行左右,
    # 找到?些?料?增加一???:

    Order Deny,Allow
    Deny From All
    Allow From 127.0.0.1
    Allow From 192.168.1.0/24


    # 底下的?目?在?定?可以登入 CUPS 系?的管理介面?
    # ?在 830 行左右,找到?些?料??行一些?部修改:

    #AuthType Basic
    #AuthClass System
    Order Deny,Allow
    Deny From All
    Allow From 127.0.0.1
    Allow From 192.168.1.0/24


    # 在最後一行的地方加上?一句
    Listen 0.0.0.0:631
    # 上面在?定一?不需要密?即可登入的管理?境,是?很粗糙的介面,
    # 建?您自行?理一下????,??考基?篇的?明。


    另外,?了要?行 Windows 相???所??的列印?料,所以我??需要? CUPS 作一些?外的?定, ?程也是很??的:
    [root@linux ~]# vi /etc/cups/mime.convs
    # 大概在最後?行的地方,找到?一行,??解拿掉!
    application/octet-stream application/vnd.cups-raw 0 -

    [root@linux ~]# vi /etc/cups/mime.types
    # 同?也是在最後面?行的地方,也是??解拿掉即可!
    application/octet-stream


    ?定完?後就可以?始??? cups 系?,可以??做:
    [root@linux ~]# /etc/init.d/cups start
    [root@linux ~]# netstat -tunlp | grep '631'
    tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 18271/cupsd
    udp 0 0 0.0.0.0:631 0.0.0.0:* 18271/cupsd


    那? 631 的埠口就是 CUPS 所??的啦!然後我?可以?始?定印表?了! 由於 CUPS 支援很多不同的印表??接埠,每??接埠都不一?,常?的有:

    USB ?接埠: usb:/dev/usb/lp0
    平行序列埠: parallel:/dev/lp0
    ?路印表?: ipp://ip/印表?型?
    ?路芳?印表?: smb://user:password@host/printer
    假?我?的 Samba 上?接了一部 usb ??的印表?,而我要??部印表?取名? hplaser2300 ?, 你可以使用??器?接到 Samba 主?上?,必?注意到?址喔:



    ?三、CUPS 的管理介面示意?

    如上?三所示,先在?址列的地方?必要?入埠口才行!然後按下箭?『 2 』所指的地方, 亦即是『Manage Printer』之後再按下『Add printer』的按?,就?出?如下?面, ?得要填?正?的?料喔!



    ?四、CUPS 的管理介面示意?

    然後如下?所示,??正?的?置所在?!我?假?使用的是 USB 的印表??接埠:



    ?五、CUPS 的管理介面示意?

    之後就是??正?的型??,假??部印表?? HP 所出?的:



    ?六、CUPS 的管理介面示意?

    ????的雷射印表???程式吧!



    ?七、CUPS 的管理介面示意?

    最後都成功後,就?找到如下所示的?面了。



    ?八、CUPS 的管理介面示意?

    到此?止我?可以假?你的 CUPS 已?有一部印表?存在了,即使?印表?目前?法工作, 但是就是有一部印表?嘛!^_^!接下?看看如何?他??到咱?的 Samba 伺服器中吧!



    --------------------------------------------------------------------------------

    3. 在 smb.conf ?中加入印表?的支援
    然後?始告? Samba ??部印表??他分享出去吧!你需要???理:
    [root@linux ~]# vi /etc/samba/smb.conf
    [global]
    .....其他省略.....
    # ??列出的?是印表?相?的?料啊!
    printcap name = cups
    load printers = yes
    printing = cups
    [printers] <==??分享的?源名?一定是 printers
    comment = All Printers
    printable = yes <==可以?行列印的功能
    browsable = yes <==可以?其他人??
    public = yes
    valid users = @users dmtsai <==可使用的人?有?些
    path = /var/spool/samba <==列印?列的地方,?存?料
    printer admin = dmtsai <==?是印表?管理?!需要可使用 SAMBA 者
    .....其他省略.....


    基本上透???的?定你的 Samba 就能??利的提供印表?的服?了! 不?可惜的是,Windows 用?端依?得要安?印表?的??程式才能?使用 Samba 所提供的印表?, 此?真是麻?兼??啊~有?有可能? Samba 主?的提供??程式?使用者,??一?用?端就不需要?外去找??程式?! 是可以的,透? Samba 3.x 即可?理!

    或?你?想,印表?的型???多,那? Linux ?如何提供?些印表?的??程式啊??不麻?? ?好啦, CUPS 主要是透?利用 Postscript 的列印?言?印表??通的,因此用?端只要取得 postscript 的??程式他?就能?使用咱?的 Samba 伺服器所提供的印表?了!如此一?, 不?印表?的型??何,只要他?能?支援 Postscript 的列印格式,OK 搞定!而且 CUPS 官?本身就有提供 CUPS 的 Postscript ??程式?!可以到底下的??去下?:

    支援多? CUPS 版本:http://ftp.easysw.com/pub/cups/windows/
    支援 CUPS 1.2 以上版本:http://www.cups.org/windows/software.php
    由於 CentOS 4.x 使用的是 1.1.x 版本,所以?哥下?的是 cups-samba-5.0rc3.tar.gz ???案, 接下?我?要????案解??,然後?相?的程式?他安?到正?的目?去。 不?您得要注意的是,除了????程式外,要支援 Windows 2000/xp 的用?端, 你?得到 Windows XP 的底下目?去下????案:

    C:\WINDOWS\system32\spool\drivers\w32x86\3
    ?面的 PS ??的?案通通下?下?,??有四??案的,??他??成?小?的?案,?且放置到你 Samba 主?上的 /usr/share/cups/drivers/ 目?下,然後? cups-samba-5.0rc3.tar.gz 解??後?行 ./cups-samba.install ?案, 就能????程式通通安?到 /usr/share/cups/drivers/ 目?下了!?就是基本的??程式?! 在?哥的??目?底下至少含有????案就是了:
    [root@linux ~]# ll /usr/share/cups/drivers
    -r--r--r-- 1 root root 14234 Sep 24 2002 cups5.hlp
    -r--r--r-- 1 root root 280268 Jan 4 2004 cupsdrv5.dll
    -r--r--r-- 1 root root 219540 Jan 4 2004 cupsui5.dll
    -rw-r--r-- 1 root root 129024 Dec 27 14:18 ps5ui.dll
    -rw-r--r-- 1 root root 455168 Dec 27 14:18 pscript5.dll
    -rw-r--r-- 1 root root 27568 Dec 27 14:18 pscript.hlp
    -rw-r--r-- 1 root root 792644 Dec 27 14:18 pscript.ntf


    上述的?案?哥?他打包成?一??案了,你可以在底下的??下?:

    http://linux.vbird.org/linux_server/0370samba/cups-samba-windows.tgz
    不?您得注意,???案?的 Windows ?料是由 Windows XP 上面捉?的,所以?於 Windows 98/ME 是?有作用的。 您得自行上?查?相?的?料下?方式喔。 接下?我?必?要在 smb.conf ?面增加一?新的分享?料,??分享?料必?是 [print$] 名?才行! 有??似??啦:
    [root@linux ~]# vi /etc/samba/smb.conf
    .....其他省略.....
    [print$]
    comment = Printer drivers
    path = /etc/samba/drivers <==存放印表???程式的目?
    browseable = yes
    read only = yes
    write list = dmtsai <==????程式的管理?
    .....其他省略.....

    [root@linux ~]# mkdir /etc/samba/drivers
    [root@linux ~]# chown dmtsai /etc/samba/drivers
    # 因?我??印表?管理?以及??程式管理?的身份?定? dmtsai ??使用者,
    # 因此存放的目?也要改?一下?限才行?!

    [root@linux ~]# testparm <==???法
    [root@linux ~]# /etc/init.d/smb restart <==重新??

    [root@linux ~]# smbclient -L //127.0.0.1 -U dmtsai
    Password: <==?入密?先
    Domain=[VBIRDSERVER] OS=[Unix] Server=[Samba 3.0.10-1.4E.9]

    Sharename Type Comment
    --------- ---- -------
    print$ Disk Printer drivers
    hplaser2300 Printer HP Laser Jet 2300 printer
    # 瞧!有看到一部印表?以及??程式所在的分享?料?!


    ?在我?的要告知 Samba ?,我?的 CUPS 可提供 Windows 2000/XP 用?端的??程式, 所以用?不需要自行?定他?的??程式哩!要由 cups 告知 Samba 是由 cupsaddsmb ??指令?搞定的, 整?指令的?行很??的:
    [root@linux ~]# cupsaddsmb -H [SAMBA 主?名] -h [CUPS 主?名] \
    > -a -v -U [使用者??]
    ??:
    -H :後?接的是 Samba 主?名,本?的?可以直接用 localhost 即可;
    -h :後?接的? CUPS 的主?名,同?的可使用 localhost 即可;
    -a :搜?所有可用的印表?;
    -v :列出更多的??;
    -U :印表?管理?

    ?例:利用前面的?明?印表???程式?上 SAMBA
    [root@linux ~]# cupsaddsmb -H localhost -U dmtsai -a -v
    Password for dmtsai required to access localhost via SAMBA: <==?入 dmtsai 密?
    # ?????很多的?息,?明已?安?了某些??,底下?哥?列出??的?息而已。
    putting file /usr/share/cups/drivers/pscript5.dll as
    \W32X86/pscript5.dll (1438.5 kb/s) (average 1342.5 kb/s)

    Printer Driver hplaser2300 successfully installed.

    Succesfully set hplaser2300 to driver hplaser2300.

    [root@linux ~]# ll /etc/samba/drivers
    drwxr-xr-x 3 dmtsai dmtsai 4096 Dec 27 14:40 W32X86


    最後在??程式的存放目??多出一? W32X86 的目?,你可以查?一下?目?的?容, 那就是??要?用?端使用的??程式啦!??就搞定了!不?,?了?所有的?料通通??, 建?您? CUPS 及 SAMBA 通通重新??吧!
    [root@linux ~]# /etc/init.d/cups restart
    [root@linux ~]# /etc/init.d/smb restart




    --------------------------------------------------------------------------------

    4. 一些??的克服:
    如果一切?利的?,你在 Windows 用?端??可以?利的?接到印表??! ?心吧!不?,如果你曾?印??料,那??如何?入 Linux 的 Samba 主????料移除呢? 你最好知道底下的??指令,?於?些指令的??用法??自行?他 man man 看了:
    [root@linux ~]# lpstat -a
    hplaser2300 accepting requests since Jan 01 00:00
    # 列出所有可用的印表???

    [root@linux ~]# lpq
    hplaser2300 is ready
    no entries
    # 列出印表?的工作,若有列印工作存在?,?如下所示:
    hplaser2300 is ready and printing
    Rank Owner Job File(s) Total Size
    active dmtsai 5 smbprn.00000003 ??? 42954752 bytes

    [root@linux ~]# lprm all
    # 移除所有等待中的列印工作!



    列印工作就是???行的啦!???看看吧!



    --------------------------------------------------------------------------------
    安全性管理

    使用 SAMBA 其?是有一定程度的危?性的,?是因?很多?路攻?的蠕?就是透? NetBIOS ?攻?的! 因此,在架?好了 SAMBA 之後,??得??限方面的工作做好!?限方面的工作除了 smb.conf ?的?定外, Linux ?案系?的 r, w, x ?限也是相?重要的喔!我?底下就??的介?一下一些基本的安全性管理吧!


    --------------------------------------------------------------------------------

    利用 iptables ?管理
    最??的管理登入 SAMBA 的方法就是透? iptables 啦!??的?明我?已?在 防火?章??中提?了,所以??不在?加?明。 要知道的是,如果你?要??底下的???放 Samba ?,可以??想:

    ??? 192.168.1.0/24 ???域?放 SAMBA;
    SAMBA 的 port 有 137~139 tcp/udp;
    SAMBA 主?的?路卡? eth0
    所以 iptables.rule ???中??要加入???:
    iptables -A INPUT -p tcp -i eth0 -s 192.168.1.0/24 --dport 139 -j ACCEPT
    iptables -A INPUT -p udp -i eth0 -s 192.168.1.0/24 --dport 137:138 -j ACCEPT


    ?然啦!?是很??很??的防火???,您必?要依?您的?境自行修改 (通常修改那? 192.168.1.0/24 ?段即可!) 。除了 iptables 必?要?放之外,您?需要?管制 daemon 是否能??出的 TCP Wrappers ?放才行?!如果?一您看到 /etc/hosts.deny ?面多了?一行:
    [root@linux ~]# cat /etc/hosts.deny
    ALL : ALL


    不要?疑,很可能?造成不只 SAMBA 不能?作而已~?其他的 daemon 都可能??法?作呢!所以,???一行拿掉吧! 或者是??合的 daemon ?放在 /etc/hosts.allow ?案?面喔!



    --------------------------------------------------------------------------------

    smb.conf 的?定值
    事?上 Samba 已?有?多防火??制啦!那就是 hosts allow 及 hosts deny ?????。 通常我?只要使用 hosts allow 即可,那??有?入???定?目的其他?源就?被拒???的! ?例??,如果你只想要?本?、192.168.1.11, 192.168.1.21 使用 SAMBA 而已,那?可以???:
    [root@linux ~]# vi /etc/samba/smb.conf
    [global]
    # 跟安全有?
    hosts allow = 127. 192.168.1.11 192.168.1.21
    smb ports = 139


    如此一?不但只有?部主?可以登入我?的 SAMBA 伺服器,而且 Samba 只能以??的 port 139 ???, ?? Windows 常用且有???的 port 445 呢!???比?好一些啦! 未?如果?有人想要??你的 Samba ?,?他加入 hosts allow 後面即可! 不?吧! ^_^



    --------------------------------------------------------------------------------

    利用 Quota 限制使用者空?使用
    quota 是磁碟配?限制的一? daemon ,您可以依?不同的使用者?加以限制他?能?使用的硬碟空?, 前提是『?磁碟空?必?是一??立的 partition 』才行,不建???根目? 『 / 』?行 quota !?也是?什?我?在主????特?建?大家?立出一? partition ??行硬碟??的原因!?於 quota 的??用法在『 ?哥的 Linux 私房菜--基???篇』?面已??得很清楚了, ??我?不再??!只?大家?做???就是了!

    例?:
    在??主?的?候,我? /dev/hda2 ?立一? partition ? /home ??目?,?在想要?? quota ?? dmtsai ??使用者?行磁碟配?的限制,他的 hardlimit ? 50mb 而 softlimit ? 40mb ,??整??作??如何?行?
    答:
    ??修改 /etc/fstab ,使得 /dev/hda2 ?? partition 成?如下模?:

    /dev/hda2 /home ext3 defaults,usrquota,grpquota 1 1
    修改完?之後,?千??得使用 mount -a 查?看看有?有?定?? (上面?共只有六??位喔!), ???作如果?生??,那???得再次的?行 /etc/fstab 的修改!?特?留意啊!因???的?, 很容易造成?法正常??的窘境!

    上述?作?定?有??之後,?重新???? quota 的支援:

    sync; sync; sync; reboot
    ?行底下的指令,建立 quota 所需要的?定?案:

    quotacheck -avug
    特?注意,如果上述的?作?生『找不到?定?』的意思的?息?,您可以??做:

    touch /home/aquota.user; touch /home/aquota.group
    然後再?行一次 quotacheck 即可!

    ?? quota ?:

    quotaon -av
    ?定 bird 的磁碟配?:
    edquota -u dmtsai
    Disk quotas for user dmtsai (uid 501):
    Filesystem blocks soft hard inodes soft hard
    /dev/hdb2 32 40000 50000 8 0 0
    因?我?只??硬碟空?,不?? inode 做限制,所以只要前面的?字修?即可!?注意,?字的?位? kbytes !




    --------------------------------------------------------------------------------

    ?於?份
    跟 SAMBA 最有?的?然就是使用者的???!所以,您??要?份的就是使用者的?料,以及 Samba 相?的?定?料了!比?相?的有??咚咚:

    /etc (因?含有 /etc/passwd 以及 /etc/samba ?面的?料,所以建?可以全部?他?份下? )
    /home (?是可以察看一下,是否有其他非必要的!不?,一般??,都?是?份的?人?料比?多啦!)
    其他由 smb.conf ?面?定?放的目?。
    ??如何,?份?是挺重要的!


    --------------------------------------------------------------------------------
    主?安??的???中文磁???

    ?在您知道 Samba 伺服器的功能是用?作??案伺服器的,每?使用者都可以?有家目?, ?透??芳的功能???到 Samba 伺服器中。?就有???啦,那就是你的使用者如果太多, ?且?他?的重要?料都放到?部 Samba 主?上?的?,那肯定 /home 未??有?不足啊! 所以 /home 所在的磁碟或?可以使用大一?的硬碟,或者使用磁碟?列,使用 LVM 也是?不?的方案。 底下???的思考方向:

    在安? Linux 的?候,建?不需要安? X Window ;
    在?? Linux ?,/home 最好?立出一? partition ,而且硬碟空?最好能?大一些;
    /home ?立出?的 partition 可以???行 quota 的作?,以??每?使用者能?使用的最大硬碟容量;
    由於 SAMBA 可以做?印表?伺服器,所以建?印表?可以直接?接在 Linux 主?的列印埠 (LPT1, USB...);
    由於 SAMBA 一般??都????部 (LAN) 主??行?放,所以,可能的? SAMBA 主?直接使用?部保留 IP ??定即可,?然啦, SAMBA 是否使用 private IP ?得?您的整??域的 IP ?段的特性???。 以?哥研究室??,因???室所有??的 IP 都是 Public IP,那? SAMBA 如果使用 Private IP ,?然大家都?法?接上啊! ^_^
    如果您的 SAMBA 主?使用 Public IP ?,?特?留意??好防火?的?定,?量?? LAN ?的??可以????即可,不要? Internet ?放喔!
    另外,如果你的 Samba 伺服器需要??含有中文的 partition ?,譬如?你?原本 Windows XP 的 FAT32 ?案系?挪到 Linux 系?下,此?如果用一般模式????分割槽?,一些中文?名可能??法被?利的列印出?。 ???候你就得需要??做了:
    mount -t vfat -o iocharset=big5,codepage=950 /dev/hd[a-d][1-16] /mount/point


    其中 iocharset 指的是本?的?系??方式, codepage ???端??有?。因?我?是在本??行??, 所以??上使用 iocharset ????即可啦!更多?明??看下?的用?端?定部分?!


    --------------------------------------------------------------------------------
    Samba 用?端??功能

    ?在你已?架?好了 Samba 伺服器啦!有伺服器?然要有用?端?使用才是好的伺服器嘛!不然要??伺服器?嘛? 而我?假??域?路?有 Windows/Linux 系?,???系?都是透? NetBIOS over TCP/IP ??上 Samba 主?的, 在?定之前你必?要知道的有?件事:

    在???的主?最好具有相同的工作群?,且具有不同的主?名?;
    Windows XP pro. 最多?能允?十?用?同??接到?芳;
    你可以在?芳?中看到的通常是相同群?的主?;
    可以使用『搜?』-->『??』-->『?入 IP』?查到 Samba 主?;
    Windows 的?芳???有同一?域的主?才能登入!
    接下?咱?就分?依照 Windows XP 及 Linux 系??做?明吧!


    --------------------------------------------------------------------------------
    Windows 系?的使用

    在 Windows 上面的搜??在挺??的,你有好??方法可以?理:

    打?『?案?管』,『?路上的芳?』、『整??路』、『Microsoft Windows Network』 就能看到?於您群?的所有??主?了!

    『?始』、『搜?』、『?案或?料?』、『??或人?』、『?路上的??』, 然後在出?的方框?中填?正?的 IP ,按下『搜?』即可! ??方法可以?用於不在同一?群??中的?路主?喔!
    ?例??,如果想要?接到我?的 Samba 主?的?,而又不知到?部 Samba 主?的 NetBIOS name , 那利用搜?的?果?有??似如下的?示:



    ?九、Windows XP 用?端搜?示意?

    上?九中先在左?的地方?入正?的 IP 後,按下搜?,如果一切?利的?那?右上方就?出??部 Samba 主?的?明了。 ??一下?主?名?,就?出?右下方的?目!瞧!那就是我?所?定的??基本?目的啦!真是好高?! 然後你就可以?始?入相??的目??行?料的存取了,就????。 如果是印表?的?,那?你?滑鼠移?到印表?的上方,按下右?後可以??『??』的?目, 如下所示:



    ?十、Windows XP 用?端??印表?示意?

    如果一切?利的?,嘿嘿!你就可以在??『?始』、『?定』、『印表?和?真』後所出?的?窗看到?部印表??! 真是好棒?! ^_^


    --------------------------------------------------------------------------------

    ? Windows 系?的?芳支援不同?域的 IP ??
    由於 Windows XP sp2 ??作?系?版本??的防火???放相同?域的 IP ?源使用本?的?芳?料, 所以如果是不同的?域想要使用?,??是?法穿透 Windows 防火?的。此?你可以修改一下防火?的?定啊! ?叫出控制台,然後??『Windows 防火?』就?出?如下的?示了:



    ?十一、Windows XP 伺服器防火?示意?

    按照上?的?明,依序??『例外』、『?案及印表?共用』、『??』後, 就?出??防火??制所管理的埠口以及可??的?域,如下?所示:



    ?十二、Windows XP 伺服器防火?示意?

    你可以?四?埠口通通改?成你所需要的 IP ?源,或者是?他?定?任何??都能??。 不?,?哥不建?喔!可以?考底下的作法:



    ?十三、Windows XP 伺服器防火?示意?

    ??自?的方式??定能?使用你 Windows ?芳?料的?源 IP 或?段即可,然後?定之後即可?理?! ??一?,及?我?的 Linux 不? Windows 同在一??域中,也能?登入 Windows 存取?芳?料哩。



    --------------------------------------------------------------------------------

    透? port 445 的特殊登入方式
    如果你知道 Samba 主?有分享出 port 445 ,?且他已?分享了某?目??,?例??, 我?的 192.168.1.254 有分享出 public ??分享?源名??,那???目?的完整?法?:『 \\192.168.1.254\public 』,我?可以透?『?始』、『?行』??理??玩意?! 如下所示:



    ?十四、Windows XP 透? port 445 ??

    如果可以登入的?就??利登入,否?就??出一?要你?入??密?的?窗,?入正?的?料即可! 呼呼!真??~除此之外,我??可以登入?人 Windows 主?的 C 或 D 槽喔!?法??成??:

    \\192.168.1.21\c$
    所以?,怕了吧!俺?真害怕~所以啊,Samba ?必要?,那? port 445 ??是可以??的吧!


    --------------------------------------------------------------------------------
    Linux 系?的使用

    咱?的 Samba 有提供 Linux ?芳的用?端功能喔!也就是? Linux 可以?? Samba 主?也能?? Windows 提供的?芳啦! 主要是透? smbclient ??察,再以 smbmount 或 mount ???磁?哩。先?介?一下 smbclient ??指令吧:
    1. ?於查?的功能
    [root@linux ~]# smbclient -L //[IP|hostname] [-U username]
    [root@linux ~]# smbclient -L //127.0.0.1 -U dmtsai
    Password:
    Domain=[VBIRDSERVER] OS=[Unix] Server=[Samba 3.0.10-1.4E.9]
    ....分享的?源?出省略....
    Domain=[VBIRDSERVER] OS=[Unix] Server=[Samba 3.0.10-1.4E.9]

    Server Comment
    --------- -------

    Workgroup Master
    --------- -------
    VBIRDGRP VBIRD_OP_2
    VBIRDHOUSE VBIRDSERVER
    # ???可以知道在目前?域?中有多少?工作群??主要的名?解析主?


    除了??先前用?的查?功能之外,我?可以???易使用?芳的:
    2. 利用?似 FTP 的方式登入?端主?
    [root@linux ~]# smbclient '//[IP|hostname]/?源名?' [-U username]
    # 意思是使用某????直接登入某部主?的某?分享?源,?例如下:
    [root@linux ~]# smbclient '//127.0.0.1/dmtsai' -U dmtsai
    Password:
    Domain=[VBIRDSERVER] OS=[Unix] Server=[Samba 3.0.10-1.4E.9]
    smb: \> dir
    # 在 smb 底下其?就是在 //127.0.0.1/dmtsai ??目?底下啦!所以,
    # 我?可以使用 dir, get, put 等常用的 ftp 指令??行?料??了!
    ? :列出所有可以用的指令,常用!
    cd :??到?端主?的目?
    del :?掉某??案
    lcd :??本?端的目?
    ls :察看目前所在目?的?案
    dir :? ls 相同
    get :下??一?案
    mget:下?大量?案
    mput:上?大量?案
    put :上??一?案
    rm :?除?案
    # 其他的指令用法??考 man smbclient 喔!


    事?上,使用 smbclient 一?也不方便,因?使用的是 ftp 的功能?法,有?怪怪的~能不能像 Windows 那?,可以直接???路磁碟?啊???然?有??!不?就需要藉由 smbmount ??助了!smbmount 可以??端主?分享出?的目?整??他 mount 到本?的 mount point (某?目?),如此一?, ?端主?的目?就好像在我?本?的一? partition 一?喔!可以直接?行??、??等?作!?可就好用的多了! 底下我???一?怎?用?? smbmount 吧!
    [root@linux ~]# smbmount //IP/分享?源 /??? [-o options]
    ??:
    -o 後面接的?? (options) 常用的有底下?些:
    username=你的登入??:例如 username=dmtsai
    password=你的登入密?:需要?上面 username 相??啊!
    iocharset=本?的?系??方式,如 big5 或 utf8 等等;
    codepage=?端主?的?系??方式,例如繁?中文?cp950

    ?例一:以 dmtsai 的身份?其家目???至 /mnt/samba 中
    [root@linux ~]# smbmount //127.0.0.1/dmtsai /mnt/samba
    > -o username=dmtsai,password=pw_test,codepage=cp950
    [root@linux ~]# df
    //127.0.0.1/dmtsai 20161024 3088896 17072128 16% /mnt/samba


    ?由 smbmount 的?作,我?就可以?易的??端分享出?的咚咚?他??到自己 Linux 本?上面!好用的很~事?上,原本 mount ??指令如果有支援 smbfs 的?, 那也就可以直接???路上的芳?分享出?的目?了!例如上面的例子?中,我?也可以??下?指令:
    mount -t smbfs //127.0.0.1/dmtsai /mnt/samba \
    -o username=dmtsai,password=pw_test,codepage=cp950,iocharset=big5


    更??的 mount 用法,? man mount 或者看考『?哥的 Linux 私房菜 -- 基???篇』的?容喔! ^_^


    --------------------------------------------------------------------------------

    查? NetBIOS name ? IP 及其他相???:
    ?在我?可以透?一些 NetBIOS 相?的功能?取得 NetBIOS name ,不?,如果你?想要知道?? NetBIOS name 的其他???, 例如 IP、分享的?源等等,那可以使用 nmblookup ??指令?搞定即可。他是??使用的:
    [root@linux ~]# nmblookup [-S] [-U wins IP] [-A IP] name
    ??:
    -S :除了查? name 的 IP 之外,亦?找出?主?的分享?源? MAC 等;
    -U :後面一般可接 Windows 的主要名?管理伺服器的 IP ,可? -R 互用;
    -R :? -U 互用,以 Wins 伺服器?查?某? Netbios name;
    -A :相?於其他的??, -A 後面可接 IP ,藉 IP ?找出相?的 NetBIOS ?料;

    ?例一:藉由本?找出 vbirdserver ?部主?的 IP 位址
    [root@linux ~]# nmblookup -U localhost vbirdserver
    querying vbirdserver on 127.0.0.1
    192.168.1.254 vbirdserver<00>

    ?例二:找出 vbirdserver 的 MAC ? IP 等??:
    [root@linux ~]# nmblookup -S vbirdserver
    querying vbirdserver on 192.168.1.255
    192.168.1.254 vbirdserver<00>
    Looking up status of 192.168.1.254
    VBIRDSERVER <00> - B
    ..__MSBROWSE__. <01> - B
    VBIRDHOUSE <1e> - B

    MAC Address = 00-00-00-00-00-00 <==因?是本??料,所以 MAC ?成???




    --------------------------------------------------------------------------------

    利用 smbstatus ?察 SAMBA 的??
    如果想要查?目前 SAMBA 有多人人???且哪些?源分享已?被使用的?,可以??看:
    [root@linux ~]# smbstatus [-pS] [-u username]
    ??:
    -p :列出已?使用 SAMBA ??的程序 PID ;
    -S :列出已?被使用的?源分享??;
    -u :只列出某?使用者相?的分享?料

    ?例一:列出目前主?完整的 Samba ??
    [root@linux ~]# smbstatus
    Samba version 3.0.10-1.4E.9
    PID Username Group Machine
    -------------------------------------------------------------------
    4973 dmtsai dmtsai 127.0.0.1 (127.0.0.1)
    # 上面列出的是? PID 有?的??,可用 smbstatus -p ??列出

    Service pid machine Connected at
    -------------------------------------------------------
    dmtsai 4973 127.0.0.1 Thu Dec 28 10:58:36 2006
    # 上面列出的?是分享?源,那? Service 就是分享的目?。


    你可以透???小程式??解到目前有多少人使用你的 SAMBA 的啦!


    --------------------------------------------------------------------------------
    伺服器??管理

    除了前面提到的????之外,在??我?也???如何?你的 Samba 作更多的事情! 包括? Windows 使用者的家目?放到 Samba 上?呢!^_^


    --------------------------------------------------------------------------------
    ? Samba 管理?域使用者:PDC

    前面介?的?容都是?於 Peer/Peer 的????,也就是 Samba 伺服器? Windows 用?端其?是平等地位的啦! 所以 Windows 用?端需要知道 Samba 伺服器?的??密??料後,才能??利的使用 Samba 的?源。 不?,??的方式在?大型一些的?域?路?境可能就?有?困?,例如?校的?境。

    ?例??,如果你有一???教室?面有 50 部 Windows XP Pro. 的?人??,由於??教室大家都?使用, 因此?面? 50 部?人??有使用?原精?,也就是每次??重新??後整?作?系?就??原成原本的?子。 但我?知道使用者?是需要有?人家目?吧?他??不希望?次的工作在重新??後就失去了~ 所以我?可以利用一部主???他??存?料啊!那就是 Primary Domain Controller (PDC) 主??。

    其? Samba PDC 的作用很??,就是? Samba PDC 成?整??域?路的?域管理? (domain controller), 然後? Windows 主?加入???域,未?使用者利用 Windows 登入?,Windows ?前往 PDC 伺服器取得使用者的??密?, 同? PDC ???送使用者的重要?料到那部 Windows ?人??上,而 Windows ??上的使用者登出?, ?使用者修改?的?料也?回?? PDC ,如此一?不管??使用者在哪一部?人??上面登入, 他都能?取得正?的?人?料!很棒的作用吧!

    PDC 是?很??的?境,他可以?到的功能相?的多,而且密?的??也不必在同一部 PDC 主?上面, 不???我?不?那???的?西,只是做一???的??,因此底下的?部 PDC 使用自己的密???行??, ?且也管理自己所分享出去的?源?!整?基本的?定流程??是??的:

    ?定好 PDC 主?的 TCP/IP ? Windows 主?的?路,??你??已知如何?理了;
    ?定 PDC 的角色定位,因? PDC 管理自己的密?,所以 security = user
    PDC 最好?有整??域的名?解析?力,亦即成?主要的名?解析器;
    需有 netlogon ?源分享,提供 windows 2000/XP pro. 用?端的登入之用;
    由於 Windows 需?入?人?定?,??目?? profile,Linux 系?需?先?定此目?;
    增加 PDC 上的使用者??以及?器代? (machine account) 等等
    在 Windows 2000/XP pro. ?人??上?定成? PDC 的用?端。
    底下咱?就?依序?理?理先!


    --------------------------------------------------------------------------------

    0. ?定 lmhosts 或 /etc/hosts ?? Netbios ? IP
    由於我?的 Samba 即?成?整??域的名?解析者,因此你最好?整??域的 NetBIOS name ? IP 的???入此???案?中。?然啦,如果你的?域 IP 的取得? DHCP ,那???案就不要?了吧! 以我???案例?例,???案的?容??是:
    [root@linux ~]# vi /etc/samba/lmhosts
    127.0.0.1 localhost
    192.168.1.254 vbirdserver
    192.168.1.21 vbirdcpu2
    192.168.1.11 vbirdcpu1




    --------------------------------------------------------------------------------

    1. ?定 smb.conf 成?具有 PDC 的能力
    假?我?要? PDC 用?端登入?可以取得他自己的家目?,那?需要???理:
    [root@linux ~]# vi /etc/samba/smb.conf
    [global]
    workgroup = vbirdhouse
    netbios name = vbirdserver
    server string = This is vbird's samba server
    unix charset = utf8
    display charset = utf8
    dos charset = cp950
    log file = /var/log/samba/%m.log
    max log size = 50
    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
    dns proxy = no
    template shell = /bin/false
    winbind use default domain = no
    security = user
    encrypt passwords = yes
    smb passwd file = /etc/samba/smbpasswd
    printcap name = cups
    load printers = yes
    printing = cups

    # ? PDC 有?的一些?定值:
    # 底下???定值?理成?本?域?路?的主要名?解析器
    preferred master = yes
    domain master = yes
    local master = yes
    wins support = yes
    # 作?系? (OS) 等?越高才能成?主?域的控制者,一般 NT ? 32,
    # Windows 2000 ? 64 ,所以??我??定高一?,但不可超? 255
    os level = 200
    # 底下?是?定能否利用 PDC 登入,且登入需要?行哪些?作:
    domain logons = yes
    logon drive = K: <==登入後家目???成 Windows 哪一槽
    logon script = startup.bat <==每?使用者登入後?自??行的程式
    time server = yes <==自??整 Windows ??? Samba 同步
    admin users = root <==??的管理???!??? root
    # 因??哥不喜?在 Samba ?中使用 root ,所以??你也可以指定成其他??。

    # ??在指定登入者能??行的工作,?面主要是具有?多?行程式:
    [netlogon] <==?前面的 logon script 有?,?程式放置在??
    comment = Network Logon Service
    path = /home/samba/netlogon <==你要自己主?建立此目?
    writable = no
    write list = root
    follow symlinks = yes
    guest ok = yes

    [homes]
    comment = Home directories
    browseable = no
    writable = yes
    valid users = %S
    create mode = 0664
    directory mode = 0775
    [temp]
    comment = Temporary file space
    path = /tmp
    read only = no
    public = yes

    [root@linux ~]# testparm
    [root@linux ~]# /etc/init.d/smb restart


    上面的?定有??地方比?有趣一?:

    time server:要使 Samba ? Windows 主?的??同步,使用???目;
    logon script:?使用者以 Windows 用?端登入後,Samba 可以提供一支批次?, ?使用者去?定好他?自己的目?配置。整?配置的?容??在 startup.bat ?中。 你要注意的是,?? startup.bat ?名可以?意更改,不?他必?要放置到 [netlogon] 所指定的目??;
    logon drive:那???家目?要??到那?分割槽? 在 Windows 底下大多以 C, D, E... 做?磁碟的代?,你??可以指定一下家目?要放置成?那?磁碟代?;
    admin users:指定?? Samba PDC 的管理?身份。
    [netlogon]:指定利用?路登入?首先去查?的目??源。

    --------------------------------------------------------------------------------

    2. 建立所需要的目???案
    先?建立 [netlogon] ?所需要的?料好了,那就是一?目?:
    [root@linux ~]# mkdir -p /home/samba/netlogon


    接下?我??得要建立允?使用者?行的?案,就是那? startup.bat 才行! 注意一下,我???假?使用者家目?? K 槽,而 Samba ?外分享的 temp ?? L 槽, 那你可以??做:
    [root@linux ~]# vi /home/samba/netlogon/startup.bat
    net time \\vbirdserver /set /yes
    net use K: /home
    net use L: \\vbirdserver\temp
    # ???案的格式?:net use [device:] [directory]

    # 再???案?成 DOS 的?行格式才行!因?是提供? Windows 系?嘛!
    [root@linux ~]# unix2dos /home/samba/netlogon/startup.bat
    [root@linux ~]# cat -A /home/samba/netlogon/startup.bat
    net time \\vbirdserver /set /yes^M$
    net use K: /home^M$
    net use L: \\vbirdserver\temp^M$
    # 瞧????多出?奇怪的 ^M 符?,那就是 Windows ?行字元。




    --------------------------------------------------------------------------------

    3. 建立使用者
    在 Samba ?面建立使用者就是利用 smbpasswd ??指令而已,我?已?建立?,所以??不再?明。 但是由於我?需要 root ?????管理 PDC ? Windows 用?端之???建立?所需要的?限, 所以你必?要建立起??使用者才行。建立的方法很??,直接??做吧:
    [root@linux ~]# smbpasswd -a root


    另外,我?都知道 Windows XP pro. 的使用者?定??被放置到『 C:\Documents and Settings\使用者?? 』目?中, 在?目?底下?有?似桌面、我的最?、?用程式?定、??、我的文件?啊等等的, ?些?西?放置到 Samba PDC 的哪?去?份啊?其?是放置到:

    /home/使用者??/profile/
    目?下的,?目????被主?的建立起?,不?偶而?有一些?限??的??~??筋~ 所以你可以?先?理?目?,以 chmod 或 chown ?改?成?使用者可以存取的?限。 另外,?了避免困?,?於新增的使用者而言,你可以??做:
    [root@linux ~]# mkdir /etc/skel/profile


    那以後新增的使用者都有可以存放?自 Windows 的特殊?定?目?喔!比?好管理?~ ?然啦,使用 useradd 新增使用者後,?得也要使用 smbpasswd -a username ???使用者可以使用 Samba 喔!



    --------------------------------------------------------------------------------

    4. 建立?器???
    由於 PDC ??? Windows 用?端的主?名? (NetBIOS name) ?行主????查, 所以我?也要?用?端的主?名??行??的?定。咦!啥是主???? 一般使用者??是英文或?字,主????在???最後面加上一??字?『$』即可! ?例??, vbirdcpu2 ?部主?可?定的??名?? vbirdcpu2$。

    而我?知道要使用 smbpasswd 增加的使用者必?要在 /etc/passwd ?中, 因此要建立????你就得要??做:
    [root@linux ~]# useradd -M -s /sbin/nologin -d /dev/null vbirdcpu2$
    [root@linux ~]# useradd -M -s /sbin/nologin -d /dev/null vbirdcpu1$


    ?增加 -M -s -d 等??的原因是因?不想要?????具有可以登入的?限, 因此???主????定的比?怪一?~ ^_^~接下?? Samba 知道????是主???, 所以你??要??做:
    [root@linux ~]# smbpasswd -a -m vbirdcpu1$
    [root@linux ~]# smbpasswd -a -m vbirdcpu2$


    ??便加入主????!而我?的 Samba PDC 也就可以透?『主???』?判? Windows 用?端能否?上?, 若?接上 PDC ? Windows 用?端後,接下?一般使用者??就可以在 windows 用?端登入了!



    --------------------------------------------------------------------------------

    5. Windows XP Pro. 用?端的???登入
    ?注意,底下的方法?是用於 Windows 2000, Windows XP ??版 (Pro.),一般的 Windows XP home 版本是不支援的! 如果你用?端的主?是??版的 Windows XP ,通常是 Windows XP home ,那底下的方法可能就?法?用?! 要?接上 Samba PDC 的?程也是挺??的,你可以??做:

    ?? windows 用?端的?域?主?名?

    首先我?必?要?? Windows 用?端的工作群??主?名?跟咱?的 Samba PDC 相同, ??的方式在?域?路?面已?提?了,??在??一次。?滑鼠移?到『我的??』上面,按下右?, ??『?容』,然後??『??名?』,?出?如下?示:



    ?十五、Windows 用?端?上 PDC 的方式

    如上?所示,你要先??箭? 1 ?指的主?名??工作群?,在我???案例?中的工作群?? vbirdhouse, ?部 Windows 主?的 NetBIOS 名??? vbirdcpu2 喔!如果不?的?,?按下『?更』??定, ?且重新??。重新??完?後再到?十五的?面?中,按下箭? 2 所指的?路???。


    ?定主?名???域名?

    接下?我?要?定?部 Windows XP pro. 要??到?域?路上的哪部 PDC 上面, 亦即是?理主???以及 Samba PDC ??的?域 (domain) 啦! 在?十五按下『?路??』後,分?在出?的?窗?中??:

    1. 下一步;
    2. ?台??是公司?路的一部份,而且我在工作?用???到其他??(T)
    3. 我的公司使用一或多??域的?路(C)
    4. 下一步

    然後就?出?如下的?窗:



    ?十六、Windows 用?端?上 PDC 的方式

    ?依序填? Samba 主?上面的管理????密?,要注意??密?是??於 /etc/samba/smbpasswd 中的那?,可不是 /etc/shadow 喔!?搞混了~?是 Samba 主?的?定呢。 ?入之後按下一步吧,通常都?出?找不到正?主?的?面,如下所示:



    ?十七、Windows 用?端?上 PDC 的方式

    ?哥也?得很奇怪,老是告?我找不到!不??有??,??我?依?再填一次主?的 NetBIOS name 以及群?名?, 如上?所示,然後??按下一步,就?出?如下的?面啦:



    ?十八、Windows 用?端?上 PDC 的方式

    ?次就?他?入正?的管理????密?,?得最後面的?域就是工作群?名?,???了。 ?理完?後?他按下?定吧!然後就?出?如下?面:



    ?十九、Windows 用?端?上 PDC 的方式

    恭喜您,?就表示已??接上 Samba PDC ?!我?希望所有的使用者都直接由 Samba PDC 控管,所以???填? 『此?不新增使用者』吧!按下一步去。


    如果?生??情?

    如果老是?生???息?『使用的??是????。?使用您的通用使用者??或本?使用者???存取?台伺服器』?, 你可以??做的:


    先察看一下 /var/log/samba ?面的登????,尤其是 vbirdcpu2.log ?於?部主?的???;
    如果?是?法解?,可以在 lmhosts ?面增加 vbirdcpu2 的 IP ?主?名?的??,然後? samba 整??掉『/etc/init.d/smb stop』,等待一段??? NetBIOS 的名?解析??逾?,再重新?? samba 『/etc/init.d/smb start』,然後再重新做一次?入 root 的密?那??作

    在?哥???的案例中,上面第二?步?挺有效的!不?,?是得要察看 /var/log/samba ?面的登???才行喔!


    重新???以新的?域名?登入

    在?十九之後?重新??,??後整??面?有??似??:



    ?二十、Windows 用?端?上 PDC 的方式

    ??入你在 Samba PDC 上面?有的???密?,?然啦,上?中最底下的??最重要! ?在?部 Windows 主?可以使用他自己的??登入,也可以透? Samba 主??登入喔! 粉不?啦! ^_^


    ?察使用者的家目???定?

    如果你可以?利登入的?,打??案?管後??可以看到?似下方的?面:



    ?二十一、Windows 用?端?上 PDC 的方式

    呵呵!??上的通通??上??!你也可以在自己的家目? (K 槽) 新增移除?料的!是否很不?啊! ^_^! 而?你登出之後,你在 Windows 桌面上?所?行的各??人化?定通通?被移?到 /home/dmtsai/profile ?中喔! 如果不相信的?,?自行前往 Samba 主?上?瞧一瞧就知道了。


    一些使用上面的技巧

    ?然 PDC 很好用,不?你要注意的是,每次你使用 PDC 上?的??登入 Windows 用?端主??, Windows 主??由 /home/username/profile/ ?中?入所需要的?料, ?????一??料?在 C:\Documents and Settings\username ?中,如果你的家目?下的 profile ?料太多?, 光是??就?花去很多??的!

    所以,你???一些?案?料放置到你的家目?下,亦即 K 槽?中,?量不要使用 Windows ??的『我的文件?』, 因?『我的文件?』???料移?到 /home/username/profile/My Documents 目?下,同?的, ?存到桌面的?料?被放置到 /home/username/profile/桌面 目?中,那?在登入?登出??花去很多??喔! ??小地方也要注意的呢! ^_^

    好了,?於 SAMBA 的 PDC 作法我?就?到??,?有更多的??您可以前往??章?最後面的?考?料所列出的?址去查?, 因??有很多的作法?!事?上,?哥?得在一??域?中,如果有多部的 Windows NT 主?,例如 Windows 2000/XP pro. ?一?的比??定的?人使用桌面版本?,使用 PDC 就很有用了!因? Windows 2000/XP pro. 也是一?多人的作?系?,不像 Windows 98 是?人的作?系?。所以,?使用 Windows 2000/XP pro. 而?法登入 PDC ?,您是?法使用 Windows 2000/XP pro. 上面的任何的??的。 但是在 Windows 98 上面若?法正?的登入,您仍然具有???的主控?喔!

    另外,?定 Windows 用?端之前,?先??你的 Windows 是什?版本? 上述的?作?於 Windows XP 家用版 (Home) 是?有作用的!?先??才行喔!



    --------------------------------------------------------------------------------
    ??克服

    通常我?在?定 SAMBA 的?候,如果是以 Workgroup 的方式??行 smb.conf 的?定?,?乎很容易就可以?定成功了!??有什?很困?的步?。不?,?一?是?法成功的?定起?, ??必察看登??,也就是在 /var/log/samba ?面的?料!在??面的?料?中,您???:咦! 怎???多?案啊!因?我?在 smb.conf ?面?定了:

    log file = /var/log/samba/%m.log
    那? %m 是指 Client 的 NetBIOS Name 的意思,所以,?有? vbirdcpu2 的主??登入我?的 vbirdserver 主??,那?登入的??就?被??在 /var/log/samba/vbirdcpu2.log ?案喔!而如果?一?源 IP ??有 Netbios name 的?候,那?很可能是一些???息,?些???息就?被??到 log.smbd, log.nmbd ?面去了!所以,如果您要察看某部???上您的 SAMBA 主??生了什????,特?要留意??登??的形式喔!

    另外,如果您的 SAMBA 明明已???完成了,?偏偏老是?法成功,又?法查出???,建?先?? Samba 一?子,再重新??:

    /etc/init.d/smb stop
    在我的案例?中,??有?次是因? PID ? NetBIOS 的??,?致整? SAMBA 怪怪的~所以完整的??之後, ??一?子的短???,再重新??,??就可以恢?正常了!

    ?有,?一您在?行?入的?作?,老是??『您?有相??入的?限!』,不要?疑,?乎可以?定是 Permission 的??,也就是 Linux 的?限? SAMBA ?放的?限?不相符合!??如何,您必?要?解能不能?入 Linux 磁碟,看的是 PID 的?限? Linxu ?案系?是否吻合,而那? smb.conf ?面?定的相??限只是在 SAMBA ?作?程?中『??』要?使用者的?限而已,?不能取代真正的 Linux ?限喔!所以,?一真的?????存在, ?登入 Linux 系?,查?一下???的目?的 permission 吧! ^_^



    --------------------------------------------------------------------------------
    使用者修改 samba 密?

    有???是,我?知道使用者可以透? passwd 修改 /etc/shadow ?的密?,那?使用者可否修改 samba 在 /etc/samba/smbpasswd ?的密?呢?可以啊!直接?入 smbpasswd 就能?修改自己的密?了! 非常??吧~不?,如果想要? /etc/shadow ? /etc/samba/smbpasswd 同步的?, 那就得要??手?了~您可以?考底下???????理呢。

    http://moto.debian.org.tw/viewtopic.php?t=7732&
    http://de.samba.org/samba/docs/using_samba/ch09.html

    --------------------------------------------------------------------------------
    利用 ACL 配合?一使用者?的控管

    想像一?案例,如果你是?校的?管人?,有?兼任老?向您申???,主要是要在很多班??取得同?的???料。 因??老?是兼任的,您或??心一不小心?教?就?同?的辛苦?料???,倒不是教??故意的, 而是很多?候....不熟嘛!???候如果你??老?加入同?的群?,然後偏偏同??所在的目?是群?可?入的?, 那??教?就能??有可??的?限了,也就容易造成一些莫名的??~

    那?怎???其?可以透? ACL ?管理某?目?的?一使用者?限啦!所以?, ?限的管理不必透? smb.conf 的?定,只要透? ACL ?管理就能??到你所需要的目的了。 ?於 ACL 的?明我?在前面的???路安全?中已?提?了, ??不再?唆,?自行前往查??! ^_^


    --------------------------------------------------------------------------------
    重?回?

    Samba 名?的由?是因?需包含?有意?的 SMB server 之故;
    SAMBA 可以? Linux ? Windows 直接?行?案系?的使用;
    SAMBA 是由 Andrew Tridgwell 在 1991 年的?候利用不同平台所?展出?的;
    SAMBA 主要架?在 NetBIOS 上?展的,且以 NetBIOS over TCP/IP 克服 NetBIOS ?法跨路由的??;

  23. baizx 于 2009-08-10 10:49:00发表:

    Mail 伺服器

    本章的行前??工作

    玩??件主?的朋友都很清楚,在?在的?境?中想要搞定 Mail server 是很?的一件事情, 因?目前?路社?的?告信、垃圾信、病毒信?在是多的不像?,所以各主要的 ISP ?於?件控管上面越?越?格, 因此如果你?有好好的??好一些防?的工作,以及一些事前考???的?作, 那?由你的?件主?寄出去的信件很可能老是?法到?目?主?的!而且很重要的一件事情是, ?件主?? DNS 是不可分割的,尤其是 DNS 的 MX ??,?有正反解的?果。??如何,想要搞定 Mail server 你必需要:

    你一定要知道 DNS 的相?意?, 否?你的?件主?肯定??生不明原因的??!
    ?路基?也很重要,尤其是一些????查方面的?作;
    正?表示法你最好要熟悉一些,因?很多?件???制是用他??理的。
    套件?行程管理也要熟悉,因? mail server ?用很多?外的程式?管理?件。
    ??如何都要??的,防火??定要正?, SELinux ?得先??!

    --------------------------------------------------------------------------------
    ?件伺服器的功能??作原理\r

    ?子?件是?啥玩意??他是利用?路??一些????端主?的一?????行?,?然?息文字是很冷很硬的??文字, ??比不上手?信件?的?人?得?暖,不?,?於具有?效性的????,?子?件可是?不可多得的好?手! 但是,?子?件系?蓬勃?展的?在?被某些少部分的特定人士所?用,?致垃圾信件、色情?告信件等等的??! 真是啊~??筋~底下我?就先??一????子?件相?的功能吧!


    --------------------------------------------------------------------------------
    ?子?件的功能???

    在目前的社??中,?有?子?件 (e-mail) 似乎是?奇怪的一件事!可以?,?在 e-mail 已?成?一?很普遍的人?人之?的?通管道了, ?子?件可以很快速的?你?文件或?息?送到地球上的任何一?有?路存在的角落,?然, 你也可以在任何有?路的地方,?上 Internet 去收取你的信件!很快?不是??

    不?,?憾的是,只要是有人?的地方,就?有很多你意想不到的事情?出?了,?然 e-mail 也不例外,怎??呢? 我??慢慢的分析一下?子?件?生的一些??吧:

    ??病毒的?子?件??:
    你可以常常?到?子?件可能??病毒?吧!??,利用?子?件以及人??於?子?件的漫不?心的?度, 使得以?子?件?媒介的??病毒更容易『深入人群』?中?!????造成大大小小的?害, 如果?生在大企??中,那可真是受不了那~哪?主管受的了一天到晚??重新安?的~ 而且?一中毒的是大型主?,光是?料的??就可能?公司倒?了....

    怪客透??件程式入侵:
    只要是?放? Internet 用的程式就?有??安全的,只要在 Internet 上面跑的?料就?有??保密的! 你可以?易的使用怪客?? (Cracker) 就可以取得使用者在利用 e-mail ?送?程?中所?入的???密?, 若??分析之後,?可能破解?方的?件主?~哇!真是?可怕一把的!

    ?告信?垃圾信等:
    ??可?是目前各大 ISP 心中永?的痛~?些垃圾信件可以?掉很多那少的可?的??, 使得正常使用者??速度?品?下降,更可能造成?路的停?~?然,常常收到垃圾信件的你,大概也不好?吧!

    主?被大量不明信件塞爆:
    ?一你?有??件主??定好,嘿嘿!送信者可以藉由你主?收信的功能,?送大量的信件, ?你『一次收??!』灌爆你的主?硬碟,想要不??都粉?~

    真?社?的??情事:
    『黑函』!?到?不?很害怕??然很害怕啦!偏偏,使用 e-mail 就可以作很多的?事~?真是太不道德了~

    不?的信件?容:
    只要注意到消基?的?息就可以知道啦,不明?源的?子?件?的?容,不要?易的相信! 因?很多可是以???,?果,大家都被耍了的~例如,你的朋友收到一封信,??『哇!?是大事情』, 所以在?有求?的情?下,?信『?寄』?你看,嘿!你的朋友寄?你的,?然要相信他啦! 立刻再?寄,如此一再地循?,嘿嘿!?????容的?息?上就?大家知道, 更可怕的是『???大家接受~』所以,看到任何?息?,?千?要?得求?一下?!
    可怕吧!?子?件?衍生出??多的???~另外,?? email 伺服器的?定?管理真的是?管人?心中永?的痛! ?什?呢?因?人都是想要越便利越??越好,但越便利越不管制的?件主?就越容易被攻?或遭利用! 反???,如果你???件主?管得太??,那就不太人性化,相信至少您的主管可能就不太?意, 怎???

    呵呵!??啦!?件主?就是??回事,?人又?又怕的一?玩意?,搞定他,恭喜您啊一切?利??! 搞不定他,主?被?成垃圾信件??站事小,?掉工作那可是『?事?大』呦! 就因?他是??重要又?以搞定,所以我?可得好好的??他?!



    --------------------------------------------------------------------------------
    Mail server ? DNS 之?的??

    既然要使用 e-mail ,?然就需要?件伺服器? (Mail Server)!不然你的信要怎?寄出去呢?事?上, mail server 的原理??不?,但是????~似乎又有??以理解ㄋㄟ~,所以, 底下我?要??一?他的原理部分,然後再??主?的?定??行?明咯!我?首先要?的就是『 Mail server 系?? DNS 系?有什???性?』 ??部分新手最容易被搞混哩,是否要架? mail server 就『宿命』的一定得架? DNS server 在你的主?上面??


    Mail server ?合法的主?名?
    事?上目前已??有人?使用 IP ?寄信了,我?通常接收到的 email 都是使用『??@主?名?』的方式??理的, 所以?,你的?件伺服器『就一定要有一?合法???的主?名?』才可以。?什?呢? 因??件伺服器就是一部??主?嘛!?部??主?是利用 TCP/IP ??行?路?料的??, 所以?然需要有 IP 。不?因??路使用??的??因素,?致我?不允?直接利用主?的 IP ?寄信了! 因此,你想要架? mail server 就『必需』要有合法的主?名??。

    OK!既然我只要一?合法的主?名?即可,那?表示我不需要架?一部 DNS 主??? 是的,你可以????!只要你?有合法的主?名?,亦即在 DNS 的查?系??中你的主?名??有一? A 的??, 理?上你的 mail server 就可以架?成功 (相?的 DNS ?合法主?名?的????考前面章?的?明)。 只不?由於目前???路上面的?告信、垃圾信?病毒信等?用了太多的??, ?致整??路社?花??多的成本在消耗?些垃圾?料。 所以?了杜?可?的垃圾信件,目前的大型?件主?供?商 (ISP) 都???不明?源的?件加以限制, ?也就是?『想要架?一部??可以?作的 mail server 越?越?了』。


    DNS 的反解也很重要!
    ?於一般的伺服器??,我?只要使用正解?用?端可以正?的找到我?伺服器的 IP 即可架站, ?例?? WWW 伺服器就是??。不?,由於目前收信端的?件主?????件?源的 IP ?行反解, 而如果你的?路?境是由?接取得非固定的 IP ?,?? IP 在 ISP 方面通常?主?的以 xxx.dynamic.xxx 之?的主?名??管理,偏偏??的主?名??被主要的大型?件伺服器 (例如 hotmail, yahoo 等) ??垃圾信件, 所以你的?件主?所?出的信件?可能被??,那可就??筋了!

    所以啊,如果你想要架?一部 Mail server 的?,?『?必』向您的上? ISP 申? IP 反解的??, 不要再使用??的反解主?名?,否?很容易?致您的?件主?所?出的信件?在 Internet 上面流浪啊!

    Tips:
    其?你?是可以不用申? IP 的反解,不?就得要利用所?的 relayhost 或者是 smarthost ??理?件??的??, ??部分又涉及到上? ISP 的??,挺??!我??在後?作?明!

    需要 DNS 的 MX 及 A ??啊!
    那?我?的?件伺服器系?到底是如何使用 DNS 的????行?件的??的? ??得在 DNS 章??面?到的 MX ????????我?????? MX 代表的是 Mail eXchanger, ?一封?件要?送出去?,?件主??先分析那封信的『目?主?的 DNS 』,先取得 MX ??, 注意,MX ??可能?有多部主?喔!然後以最?先 MX 主????信?送出去。 看不懂?????,我?以底下?? DNS ?例??:
    xyz.com.vbird IN MX 10 mail.xyz.com.vbird
    xyz.com.vbird IN MX 20 mail2.xyz.com.vbird
    xyz.com.vbird IN A aaa.bbb.ccc.ddd


    假如上述的 DNS ?定是正常的,那?:

    ?有一封信要?? user@xyz.com.vbird ?,由於 MX ??最低者?先,所以?封信?先?送到 mail.xyz.com.vbird 那部主?。
    如果 mail.xyz.com.vbird 由於??原因,?致?法收下?封信?,?封信?以次要 MX 主???送,那就是?送到 mail2.xyz.com.vbird 那部主?上?;
    如果?部 MX 主?都?法??的?,那??封信?直接以 A 的??,亦即直接?送到 aaa.bbb.ccc.ddd 那? IP 上?去, 也就是 xyz.com.vbird 本身啦!
    在???程?中,你必需要注意到:mail.xyz.com.vbird 及 mail2.xyz.com.vbird 必需要是可以? xyz.com.vbird ?信的主?才行,也就是?,那?部主?通常是你公司的最上游的?件主?, ?不是你?意填?的!那?部主??需要??你的 xyz.com.vbird ??定『?件??』才行! 否?你的信?被踢掉的。

    由於?在的很多?件主??去搜? MX ?????判?目??件主?是否?合法,所以你要架? Mail server ?然不必自行?定 DNS 伺服器,不?你最好要申?一? MX 的??才行。此外,MX ??一定要?定正?,否?你的信件?可能?直接被 MX 主?踢掉。?了要?定 MX 但是我??有上??件伺服器?,所以你可以指定 MX ?自己,利用自己? MX 主?即可。

    那?你或??想,?? MX 有啥好?啊?一般??,如果目?主????,你的?件通常?直接退??原?信者, 但如果有 MX 主??,?部 MX 主??先??封信放在他的?列 (queue) ?中,等到你的目?主?重新提供?件服?後, MX 主???你的信件?送?目?主?,如此一?你的信件就比?不??失啊!???,您可以?解吧! ^_^


    Email 的位址
    ??上??? email 通常是『??@主?名?』的方式??理,?例???哥的 linux.vbird.tsai 主?上面有? dmtsai 的使用者,?我的 email ??成?:『dmtsai@linux.vbird.tsai』,?有人要寄信?我?, 他?分析 @ 後面的主?名?,亦即 linux.vbird.tsai 的 MX/A ??等等,然後再透????明的流程??出信件。 而?我的 linux.vbird.tsai 收到?封信?,他??信放到 dmtsai 的信箱?中啦!底下我?就??一???流程吧!


    --------------------------------------------------------------------------------
    ?件??所需要的元件 (MTA, MUA, MDA) 以及相??定

    在?始介??件的?送?程之前,我?先?想一想,你是如何寄出?子?件的? 假?你要寄信?一?使用者,他的?子?件是『a_user@gmail.com』好了,也就是?, 你要寄一封信到 gmail.com ??主?上的意思。 那你的桌上型?? (?例??, Windows 系?) 是否能???封信『直接』透??路送? gmail.com 那?主?上? ?然不行啦!你得要?定?你?信的?件主?才行!也就是?,你必需要先向某一部?件主???, 以取得一?合法的?子?件使用?限後,才能??送?件出去的。

    所以?,你要寄出一封信件?是需要很多介面的?忙的,底下列出一???的?示??明:



    ?一、?子?件?送的流程示意?

    我?先?解?一些?有名?吧!然後再??明?送的流程:

    MUA (Mail User Agent):
    ?名思? MUA 就是『?件使用者代理人』的意思,因?除非你可以直接利用?似 telnet 之?的??登入?件主??主??出信件,否?您就得要透? MUA ??你送信到?件主?上?去。 最常?的 MUA 像是 Mozilla 推出的 Thunderbird (雷?) 自由??, 或者是 Linux 桌面 KDE 常?的 Kmail ,及 Windows ?件的 Outlook Express (OE) 等。 MUA 主要的功能就是收受?件主?的?子?件,以及提供使用者??????件的功能!

    MTA (Mail Transfer Agent):
    MUA ?用??送?件到?件主?上,那?部?件主?如果能??用???封信寄出去,那他就是一部?件?送主? (MTA) 啦!?? MTA 就是『?件?送代理人』的意思。也??名思?一下,既然是『?送代理人』, 那?使用者寄出的信,?使用者要收信?,就是找他 (MTA) 就?啦!基本上, MTA 的功能有?些:


    收受信件:使用???件?送?定(SMTP)
    MTA 主?最主要的功能就是:??自用?端或者是其他 MTA 的?信收下?,???候 MTA 使用的是 Simple Mail Transfer Protocol (SMTP),他使用的是 port 25 啦!

    ??信件:
    如果?封信件的目的地?不是本身的用?,且?封信的相??料符合使用 MTA 的?力, 那?咱?的 MTA 就???封信再?送到下一部主?上。?即是所?的?? (Relay) 的功能。

    回?使用者的收信要求:POP 或 IMAP ?定
    使用者可以透? MTA 主?提供的?政服??定 (Post Office Protocol, POP) ?收下自己的信件, 也可以透? IMAP (Internet Message Access Protocol) ?定?自己的信件保留在?件主?上面, ??一步建立?件?料匣等??工作。

    ?之,我?一般提到的 Mail Server 就是 MTA 啦!而?格??, MTA 其??是指 SMTP ???定而已。 而?成 MTA 的 SMTP 功能的主要套件包括老牌的 sendmail ,後起之秀的 postfix ,?有 qmail 等等。 底下我??看看,那?在 MTA 上??有哪些重要的功能。

    MDA (Mail Delivery Agent):
    字面上的意思是『?件?送代理人』的意思。事?上,?? MDA 是?在 MTA 底下的一?小程式, 最主要的功能就是:分析由 MTA 所收到的信件表?或?容等?料, ??定?封?件的去向。所以?,上面提到的 MTA 的信件??功能,其?是由 MDA ?成的。 ?例??,如果 MTA 所收到的?封信目?是自己,那? MDA ???封信?他?到使用者的信箱 (Mailbox) 去, 如果不是呢?那就??要??出去了。此外,MDA ?有分析????件的功能喔!?例??:


    ??垃圾信件:
    可以根??封?件的表??料,或者是特定的信件?容?加以分析??。例如某??告信的主?都是固定的, 如『AV情色...』等等,那就可以透? MDA ????去除??件。

    自?回覆:
    如果您出差了?致某一段????法立即回信?,就可以透? MDA 的功能??件主?可以自??出回覆信件, 如此您的朋友就不???你太大牌!^_^

    各主要的 MTA 程式 (sendmail,postfix...) 都有自己的 MDA 功能,不?有些外?的程式功能更?大, ?例?? procmail 就是一???的好?手,另外 Mailscanner + Spamassassion 也是可以使用的一些 MDA 喔。

    Mailbox:
    就是?子?件信箱嘛!??的?,就是某????用的信件收受?案?。我?的 Linux 系???的信箱都是放在 /var/spool/mail/使用者?? 中! 若 MTA 所收到的信件是本?的使用者,MDA 就??信件送到? mailbox ?中去?!
    好了,那??想一想,你如何透? MUA ??信件送到?方的?件信箱 (Mailbox) 去呢?

    Step 0:取得某部 MTA 的使用?限:
    就如?一所示,我?本地端的 MUA 想要使用 MTA ??出信件?, ?然需要取得 MTA 的使用?限。通常就是?:我?必?要向 MTA ??一?可使用 email 的???密?才行。

    Step 1:使用者在 MUA 上??信件後,?送至 MTA 上?:
    使用者在 MUA 上面??信件,信件的?料主要有:

    信件??:包括寄件者的 email 以及收件者的 email 位址,?有?封信件的主旨 (subject) 等;
    信件?容:就是你要跟?方?明的?容啦!
    ??完?之後只要按下?送?,?封信就?送至你的 MTA 主?上面了,注意:是你的 MTA 而不是?方的 MTA ! 如果你?定可以使用?部 MTA 主?,那?你的?封信就?被放置到 MTA 的?列 (queue) ?中?等待?送出去了。

    Step 2.1:如果?封信的目?是本地端 MTA 自己的??
    你是可以寄信?你自己的,所以如果你的 MTA 收到?封信件的目?是自己的用??,那就?透? MDA ??封信送到 Mailbox 去?!

    Step 2.2:如果?封信目的?其他 MTA ,??始?? (Relay) 的流程:
    那如果?封信的目?是其他的主?呢????候我?的 MTA 就??始分析?封信是否具有合法的使用?限, 若具有使用?限?,?我?的 MDA ??始?行?件??,亦即?封信件?透?我?的 MTA 向下一部 MTA 的 smtp (port 25) ?送出去。如果?封信件?利的?送出去了,那??封信件就?由?列?中移除掉了。

    Step 3:?方 MTA 主?收受信件
    如果一切都?有??的?,?端的 MTA ?收到我? MTA 所?出的那封信,???信件放置到正?的使用者信箱?中, 等待使用者登入??取或下?。

    在?整??程?中,你???你的信件是由我?的 MTA ?忙?送出去的,此? MTA 提供的?定是???件???定 (Simple Mail Transfer Protocol, smtp), ?且?封信最?是停留在?方主?的 MTA 上?!?不是你朋友的 MUA 上?啊!

    Tips:
    ?何特????一??因?以前有?朋有跟我?:『?哥啊,你要寄 email ?我的?候?得跟我?, 那我下班前????著,以免你信寄不到我的信箱』,此???三??突然跑出?~很不好意思~ 所以??才要特???,你的 MUA 不必?著啦!要收信?再打?即可。

    ?解了?送信件? MTA 需要?? smtp (port 25) 之後,再?我?得要??那?封信件?方要如何接收啊?



    --------------------------------------------------------------------------------
    使用者收信?伺服器端所提供的相??定

    那使用者如果想要收信?,?然也可以透? MUA 直接???取得自己的?件信箱?的?料啊! 整??程有?像底下??:



    ?二、?子?件收信?的流程示意?

    使用者的 MUA ?透???基本?定??行信件的收受喔:POP3 及 IMAP。 我?先?一? POP3 的收信方式吧:

    MUA 透? POP3 (Post Office Protocol version 3) 的?定?接到 MTA 的 port 110, ?且?入???密??取得正?的???授?;
    MTA ???使用者??/密??有??後,?前往?使用者的 Mailbox (/var/spool/mail/使用者??) 取得使用者的信件??送?使用者的 MUA ??上;
    ?所有的信件?送完?後,使用者的 mailbox ?的?料??被?除!
    在上述的流程?中我?知道 MTA 主?必?要?? POP3 ???定才行,不????定的收件方式比?有趣, 因?使用者收信是由第一封信件?始收下直到最後一封信件??完??止。 不?由於某些 MUA 程式撰?的??, 若有些?件有病毒的可能性?,透?防毒???可能?致? MUA ??的??! 如此一?由於???有完?,因此 MTA 主??不??使用者的信件?除。 此?如果使用者又再一次的按下接收按?,呵呵!原?已接收的信件又?重?收到,而?有收到的?是收不到!

    ???候或?你可以透?登入主?利用 mail ??指令??理你有??的?件, 或??一? MUA 也是?不?的思考方向,又或者???防毒???掉也是可以考?的手段之一。 ????想一想,因? POP3 的?定????信件?除,那如果我今天在?公室?我的信收到?公室的??中, ?我回家?再度?? MUA ?,是否能?收到已?被接收的信件??然不行,?吧!

    或?你需要更有?助的?定,亦即 IMAP (Internet Messages Access Protocol) , ???定可以?你? mailbox 的?料?存到你主?上的家目?,亦即 /home/??/ 那?目?下, 那你不但可以建立?件?料匣,也可以??信件分?管理,而且在任何一?可?上?路的地方你只要登入主?, 原本的信件就?是存在?!真是好啊!

    不?,使用 IMAP ?,使用者的目?最好能?加?限制,例如利用 quota ?管理使用者的硬碟使用?限, 否?因?信件都在主?上?,如果使用者?多且?用?,你的硬碟空??被吃光光喔!注意注意!

    OK!透?上面的?明你要知道,要架?一部可以使用 MUA ?行收?信件的 MTA 伺服器,你至少也需要?? SMTP 以及 POP3 ????定才行!而????定的??程式?不相同, 所以架?上?是得要小心注意啊!



    --------------------------------------------------------------------------------
    Relay ????制的重要性

    ?你需要 MTA ?你?信寄送到下一部 MTA 去?,???作就???件?? (Relay) ?,那就是?一?中的 Step 2.2 那??作啦。 那?我??想一想,如果『所有的人都可以藉由?一部 MTA ?忙?行 Relay ?, ??情??之? Open Relay 的?作』。?你的 MTA ?生 Open Relay ?,?有什???? ??可就大了!

    ?你的 MTA 由於?定不良的???致具有 Open Relay 的??,加上你的 MTA ??是?上???路?, 由於???路上面用 port scan ??的?人太多,你的 MTA 具有 Open Relay 的功能?件事情, ??在短???就被很多人察?,此?那些不法的?告信、色情垃圾信?者??利用你的?部 Open Relay MTA ?送他?的?告,所以你??生的??至少有:

    你主?所在的?域正常使用的??速度???慢,因??路??都被?告、垃圾信吃光了;
    你的主?可能由於大量?送信件?致主??源被耗?,容易?生不明原因??之?的??;
    你的 MTA ??被???路社?定??『黑名?』,?此很多正常的?件就??法收?;
    你 MTA 所在的?? IP ??被上? ISP 所封?,直到你解??? Open Relay 的???止;
    某些用????你的能力?生?疑,?您公司或者是你?人??有信心障?!甚至可能流失客源;
    如果你的 MTA 被利用??黑函,你是找不到原?信者的,所以你?部 MTA ??被追??最?站!
    ??很大呦!所以啊,目前所有的 distributions 都一?,?乎都? MTA ?????????部?圈介面 (lo) 而已,而且也? Open Relay 的功能取消了。既然取消 Open Relay 的功能,那?怎?使用?部 MTA 的 Relay ??忙?信啊?呵呵!所以我?在上?才?一直?,你『必需』取得合法使用? MTA 的?限啊! ?也就是?,?定?可以使用 Relay 的功能就是我?管理?的任?啦!通常?定 Relay 的方法有???:

    ?定某一?特定用?端的 IP 或?段,例如?定?部 LAN 的 192.168.1.0/24 可使用 Relay;
    若用?端的 IP 不固定? (例如?接取得的非固定 IP) 可以利用???制??理。
    ???制上面常?的有 SMTP ?件???制,以及 SMTP after POP ??,不?是哪一??制, 基本上都是透??使用者?入??用的???密?,??定他有合法使用? MTA 的?限, 然後??通???者?? Relay 的支援就是了。 如此一?你的 MTA 不再?? Open Relay ,?且用?端?是可以正常的利用???制?收?信件, 身?管理?的你可就??多?! ^_^



    --------------------------------------------------------------------------------
    ?子?件的?料?容

    看?上?的?料後,您???於 Mail server 有一些程度的??了。再?要?的是, 那?一封 email 的?容有哪些部分呢?就跟人?社?的?件有信封袋以及?部的信?一?, email 也有所?的?? (header) 以及?容 (body) ?部份喔!

    email 的??部分?有??重要??,包括:?封信?自那? MTA、是由?所?送出?的、要送??、 主旨?何等等,至於?容?是?信者所填?的一些?明?。如果你使用 dmtsai 的身份下???指令:
    [dmtsai@linux ~]$ echo "HaHa.." | mail -s "from vbird" dmtsai


    然後?自己的信箱?容叫出?,如下所示:
    [dmtsai@linux ~]$ cat /var/spool/mail/dmtsai
    From dmtsai@localhost Tue Nov 21 00:33:29 2006 <==?信者 email
    Return-Path: <==之前的 MTA ?源
    X-Original-To: dmtsai <==原收件者的??
    Delivered-To: dmtsai@localhost <==最?此?件????
    Received: by localhost (Postfix, from userid 500) <==上一? MTA ?源
    id 7A9C3A26B8; Tue, 21 Nov 2006 00:33:29 +0800 (CST)
    To: dmtsai@localhost <==收件者信箱
    Subject: from vbird <==主旨
    Message-Id: <20061120163329.7A9C3A26B8@localhost> <==? MTA 看的 ID
    Date: Tue, 21 Nov 2006 00:33:29 +0800 (CST)
    From: dmtsai@localhost (VBird) <==?信者 email
    底下?信件?容
    HaHa..


    由原本的信件?容上面我?可以看到??是?部份,在??部分??了比???的收、?件者?料, 以及相?的?源、目?之 MTA ??等等。但你要注意的是,那?『Received:...』那一行?料是『???的』, 如同前面?到的 MX ??,如果一封信由 MUA ?送到 MTA 在由 MTA ?送到 MX 主?後,才?送到最?的 MTA ?, 那??? Received: 的?料????每一部?手?的 MTA ??喔! 所以你可以藉著?????料慢慢的找回?封信的??方向呢!

    此外,???件的??以及?容的分析部分,你?可以藉由某些分析????行??, ?部份我??在後?再慢慢的介??大家?解喔! ^_^!您先知道一封?件至少有?些?料, 以後咱?再慢慢的解??!



    --------------------------------------------------------------------------------
    ?件伺服器架?前提

    前面?到 mail server ? DNS 系?有很大的相?性,所以如果你想要架?一部可以?上 Internet 的?件伺服器?, 你必需要已?取得合法的 A ? MX 主?名?,而且最好反解也已?向您的 ISP 申?修改?定了, ?可是?大前提!不要忽略他!在底下的???中?哥以之前 DNS 章??的?定?依?, 主要的??是??的:

    ?件主?的主要名??: linux.vbird.tsai
    ?件主?尚有?名? www.vbird.tsai 及 ftp.vbird.tsai 也可以收?信件;
    此?件主?已有 MX ?定,直接指向自己 (linux.vbird.tsai)
    ?? linux.vbird.tsai 有? A 的??指向 192.168.1.254。
    在??的?件伺服器?定?中,上述的????是很重要的,?自行?考 DNS 章?的介?吧!



    --------------------------------------------------------------------------------
    Sendmail 伺服器的?易架?介?

    可?成上述 MTA 功能的??非常的多,不?在常?的 Linux distributions 上??主要以?十年老牌子的 sendmail (http://www.sendmail.org) 以及近期以?很??的 Postfix (http://www.postfix.org) ?主, 咱?的 CentOS 4.x ????都有提供,不?主要是以 sendmail ???的 MTA ??,所以我?首先??介?一下如何在 CentOS 4.x 上面?放 sendmail ??所有介面的方法,然後再仔?的聊一聊如何?定 Postfix 吧!


    --------------------------------------------------------------------------------
    所需要的套件?套件??

    既然 CentOS ??是以 sendmail ?主要的 MTA ??,而我?的 Linux 又需要 MTA ??? lo ??介面, 所以 sendmail ?然是已?安?好了!但是 sendmail ?需要很多?外的套件??助?理, 所以你至少也需要底下??套件才行:

    sendmail:提供主要的 sendmail 程式??定?;
    sendmail-cf:提供 sendmail.cf ???定?的??整合?料;
    m4:?助? sendmail-cf 的?料?成??可使用的?定?。
    ?三?套件是有相?性的啦,不?如果你在安?的?候?有??完整安?所以套件?,sendmail-cf 可能?有安?, 所以?自行利用 rpm 以及 yum ?查看看,?自行安?好他吧!

    ?乎所有的 sendmail 相??定?都在 /etc/mail/ 目?下,主要的?定?基本上有?些:

    /etc/mail/sendmail.cf (/usr/sbin/sendmail 的?定?)
    ?就是 sendmail 的?定?!所有跟 sendmail 有?的?定都是靠他?完成的!不?,???定?的?容真不是?人看的, ?哥也老是看的『?煞煞』搞不懂!所以建?您不要?意手?修改???案啊!咦!?定?又不?人改, 那怎??理?外的?定?目啊? 就交?程式?我?修改啊!所以才需要 sendmail-cf ??套件嘛!看下去就知道了。

    /usr/share/sendmail-cf/cf/*.mc
    ?些?案是 sendmail.cf ???定?的?????料,上面不是?不要直接手?修改 sendmail.cf ?, 那如果你想要?理 sendmail.cf 的?,就得要透???目?下的???案??先???定?料?! ?然啦,?些?????料?案必需要透? m4 那?程式???才行喔!

    /etc/mail/sendmail.mc (由 m4 指令??)
    是的是的!就是他!我?利用 m4 那?指令?通?指定的?????案?重建 sendmail.cf , 就是藉由???案??定?理的!那我???要如何透????案?重建 sendmail.cf 呢? ??的?,你可以?考底下???:



    ?三、利用 m4 ???重建 sendmail.cf

    透? m4 ??理即可,我?要作的就是修改 sendmail.mc 就好了,????。

    /etc/mail/local-host-names
    你的 MTA 能不能?信收下?????定有?,?哥的?例?中主?名?有三? (linux.vbird.tsai, www.vbird.tsai, ftp.vbird.tsai),?三?主?名?得都要?入???案?中才行喔! 否???造成例如: dmtsai@linux.vbird.tsai 可以收信,但是 dmtsai@www.vbird.tsai ?不能收信的?象, ?然??? email 位址都是?送到同一部主?,不?你的 MTA 能不能收下?位址的信件,是需要?定的喔!

    /etc/mail/access.db (/etc/mail/access, 利用 makemap ?理)
    用??定是否可以 Relay 或者是能否接收信件的?料??案!由於???案是?料?, 所以我?必需要『修改 /etc/main/access ?使用 makemap ??指令?建立 access.db ?案』才行! ???案很重要的,我??部 LAN 可以使用???定???放 Relay 的?限呢!

    /etc/aliases.db (/etc/aliases, 利用 newaliases ?理)
    我?可以建立『信箱?名』喔!假?你有一?使用者??? dmtsai ,他?想要使用 dermintsai ?????收信, 你不需要再建立一? dermintsai 的??,直接在???案?面?定一??名,?寄? dermintsai 的信件直接?到 dmtsai 的信箱去即可!由於是?料?,所以你是需要『修改 /etc/aliases ?透? newaliases ?重建??案』才行喔!

    /var/spool/mqueue/ (可用 mailq ?察)
    ??就是 sendmail 的?件?列,?一封信被 MTA 收下後,就?被放置到???等待 MDA 的?理。 如果?封信件是本???,那?就?被挪到 /var/spool/mail/使用者?? 去,然後移除?封信件。 如果?封信件需要 Relay ,那??信件?送到下一部 MTA 後,信件?料就?自?列中移除。 不??一封信??寄不出去?,?信件就?先被?放在??,?等待????送出去。 如果你想要知道目前?列??放的信件?料,可以?入 mailq ?查?喔!
    好了,再??我?修改 sendmail ?? MTA ,?她可以?上 Internet 吧!



    --------------------------------------------------------------------------------
    ?放 sendmail 的??介面?收信主?名??定

    事?上我?的 CentOS ??已???了 sendmail 了,只是他只?接受?自本?的 MTA 要求! 不相信??做一下底下的??吧!

    例?:
    ?列出目前你的主?上面,所有在?? tcp/udp ?中的埠口?服?的???料
    答:
    直接利用 netstat 就能?列出?了,?哥的主?可以列出?些?料:
    netstat -tulnp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 16856/sshd
    tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 8036/sendmail: acce


    在上面的例??中你可以??到 port 25 是由 sendmail 所??的,而且『只?? 127.0.0.1 ?? lo 介面』喔! 所以我?的重??然就是如何???的介面??到整? Internet 上,否?他是?法接收?自 Internet 的信件的啦! 我?知道?定?在 /etc/mail/sendmail.cf ,但不要手?改他,你??要修改的是 sendmail.mc ???案啦! ???案的?定?目基本?法是??的:

    ?定元件(`?定?目', `??一', `??二')
    每??定?目???左?使用的是?字?1左?那?按? (quote) ,右??是?引?,?搞?喔! ???案的?定?目你可以?考底下的???明:

    http://linux.vbird.org/linux_server/0380sendmail.php
    http://www.sendmail.org/m4/readme.html
    我???只要改一?地方即可,其他的可以使用??值就好了喔!
    1. 修改 sendmail.mc 的??
    [root@linux ~]# vi /etc/mail/sendmail.mc
    # 找到底下?一行:
    DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
    # ?他改成??即可:
    DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl

    2. ?份?的?定??料
    [root@linux ~]# cd /etc/mail
    [root@linux mail]# mv sendmail.cf sendmail.cf.back1

    3. ?始建立新的 sendmail.cf ?定?
    [root@linux mail]# m4 sendmail.mc > sendmail.cf


    ?你?理完?之後,重新?? sendmail ??查一下 smtp 的??埠口看看:
    [root@linux ~]# /etc/init.d/sendmail restart

    [root@linux ~]# netstat -tlunp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 8517/sendmail: acce


    瞧!??的介面?於?整? Internet ?放了!???候理?上你的 MTA 已??始?作?! 而我?的 MTA 既然已??? Internet ???了,所以自然你的主?名?得要?定正?才行! 否?主???只?接受『localhost』??主?名?的信件而已?!我?可以??做:
    [root@linux ~]# vi /etc/mail/local-host-names
    linux.vbird.tsai
    www.vbird.tsai
    ftp.vbird.tsai

    [root@linux ~]# /etc/init.d/sendmail restart


    改?完?後?得要重新?? sendmail 才?正式的生效喔! 每一行有一?主?名?!??住,未?如果您的主?新增了不同的主?名?, ?且你希望?主?名?可以用?收?信件,那?要修改 local-host-names !那?什??候不要?所有的主?名?都?他?到?? local-host-names ?面去呢?

    由於目前的?告信件?在是太多了,他??主?的在 Internet 上面搜?一些主?名?, 然後??四??送垃圾?件。如果您的主?有四?名?,每?主?名?都?到 local-host-names 去的?,很可能一封?告信您?『收到四次』,因?四?主?名?嘛!所以?! 有的?候?是不要?全部的主?名?都可以收信是比?好的?!



    --------------------------------------------------------------------------------
    ?放使用 MTA Relay ?限?定 /etc/mail/access

    根??一的流程分析?中,我?知道一? MTA 最主要的功能就是『收信』?『信件??, Relay』, 上一?小?提到收信的部分主要???介面以及主?名?有?,那能否使用 Relay 的能力呢? ?就是我?所需要?解的啦!

    在 Sendmail 的??情?下只有 sendmail 伺服器本? (localhost) 可以?行信件??的功能, 其他任何用?端都?法使用?部 MTA 的!也就是?,除非你在?部 MTA 上面使用 mail ??指令, 或者是使用 X Window ?的 MUA ??信,其他的非本?用?都?有 relay 的能力。 哇!那??部 MTA ?有啥用途啊?所以啊, 我?必?要??用?端的 Relay 功能?行?放才行!???定得要很小心, 免得你的 MTA ?成 Open Relay 的不良??啊!

    sendmail 使用 /etc/mail/access ???案??定?放 Relay 或者是抵? Relay 的功能, ???案?的格式基本上是??的:

    ??的??或?? Sendmail的?作
    IP/部分IP/主?名/Email等 RELAY/DISCARD/REJECT
    在????位之?最好使用按??作?分隔,假?我要??部的 192.168.1.0/24 ???域, ?有 140.116.44.202 ?部主?,以及在教育部 (ncku.edu.tw) 所管?的?域之主?名?都能使用?部 MTA 的?, 你可以???定的:
    [root@linux ~]# vi /etc/mail/access
    localhost.localdomain RELAY
    localhost RELAY
    127.0.0.1 RELAY
    192.168.1 RELAY
    140.116.44.202 RELAY
    .edu.tw RELAY

    [root@linux ~]# cd /etc/mail
    [root@linux mail]# makemap hash access.db < access
    # 上面???作在『?作出 hash 格式的?料?』,? man makemap 即可?解。


    做了???作後,整??部?域以及外部的其他固定 IP 主?就能?使用你的 MTA ??行 Relay ?!不?非固定 IP ?是?有?困?就是了。不?不打?,我??可以利用其他??方式??放使用?限的。 更多的 access 用法我??在 Postfix 的章??中?行介??! 在??你先知道可以??玩即可喔! ^_^

    Sendmail 的?定到此後,你的 MTA 已?可以收受信件,也可以接受?部或特定 IP 的 Relay 信件, 其他更多的?定方式?可以?考 sendmail 的官方?站吧!?然啦,由於 postfix 本?就是用於相容 sendmail 的, 所以底下??介?的 postfix 的相??定方法,你也可以用在 sendmail 上??! 重?的不再?!????看下去吧!


    --------------------------------------------------------------------------------
    用 Postfix ?成 MTA 功能

    Sendmail 真是?很棒的 MTA 伺服器,不?他也有若干的缺?,包括早期的程式漏洞???致的主?安全性缺失; ?有 sendmail ?所有的功能都?合在 /usr/sbin/sendmail ??程式?中,?致程式太大可能?有效能方面的疑?; 以及完全不具有?和力的?定? sendmail.cf .....,所以後?才?有??小巧效能又棒的 postfix 出?啊!


    --------------------------------------------------------------------------------
    Postfix 的?生

    Postfix 是由 Wietse Zweitze Venema 先生(http://www.porcupine.org/wietse)所?展的。早期的 mail server 都是使用 sendmail 架?的,?真的是『?此一家,??分?!』!不?,Venema 博士?得 sendmail ?然很好用,但是?竟不?安全,尤其效能上面?不十分的理想,最大的困?是....sendmail 的?定? sendmail.cf 真的是太?懂了!?於?管人???,要?定好 sendmail.cf ???案,真不是人作的工作。

    ?了改善?些??, Venema 博士就在 1998 年利用他老大在 IBM 公司的第一?休假年?行一???:『 ??一?可以取代 sendmail 的??套件,可以提供?站管理?一?更快速、 更安全、而且完全相容於 sendmail 的 mail server ??!』?????真的成功了! 而且也成功的使用在 IBM ?部,在 IBM ?可以?是完全取代了 sendmail ???件伺服器!在????成功之後, Venema 博士也在 1998 年首次?出??自行?展的?件伺服器,?定名? VMailer。

    不?, IBM 的律????一件事,那就是 VMailer ??名字?其他已??的商?很?似, ??可能?引起一些??上面的困?。?了避免????,所以 Venema 博士就????件??名?改? Postfix !『Post ?在什?什?之後』的意思,『fix ?是修?』的意思,所以 postfix 有 『在修?之後』的意思。

    ?哥?人??, Venema 先生最早的?想?不是想要『?造一?全新的 Mail server ??,而是想要?造一?可以完全相容於 sendmail 的??』,所以, Venema 先生??他自行?展的????是『改良 sendmail 的缺失』,所以才?? Postfix 吧!取其意?: 『在 sendmail 之後的改良的?件伺服器??!』

    所以啦, Postfix ??的理念上面,主要是??『想要完全相容於 sendmail』所??出?的一款『?在部分完全新?』的一??件伺服器??。就是由於??理念,因此 Postfix 改善了 sendmail 安全性上面的??,改良了 mail server 的工作效率, 且??定??容更具?和力!因此,你可以?易的由 sendmail ??到 Postfix 上面!?也是?初 Venema 博士的最初?想啊!

    就是基於???想,所以, Postfix 在外部?定?案的支援度,? sendmail ?乎?有??,同?的支援 aliases ???案,同?的支援 ~/.forward ???案,也同?的支援 SASL 的 SMTP ?件??功能等等! 所以,呵呵!????一?怎?架? Postfix ??相?出色的?件伺服器吧! ^_^



    --------------------------------------------------------------------------------
    所需要的套件?套件??

    相?於 sendmail ?需要 m4 以及 sendmail-cf , Postfix 要??太多了!你只要安? postfix 即可。 不?我?的 CentOS ?然同?提供 sendmail ? postfix ,不??哥?不建???者?存喔! 因此你在安?完 postfix 之後,?得? sendmail ?他移除一下比?妥?一些些! 所以你可以??做:
    [root@linux ~]# /etc/init.d/sendmail stop
    [root@linux ~]# yum install postfix
    [root@linux ~]# rpm -e sendmail
    [root@linux ~]# /etc/init.d/postfix start


    因? Linux 系?至少需要一? MTA ??系??部的??可以?送?件,所以你必?要先安? postfix 後才可以移除 sendmail 喔!?序可不要搞?了!否??跑出一堆相依?性的??哩! 那? postfix 有哪些重要的?定?呢?他主要的?定?都在 /etc/postfix/ ?中, ??的?案?容就?我????:

    /etc/postfix/main.cf
    ?就是主要的 postfix ?定??,?乎所有的?定??都是在???案???的! ???案??就是一?完整的?明?了,你可以?考???案的?容就?定好?於你的 postfix MTA 呢! 只要修改????案,?得要重新?? postfix 喔!

    /etc/postfix/master.cf
    主要?定了 postfix 每?程序的?作??,也是很重要的一??定?。 不????案??已?很 OK 了,通常不需要更改他。

    /etc/postfix/access (利用 postmap ?理)
    ? sendmail 的 /etc/mail/access 具有相同的用途,可以?定?放 Relay 或拒???的?源或目?位址等??。 不????案要生效?需要在 /etc/postfix/main.cf ?????案的用途才行。 且?定完?後需要以 postmap ??理成??料??案呢!

    /etc/aliases (利用 postalias 或 newaliases 均可)
    不同的 distributions ???案放置的目?可能不太一?,在 CentOS ?中?了完全相容於 sendmail ? postfix , 所以???案??放在 /etc/ ?中,其他版本?可能放置到 /etc/postfix 目?中喔! ???案的用法? sendmail 完全相同喔!
    至於常?的?行??有底下?些:

    /usr/sbin/postconf (查? postfix 的?定?料)
    ??指令可以列出目前你的 postfix 的???定?料,包括系???值也?被列出?, 所以?料量相?的?大!如果你在 main.cf ?面曾?修改?某些????的?,想要?列出非??值的?定?料, ?可以使用『postconf -n』????即可。

    /usr/sbin/postfix (主要的 daemon 指令)
    此? postfix 的主要?行?,你可以??的使用他???或重新?取?定?:
    [root@linux ~]# postfix check <==?查 postfix 相?的?案、?限等是否正?!
    [root@linux ~]# postfix start <==?始 postfix 的?行
    [root@linux ~]# postfix stop <==?? postfix
    [root@linux ~]# postfix flush <==?制?目前正在?件?列的?件寄出!
    [root@linux ~]# postfix reload <==重新?入?定?,也就是 /etc/postfix/main.cf


    要注意的是,每次更?? main.cf 後,?必重新?? postfix ,可??的使用『postfix reload』即可。

    /usr/sbin/postalias
    ?定?名?料?的指令,因? MTA ?取?料?格式的?案效能?佳,所以我?都?? ASCII 格式的?案重建??料?。 在 postfix ?中,??指令主要在?? /etc/aliases 成? /etc/aliases.db ?!用法?:
    [root@linux ~]# postalias hash:/etc/aliases
    # hash ?一??料?的格式,然後那? /etc/aliases.db 就?自?被更新?!



    /usr/sbin/postcat
    主要用在?查放在 queue (?列) ?中的信件?容。由於?列?中的信件?容是? MTA 看的, 所以格式?不是一般我?人?看的懂的文字?料。所以???候你得要用 postcat 才可以看出?信件的?容。 在 /var/spool/postfix ?有相?多的目?,假??有一??案名? /deferred/abcfile , 那你可以利用底下的方式?查???案的?容喔:
    [root@linux ~]# postcat /var/spool/postfix/deferred/abcfile



    /usr/sbin/postmap
    ??指令的用法? postalias ?似,不?他主要在?? access ???案的?料?啦!用法?:
    [root@linux ~]# postmap hash:/etc/postfix/access



    /usr/sbin/postqueue
    ?似 mailq 的?出?果,例如你可以?入『postqueue -p』看看就知道了!
    整? postfix 的套件??大致上是???子的,接下??我?先???的?理一下 postfix 的收?信件功能吧!



    --------------------------------------------------------------------------------
    ? Postfix 可?? Internet ?收?信件

    同?的,咱? CentOS 4.x 的 postfix 依????支援本?介面的 smtp 服?而已, 所以如果你要?整? Internet ?放的?,就得要努力的搞定????的?定?! 而?乎所有的?定你都可已?由 /etc/postfix/main.cf ???案搞定!???案的?容你需要注意的是:

    『#』符?是?解的意思;
    所有?定值以?似『??』的?定方法??理,例如 myhostname = linux.vbird.tsai ,?注意等?的??要?予空白字元喔,且第一?字元不可以是空白,亦即『my..』要由行首?起;
    可以使用『 $ 』?延伸使用???定,例如 myorigin = $myhostname,?等於 myorigin = linux.vbird.tsai;
    如果???支援??以上的?料,?使用空白字元?分隔,不?建?使用逗?加空白字元『, 』??理。 例如: mydestination = $myhostname, $mydomain, www.vbird.tsai,意指 mydestination 支援三??料?容之意。
    可使用多行?表示同一??定值,只要在第一行最後有逗?,且第二行???空白字元, 即可??料延伸到第二行????;
    若重??定某一?目,?以?晚出?的?定值??!
    要?你的 postfix 可以收?信件?,你必需要??的?定?料有底下?些喔:


    myhostname:?定主?名?,需使用 FQDN 喔
    ???定?目在於?定你的主?名?,且???定值被後?很多其他的??所引用,所以必?要?定正?才行。 你??要?定成?完整的主?名?。在?哥的?????中,我?的主?名?? linux.vbird.tsai, 所以??定好他吧:
    [root@linux ~]# vi /etc/postfix/main.cf
    myhostname = linux.vbird.tsai


    除了???定值之外,?有一? mydomain 的?定?目,???目???取 myhostname 拿掉第一?『.』以前的主?名?, 而?定出 domain name 。?例??上??定完?後,??的 mydomain 就是 vbird.tsai ?!你也可以自行?定他。 基本上????定值只是被用?引用的,你只要?定正?即可。


    myorigin :?信?所?示的『?信源主?』?目
    ???目在?定『?件??上面的 mail from 的那?位址』, 也就是代表本 MTA ?出去的信件?以此?定值??喔!如果你在本?寄信?忘?加上 Mail from 字?的?, 那?就以此值??了。?????目以 $myhostname ?主的,所以:
    myorigin = $myhostname



    inet_interfaces :?定 postfix 的??介面 (?重要)
    在??的情?下你的 Postfix 只???本?介面的 lo (127.0.0.1) 而已,如果你想要??整? Internet 的?, ??放成??外的介面,或者是?放?全部的介面,常?的?定方法?:
    inet_interfaces = all


    由於如果有重??定?目?,?以最晚出?的?定值??,所以?你?定?『inet_interfaces = all』?,?? inet_interfaces = localhost 那一行?解掉啊!


    mydestination :?定『能?收信的主?名?』 (?重要)
    ???定?目很重要喔!他就像 sendmail ?的 local-host-names 一?, 你的主?能?收下?的信件中,Mail to ?的主?名?必?要在???定值?中出?才行。 在我??????中?部主?有三?名字,linux.vbird.tsai, www.vbird.tsai 及 ftp.vbird.tsai 都需要?入喔!
    mydestination = $myhostname, localhost.$mydomain, localhost,
    www.vbird.tsai, ftp.vbird.tsai


    瞧?否?如果想要?同一??定?成?行?,前一行最後最好使用逗?『 , 』?隔??佳。 因? $myhostname 已?是 linux.vbird.tsai 了,所以不必改?。另外,如果你? sendmail 的 local-host-names 情有??而想要??使用??案?,可以??做:
    mydestination = /etc/postfix/local-host-names


    然後在??案?加入所有你想要加入的主?名?即可!一般??,不建?你?外建立 local-host-names ???案啦, 直接?入 main.cf 即可?!特?留意的是,如果你的 DNS ??的?定有 MX ??的?,那??? MX 指向的那?主?名?一定要?在?? mydestination ?, 否?很容易出????息喔!特?的?他注意?一?! 一般??,使用者最常?生??的地方就在???定??呢!


    mynetworks_style :?定『信任?域』的一?指?
    ???定值在?定『?主?在同一??域的可信任用?端』的意思!?例??,?哥的主? IP 是 192.168.1.254,如果我相信整??域?路? (192.168.1.0/24) 的用?的?,那我可?定此?定值?『 subnet 』?! 不?,一般??,因?底下的 mynetworks ?取代???定值, 所以不?定也?有??喔!如果要?定的?, 最好?定成? host 即可 (亦即?信任?部 MTA 主?而已)。
    mynetworks_style = host



    mynetworks :?定信任的用?端 (?重要)
    你的 MTA 能不能?忙?行 Relay ????定值最有??!?例??,我要?放本???部?域的 IP ?, 就可以???行?定:
    mynetworks = 127.0.0.0/8, 192.168.1.0/24


    ??得我?在 sendmail ?是以 access ??行 relay 的?定吧? 那如果你想要延????案的?定呢?那?哥可以建?你?上述的?料改?成??:
    mynetworks = 127.0.0.0/8, 192.168.1.0/24, hash:/etc/postfix/access


    然後你只要再建立 access 之後重整成?料?後,嘿嘿!就能??定 Relay 的用??!


    relay_domains :??可以?忙 relay 的下一部 MTA 主?位址
    相?於 mynetworks 是??『信任的用?端』而?定的,?? relay_domains ?可以??『??下游 MTA 主?』而?定的。?例??,如果你?部主?是 mail.kiki.vbird.tsai 的 MX 主??, 那你就得要在 relay_domains ?定??整? kiki.vbird.tsai ???域的目?信件?行??才行。 在??的情?下,???定值是 $mydestination 而已啦。

    你必需要注意的『Postfix ???不??? MX 主?的信件』,意思就是?:如果你有?部主?,一部是上游的 MTAup ,一部是下游的 MTAdown ,而 MTAdown ??的 MX 主?是 MTAup,由 DNS 的 MX ?定值?信件??方向我?知道任何想要寄? MTAdown 主?的信件, 都?先?? MTAup ???才行!此?如果那部 MTAup ?有??? MTAdown ?行 relay 的?限?, 那?任何?? MTAdown 的信件?『全部都被 MTAup 所退回』!?此 MTAdown 就?法收到任何信件了。

    上一段的?明?您特?再想一想,因?如果你在大公司服?而且你的公司上、下游均有 mail server ?, ?且也有?定 MX 的??下,嘿嘿!?? relay_domains 就很重要啦!上游的 MTA 主?必需要?????定。 一般??除非你是某部 MTA 主?的 MX 源?,否????定?目可以忽略不?定他。 而如果你想要?你的用?端??信件到某部特定的 MTA 主??,???定?目也是可以?定的啦。 ???您保留??值即可。
    relay_domains = $mydestination



    alias_maps :?定?件?名
    只要指定到正?的?案去即可,???定值可以保留??值啊:
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases



    在?解上述的?定後,以?哥的?例?看的?,我有更??的?定值以及相??案是???理的:
    [root@linux ~]# vi /etc/postfix/main.cf
    myhostname = linux.vbird.tsai
    myorigin = $myhostname
    inet_interfaces = all
    mydestination = $myhostname, localhost.$mydomain, localhost,
    www.vbird.tsai, ftp.vbird.tsai
    mynetworks = 127.0.0.0/8, 192.168.1.0/24, hash:/etc/postfix/access
    relay_domains = $mydestination
    # 其他的?定值就先保留??值即可啊!

    [root@linux ~]# postmap hash:/etc/postfix/access
    [root@linux ~]# postalias hash:/etc/aliases


    然後?????啦!你可以???理喔:
    1. 先?查?定?的?法是否有??
    [root@linux ~]# postfix check <==如果?有出?任何?息,表示?有??。

    2. ????察 port number
    [root@linux ~]# /etc/init.d/postfix restart
    [root@linux ~]# netstat -tlunp | grep ':25'
    tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 20850/master


    很??吧!??就?定妥?了,你的 Postfix 已?可以?放用?端?行??,?且也可以收受信件?! 不?,到底在??的情?下我?的 postfix 可以收下哪些信件?又可以??哪些?定值的?容?行??呢? ?就得要?考下一小?的?明了。



    --------------------------------------------------------------------------------
    信件?送流程?收信、relay 等重要?念

    我想,您?於 MTA 的?定?收?信件??有一定程度的概念了,不?要妥善?定好你的 MTA ?, 尤其是想要?解到整部 MTA 是如何收、?信件?,你最好?是要知道『我?部 MTA 如何接受?源主?所??的信件,以及?信件??到下一部主?去』的整?流程啊。 一般??一封?件?送????多的流程?:

    送信端?收信端?部主???先??一?握手 (ehlo) 的?段,此?送信端被????信?源(而不是 mail from)。 通?握手後就可以?行信件?? (header) 的?送;

    此?收信端主??分析??的??,若信件之 Mail to: 主?名??收信端主?,且?名?符合 mydestination 的?定,??信件??始被收下至?列,??一步送到 mailbox ?中; 若不符合 mydestination 的?定,??止??且不??行信件?容 (body) 的?送;

    若 Mail to: 主?名?非?收信端本身,??始?行?? (relay) 的分析。

    ???程首先分析?信件的?源是否符合信任的用?端 (??用?端?步? 1 所??的?信主?喔) ,亦即?源是否符合 mynetworks 的?定值, 若符合??始收下信件至?列中,?等待 MDA ?信件再??出去,若不符 mynetworks ???下一步;

    分析信件?源或目?是否符合 relay_domains 的?定,若符合?信件?被收下至?列,?等待 MDA ?信件再??出去;

    若?封信的???料都不合乎上述的??,??止??,?不?接受信件的?容?料的。
    整?流程有?像底下??:



    ?四、?件??方向

    也就是???分析通?後,你的信件?容才??始上?到主?的?列,然後透? MDA ??理?信件的流向。 而不是?信件完整的?送到主?後才?始分析的喔!??得要特?注意?!而透?上述的流程後, 在?不考? access 以及 MDA 的分析?制中,一部 MTA 想要正?的收、?信件?,?子?件必需要符合:

    收信方面:必需符合底下需求:
    ?信端必需符合 $inet_interfaces 的?定;
    信件??之收件者主?名?必需符合 $mydestination 的?定, 或者收件主?名?需要符合 $virtual_maps (???主?有?) 的?定;


    ??方面:必需符合底下需求:
    ?信端必需符合 $inet_interfaces 的?定;
    ?信端?源必需? $mynetworks 的?定;?信端?源或信件??之收件者主?名?符合 $relay_domains 之?定?容。
    同?的原理?想法你可以?他用在 sendmail 的?定?中喔! ^_^!不?很多垃圾信?是藉由????的收?管道??送, 怎??呢??看底下的分析:

    例?:
    在我的主?上面竟然????的?告信,那就是『利用我的主??送?告信?我自己!』?什???也可以呢?
    答:
    首先,你必需要熟悉一下上述的流程,在第 2 ?步??中我?知道,?主?收到一封信且?封信的目?是自己,?且也符合 mydestination 的?定?,?信件就?被收下?而不必??用?端是否?自於 mynetworks 了。所以?,任何人都可以用??流程?寄信?你啊。不?,你的 MTA ?不是 open relay 啦,不??人家?送?告信的,不用?心。

    例?:
    我的主?明明?有 Open relay ,但很多其他的 MTA 管理??信?我,?我的主?的某???持??送?告信,但是我的主?明明?有那???啊!?是怎?回事?
    答:
    仔?看一下流程的步? 1 ? 2 ,???封信能否被收下???信端及收信端主?名?有?。而我?知道在?件的 header ?面?有一? mail from 的???定?目,?????定是我?在查??件?看到的『回?位址』,???料是可以?造的!而且他?收?信件的?料??!所以,您??要告知?方 MTA 管理?,?他提供??的 log ?料,才能?判??封信是否由你的主?所?送出去的。

    一般??,目前的?告?者很多都是利用??欺?的方式??理的,所以您必需要??方提供??的 log file ?料以供查?才行喔!



    --------------------------------------------------------------------------------
    ?定?件主?使用?限????制 /etc/postfix/access

    基本上,指定了 Postfix 的 mynetworks 就能??使用者 relay 了,不?如果你依照?哥上述的方式??定你的 mynetworks 的?,那?我??可以利用 access ???案??外管理我?的信件??呢! 基本的 access ?法再?明一次:

    ??的??或?? Postfix 的?作
    IP/部分IP/主?名/Email等 ACCEPT/REJECT
    假?你想要? 140.116.44.202 ?有 .edu.tw 可以使用?部 MTA ???信件,且不? av.com 以及 192.168.100.0/24 ???域的使用?,可以??做:
    [root@linux ~]# vi /etc/postfix/access
    140.116.44.202 ACCEPT
    .edu.tw ACCEPT
    av.com REJECT
    192.168.100 REJECT
    # ACCEPT 表示可接受,而 REJECT ?表示拒?。

    [root@linux ~]# postmap hash:/etc/postfix/access


    用???案?定最大的好?是,你不必重新?? postfix ,只要??料?建立好,立刻就生效了! 不????案的???定?需要 main.cf ?的其他??有?定才行!如果只是之前 $mynetworks 的?定值?, 你只能利用上述的方式??放 relay 的能力。不?,至少他可以?我?的?定?化?! ^_^



    --------------------------------------------------------------------------------
    ?定?件?名

    想一想,你的主??面不是有很多系?????例如 named, apache, mysql..., 那?以?些???行的程式若有?息?生?,他????息以 email 的方式???? 原?上是?? root ??管理?。不?,?啥??? root 啊??是因?其他的系?????有密?可登入, 自然也?有接收?件的必要。所以若有?件就?系?管理??。不?,咱?的 MTA 怎?知道?些信件要?? root ? ?就得要 aliases ???件?名?定???理啦!

    在你的 /etc/aliases ?案?,你????似底下的字?:
    [root@linux ~]# vi /etc/aliases
    mailer-daemon: postmaster
    postmaster: root
    bin: root
    daemon: root
    adm: root
    ....底下省略....


    左?是『?名』右?是『??存在的使用者??或者是 email address』!就是透????定值, 所以?我?可以?所有系???所?的信件通通?? root 啊!好,我??在?他?大化,假如你的 MTA ?有一???的??名?? dmtsai ,??使用者?想要使用 dermintsai ??名??收他的信件, 那?你可以??做:
    [root@linux ~]# vi /etc/aliases
    dermintsai: dmtsai
    # 左?是你?外所?定的,右??是??接收?封信的??!

    [root@linux ~]# postalias hash:/etc/aliases


    ?此之後不?是 dmtsai@linux.vbird.tsai ?是 dermintsai@linux.vbird.tsai 都??信件?到 /var/spool/mail/dmtsai ??信箱?中喔!很方便吧!


    ?系?管理?的一般??可接收 root 的信
    假?你是系?管理?,而你常用的一般??? dmtsai ,但是系?出??的重要信件都是寄? root 啊, 偏偏 root 的信件不能被直接?取....所以?,如果能??『? root 的信也?寄一份? dmtsai 』的?, 那就太好了!可以?到???然可以!你可以??做:
    [root@linux ~]# vi /etc/aliases
    root: root,dmtsai
    # 信件??? root ? dmtsai ?????!

    root: dmtsai
    # ?此 root 收不到信了,都由 dmtsai ?接受!

    [root@linux ~]# postalias hash:/etc/aliases


    上面那?行你可以?一使用,看看 root 要不要保留他的信件都可以的!其???一?, 你的 dmtsai 可以收到 root 的信,且 root 自己也可以『?份』一份在他的信箱?,比?安全啦!


    ?送群?寄信功能
    想像一?情?,如果你是?校的老?,你?然只?一班,但是『每年都一班』?,如果有一天你要?信??所有的?生, 那在? email 的???,可能就??昏昏的了!???候你可以??做: (假?主?上?生的??? std001, std002... )
    [root@linux ~]# vi /etc/aliases
    student95: std001,std002,std003,std004...

    [root@linux ~]# postalias hash:/etc/aliases


    如此一?只要寄信到?部主?的 student95 ??不存在的???, ?封信就?被分?存到各?????去,管理上面是否很方便啊! ^_^


    事?上,?件?名除了填?自己主?上面的??用?之外,其?你可以填?外部主?的 email 喔! 例如你要?本?的 dermintsai 那?不存在的用?的信件除了?? dmtsai 之外,?要外?到 dmtsai@mail.kiki.vbird.tsai ?,可以??做:
    [root@linux ~]# vi /etc/aliases
    dermintasi: dmtsai,dmtsai@mail.kiki.vbird.tsai

    [root@linux ~]# postalias hash:/etc/aliases


    很方便吧!更多的功能就期待您自行?掘?!



    --------------------------------------------------------------------------------
    ?件?? ~/.forward

    ?然 /etc/aliases 可以?我??到?件?名?定的好?,不? /etc/aliases 是只有 root 才能修改的?案?限, 那我?一般使用者如果也想要?行?件???,那?如何是好????,可以透?自己家目?下的 .forward ???案喔! ?例??,我的 dmtsai ????所接收到的信件除了自己要保留一份之外,?要??本?上的 vbird 以及 dmtsai@mail.kiki.vbird.tsai ?,那你可以??做?定:
    [dmtsai@linux ~]$ vi .forward
    # 注意!我的身份?在是 dmtsai ??一般身份,而且在他的家目?下!
    dmtsai
    vbird
    dmtsai@mail.kiki.vbird.tsai

    [dmtsai@linux ~]$ chmod 644 .forward


    ?得???案?容是一行一??? (或 email) ,而且?限方面非常重要:

    ??案所在使用者家目??限,其 group、other 不可以有?入?限。
    .forward ?案?限,其 group、other 不可以有?入?限。
    如此一??封信就??始???!有趣吧! ^_^



    --------------------------------------------------------------------------------
    察看信件?列??

    ???,?定到此?止咱?的 postfix ??可以?付一般小型企?之 mail server 的用途了! 不?,有的?候?竟因??路的??或者是?方主?的??,可能?致某些信件?法送出而被?存在?列中, 那我?如何?解?列?中有哪些?件呢??有,在?列?中等待送出的信件是如何送出的呢?

    如果?封信在五分?之??法寄出,?通常系???出一封『警告信』?原?信者, 告知?封?件尚?法被寄送出去,不?,系?仍?持?的??寄出?封?件;
    如果在四小?候仍?法寄出,系??再次的?出警告信?原?信者;
    如果持??行五天都?法?信件送出,那??封?件就?退回?原?信者了!
    ?然啦,某些 MTA 已?取消了警告信的寄?,不?原?上,如果信件?法即?寄出去的? MTA ?是?努力?? 5 天的,如果接下?的 5 天都?法送出?,才??原信件退回??信者。 一般??,如果 MTA ?定正?且?路?有???,??是不可能?有信件被放在?列?中而?不出去的, 所以如果??有信件在?列?,?然得要仔?的瞧一瞧?!?查?列?容的方法可以使用 mailq , 也可以使用 postqueue -p ??查的:
    [root@linux ~]# postqueue -p
    Mail queue is empty


    若您的?件如此?示?,恭喜您,?有什????件在?列?中。不?如果你? postfix ??, ????一封信?任何人,那就可能?出?如下的?面啦:
    [root@linux ~]# /etc/init.d/postfix stop
    [root@linux ~]# echo "test" | mail -s "testing queue" root
    [root@linux ~]# postqueue -p
    postqueue: warning: Mail system is down -- accessing queue directly
    -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
    9C2D1A26AC 71 Thu Nov 23 14:59:31 root
    root

    -- 0 Kbytes in 1 Request.
    # 第一行就?明了?法寄出的原因? Mail system is down 啦!
    # 然後才出??法寄出的信件??!包括?源?目?喔!


    ?出的??主要?:

    Queue ID:表示此封?件?列的代表? (ID),????是? MTA 看的,我?看不懂不要?;
    Size :?封信有多大容量 (bytes) 的意思;
    Arrival Time:?封信什??候?入?列的,?且可能??明?法立即?送出去的原因;
    Sender/Recipient:送信?收信者的?子?件?!
    事?上?封信是放置在 /var/spool/postfix ?面,由於信件?容已????? MTA 看的?料排列, 所以你可以使用 postcat ??出原信件的?容喔!例如??做 (注意看?名? Queue ID 的??!): [root@linux ~]# cd /var/spool/postfix/maildrop
    [root@linux maildrop]# postcat 9C2D1A26AC <==???名就是 Queue ID
    *** ENVELOPE RECORDS 9C2D1A26AC *** <==?明?列的??啊
    sender_fullname: root <==底下????信者大名? email
    sender: root
    recipient: root <==收信者??的意思啊!
    *** MESSAGE CONTENTS 9C2D1A26AC *** <==底下?是信件的?容喔!
    To: root
    Subject: testing queue

    test
    *** HEADER EXTRACTED 9C2D1A26AC ***
    *** MESSAGE FILE END 9C2D1A26AC ***


    如此一?你就知道目前我?的 MTA 主?有多少未送出的信件,?有未送出信件的?容你也可以追?的到了! 很不?,?吧!不?,如果你想要我?的 postfix 立刻????些在?列?中的信件寄出去,那又?如何是好? 你有??作法啦,可以重新?? postfix ,也可以透? postfix 的?作??理,例如:
    [root@linux ~]# /etc/init.d/postfix restart
    [root@linux ~]# postfix flush


    ?哥?人比?建?使用 postfix flush ?!自行?考看看先! ^_^



    --------------------------------------------------------------------------------
    ?定 relay 的??功能 smtpd_recipient_restrictions

    我?在前??介??一封?件?入 MTA ??信件是否?被接受的??大原?, ?有? postfix ?定值相?的??重要??。事?上一封?件在 postfix ?面能否被?? (relay) ? /etc/postfix/main.cf ?面的 smtpd_recipient_restrictions ???定值有?啦! ???定值??不存在於 main.cf ?中,你可以使用『 man 5 postconf 』找到???定值的?明。

    smtpd_recipient_restrictions 就字面上的意思??是『SMTPD ?? daemon 的接受者 (就是自己啊) 之限制』, 所以???定?目可以指定『?要 relay ?,MTA ??要?考什??定值;以及?要接受本?信件?, ??要?考哪些?定?目』的意思, 在??的情?下???定值只有???目,分?是『 permit_mynetworks, reject_unauth_destination 』, 是有『?序』之分的喔!

    上述的????值最?造成前面提到的信件?送流程啦! 不?有?你可能需要添加??新功能,?例??,你想要? Internet 上面的任何一? IP 都可以透?你的 MTA ?寄信?,那得要??所?的 SMTP ???制,此?你就得要?????制?入???定???中才行! 另外,如果你想要拒?黑名?的?源?目?主?,那也是得要在????後面加入?外的?料啊! ?之,你需要?????很?解就是了!更多相?的功能我??在後?加以介?的啦!



    --------------------------------------------------------------------------------
    ?你的 MTA 接受 MUA 的?信要求:POP/IMAP等?定

    不管你的 MTA 使用的是 sendmail ?是 postfix ,你?是得要配合 POP3/IMAP ??提供使用者端?收信的?定才行! 在早期的系??中, POP3 使用的是 imap ??套件提供的功能,不?近?提供此一?定的套件很多, 每?系?都可能不太相同。?例??,咱?的 CentOS (Red Hat 系?) 使用的是?舍 (dovecot) ??套件, 至於 SuSE ?提供 qpopper ??套件?。

    ????的 POP3 是很??的啦,你得要先?定已?安?了 dovecot ????。 而????的?定?只有一?,就是 /etc/dovecot.conf 。我??要?? pop3 而已, 所以可以???定即可:
    [root@linux ~]# vi /etc/dovecot.conf
    # 找到底下?一行,大?是在第 14 行左右的地方
    #protocols = imap imaps
    # ?他改成底下???子:
    protocols = pop3

    # 找到底下?一行,大?是在第 22 行左右的地方
    pop3_listen = [::]
    # 如果只想要接受 IPv4 的位址,?他改成底下???子:
    pop3_listen = *


    改完之後你就可以?? dovecot ?!?且?查看看 port 110 有?有??啊?
    [root@linux ~]# /etc/init.d/dovecot start
    [root@linux ~]# netstat -tlnp | grep ':110'
    tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 25335/dovecot


    耶!搞定!??就可以提供使用者?收?信件啦!真是不?啊!不??得喔,我?只提供基本的明? pop3 ??而已, 如果想要??其他如 pop3s (??加密?制) ?定?,就得要?外的?定?! 接下??我?看看用?端如何使用我?的?件伺服器吧~ ^_^



    --------------------------------------------------------------------------------
    用?端的收?信?? (MUA)

    ?定 Mail server 不是拿?好看的,?然是要好好的?用他?!?用 mail server 有??主要的方式, 你可以直接登入 Linux 主??操作 MTA ,?然也可以透?用?端的 MUA ???收?信件, 底下我?分?介????方式?!


    --------------------------------------------------------------------------------
    Linux mail

    在 Unix like 的作?系??中都?存有一支可以?行收?信件的??,那就是『 mail 』??指令。 ??指令是由 mailx ??套件所提供的,所以您得要先安???套件才行。 另外,由於 mail 是 Linux 系?的功能,所以即使你的 port 25 (smtp) ?有??, 他?是可以使用的,只是?封?件就只?被放到?列,而?法寄出去?!^_^!底下我???一?最??的 mail 用法吧


    用 mail 直接??文字?件?寄信

    mail 的用法很??,就是利用『 mail [email address] 』的方式??信件寄出去, 那? [email address] 可以是?外的?件位址,也可以是本?的??。如果是本???的?,可以直接加??名?即可。 例如:『 mail root 』或『 mail somebody@his.host.name 』。如果是?外寄信的?候, 信件??的『 Mail from 』就?填? main.cf ?那? myorigin ??的主?名??! 先??看看吧!寄? dmtsai@linux.vbird.tsai 先:
    [root@linux ~]# mail dmtsai@linux.vbird.tsai
    Subject: Just test <==??填?信件??
    This is a test email. <==底下?信件的?容!
    bye bye !
    . <==注意,?一行只有小??!代表?束?入之意!
    Cc: <==密件副本啦!


    ??就可以?信件寄出去了!另外,早期的 mail server 是可以接受 IP 寄信的,?例??: mail dmtsai@[192.168.1.254] ,?得 IP 要用中括?包起?。不?由於受到垃圾?件的影?, ?在??方式?乎都?法成功的?信件寄出了。


    利用已??理完?的『?文字?』寄出信件

    ?可不是『附件??』的方式!因?在 mail ??程式?面??信件是?很痛苦的差事, 你不能?按上下左右??回到????有??的地方,很??筋。此?我?可以透????入??理! 如果你忘?『 < 』代表的意?,?回到基???篇?中的 Bash shell 章?好好瞧瞧先。 ?例??你要?家目?的 .bashrc 寄??人,可以??做:
    [root@linux ~]# mail -s 'My bashrc' dmtsai < ~/.bashrc



    ?始接收信件

    寄信?比???,那?收信呢?同?的收信?是使用 mail。直接在提示字元之後?入 mail ?,?主?的捉取使用者在 /var/spool/mail 底下的?件信箱 (mailbox),例如我 dmtsai ????在?入 mail 後,就?? /var/spool/mail/dmtsai ???案的?容?出???示到?幕上,?果如下:
    [root@linux ~]# mail
    Mail version 8.1 6/6/93. Type ? for help.
    "/var/spool/mail/dmtsai": 1 message 1 unread
    >U 1 root@linux.vbird.tsai Fri Nov 24 11:34 32/764 "My bashrc"
    & <==??是 mail ??的提示字元,可以?入 ? ?察看可用指令


    在上面的?面中,?示 dmtsai 有一封信,且?附上?信件的?信者???及收信??等。 你可以用的指令有?些:

    ?信: (直接按 Enter 或?入?字後 enter)
    有看到『>』那?符?吧!那表示目前 mail 所在的?件?位,你可以直接?入 Enter 即可看到?封信件的?容! 另外,你也可以在『&』之後的游?位置?入??,就可以看?封信件的?容了! (?:如果持?按 Enter ,??自『 > 』符?所在的?件逐次向後?取每封信件?容!)

    ?示??: (直接?入 h 或?入 h ?字)
    如果要重新?示每封信的??,可以?入 h 即可;

    回覆?件: (直接?入 R )
    如果要回覆目前『 > 』符?所在的?件, 直接按下『R』即可?入??前面介??的 mail 文字???面?!你可以??信件後?回去?!

    ?除?件: (?入 d ?字)
    按下『 d## 』即可?除?件!例如我要?除掉第 2 封?件,可以?入『d2』如果是要?除第10-50封?件,可以?入『d10-50』??除喔! ??得,如果有?除?件的?,?? mail box ?,要使用『q』才行!

    ?存?件到?案: (?入 s ?字 ?名)
    如果要??件?料存下?,可以?入『 s ## filename』,例如我要?上面第一封?件存下?,可以?入『 s 1 uuencode 』即可?第一封?件?容存成 uuencode ???案!

    ?? mail: (?入 q 或 x )
    要?? mail 可以?入 q 或者是 x ,?注意『?入 x 可以在不更? mail box 的情?下?? mail 程式,不管你??有?有使用 d ?除?料;使用 q 才???除的?料移除,?且??所有已??的信件?容?存到你家目?下的 mbox ?案!』也就是?,如果你不想更? mail box 那就使用 x 或 exit ??,如果想要使??移除的?作生效,就要使用 q 啦!不?,使用 q 之後,只有未?的信件才?保留在 /var/spool/mail/accout ?面,其他已?的?料都?被存入 ~/mbox ?中!例如 /home/dmtsai/mbox ??存 dmtsai 已??的信件!

    ?求?助:
    ?於 mail 更??的用法可以?入 help 就可以??目前的 mail 所有功能!
    上面是?易的 mail 收信功能!不?,如果?? mail ?按下 q ,不是?有信件?存到 ~/mbox ???件信箱??那?我要如何?取???案?的信件?料呢?可以??的使用??方式??取:
    [root@linux ~]# mail -f ~/mbox



    以『附件??』的方式寄信

    前面提到的都是信件的?容,那?有?有可能以『附件』的方式????案? 是可以的,不?你需要 uuencode ??指令的?忙,在 CentOS ?中??指令?於 sharutils ,?先利用 yum ?安?他吧!接下?你可以??使用:
    [root@linux ~]# [利用 uuencode ?? ] | [利用 mail 寄出去]
    [root@linux ~]# uuencode [???案] [信件中的?名] | mail -s '??' email

    ?例一:? ~/.bashrc 以附件??的方式寄? dmtsai
    [root@linux ~]# uuencode ~/.bashrc bashrc | mail -s 'test encode' dmtsai


    ??就能寄出去了,不?,如果收下?封信件呢?同?的我?得要透?解?器?解?啊! 你得先???案存下?,然後??做:
    [root@linux ~]# mail
    Mail version 8.1 6/6/93. Type ? for help.
    "/var/spool/mail/dmtsai": 2 messages 2 unread
    >U 1 root@linux.vbird.tsai Fri Nov 24 11:34 32/764 "My bashrc"
    U 2 root@linux.vbird.tsai Fri Nov 24 11:52 24/904 "test encode"
    & s 2 test_encode
    "test_encode" [New file]
    & exit

    [root@linux ~]# uudecode test_encode -o decode
    加密? ?出?



    ?然 mail ??指令不是挺好用的,不?至少他可以提供我?在 Linux ?文字模式下的一???的收?信件功能! 我?最好?是熟悉一下吧! ^_^



    --------------------------------------------------------------------------------
    Linux telnet

    ??的 mail 也算是一支??的??在?行收?信件,那如果你想要直接透? smtp 以及 pop3 ?收?信件呢? 其?你可以透? telnet 的功能?直接??到?服?上?! 不?,因?完全得要敲?指令??理,所以底下的??真的?做??考用啦!
    先???寄信看看:
    [root@linux ~]# telnet localhost 25
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    220 linux.vbird.tsai ESMTP Postfix
    ehlo localhost <==?行握手!很重要!
    250-linux.vbird.tsai <==底下?本 SMTP 服?所提供的功能
    250-PIPELINING
    250-SIZE 10240000 <==?封信件的最大容量!
    250-VRFY
    250-ETRN
    250 8BITMIME
    mail from: "VBird"<dmtsai@linux.vbird.tsai> <==?定?源位址
    250 Ok
    rcpt to: <root@linux.vbird.tsai> <==?定收信位址
    250 Ok
    data <==?定?容撰??始
    354 End data with .
    This is a test mail <==?始??容啦!
    Just test ! bye bye!
    . <==??不要忘?的一?小??!
    250 Ok: queued as CC8CFA26AC
    quit


    ??就能??信放置到?列?中,?且等待寄出啦!比?麻?的是你必需要手??入 header ? body 的所有?目, 包括『mail from:』『rcpt to:』等等,且在????定值後方的 email 必需要以括?圈起?,例如:

    MAIL FROM: usersname<userid@hostname.domainname>
    MAIL FROM: "users name"<userid@hostname.domainname>
    另外?多 MTA 目前都?限制再使用 MAIL FROM ?要先使用 HELO或者是 EHLO 先打招呼?,要不然?不允??行後??通。 好了,那?直接收信呢?可以??做!
    [root@linux ~]# telnet localhost 110
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    +OK dovecot ready.
    user dmtsai <==?入你的??啊!
    +OK
    pass your_password <==?入你的密?啊!
    +OK Logged in.
    list <==列出你有的信件啊!
    +OK 3 messages: <==底下?信件的?料,共有三封
    1 912
    2 1016
    3 675
    .
    retr 2 <==?始接收第二封信件?容之意
    +OK 1016 octets
    ....信件?容?出省略....
    quit <==?? telnet ?
    +OK Logging out.


    ??就能?透? telnet ??到本?上??行收、?信件的功能了!不?,真是不好用啊! 所以我?底下?介?一?可以跨平台的?窗介面??,??一套就好了, 因?他是跨平台,所以您可以在任何作?系?上面使用?套好用的咚咚?!



    --------------------------------------------------------------------------------
    Thunderbird 好用的跨平台 (Windows/Linux X) ??

    自由??最大的好?之一就是???大多可以?行移植,也就是在任何作?系?上面?乎都能??行???的意思。 因此??自由??的好?就是,你不必因???作?系?而??不同的操作?境! ?件使用者介面?? (MUA) 也有自由??了!那就是 Mozilla 基金?推出的 ThunderBird (雷?) ??好用的咚咚, 你可以在底下的?址上面找到繁?中文的套件:

    http://moztw.org/thunderbird/
    有?於目前用?端?是以 Windows 作?系??大宗,所以底下的?明主要是在 Windows XP (sp2) 上?的安???定?主。?然目前 (2006/12) 最新的 Thunderbird 已?出到 1.5.x 了, 不?繁?中文版更新的速度似乎?法跟的上,所以?哥底下以可以捉到的最新繁?中文版, 亦即 1.0.6 ??版本?作?介??。

    在你下?原始的安??案後,直接??下?的?案就??入安?的?面了。 安?真是太??了!就是一直?他『下一步』而已,最後有?『?上?行 Thunderbird 』, 你可以??他,然後就?出?是否要?入『Outlook Express』或者是『Outlook』等其他?件代理人程式已?建立的???料, 如果您?未建立????料,那???地方可以略?,如果你要?系?上面已?存在的 OE ?料?他?移到雷?上, 就???入吧!不??哥??假????有使用? OE,所以??不?入任何?料。



    ?五、Thunderbird 的使用


    Tips:
    事?上 Outlook Express ?? Windows ??的?件收???在比?大量的?件收??程?中, 偶而?出?一些??的??,尤其是?案大於 2GB 以上以及常常?除一些?用的信件, ?忘??行 OE 所?的『??』?,?造成挺?重的??,最?重的情?下您所有的信件都可能??失。 使用上必需要特?小心一些操作行?。您可以玩一玩雷?,比?一下?者的差?喔!

    由於 Thunderbird 可以提供多???的下?,所以我?必?要自行指定所需要的???料才行。 如下?所示,我?指定的是 Email 的??喔!??他,然後?他下一步吧!



    ?六、Thunderbird 的使用

    首先要你填?的?不是??的???料,而是你想要『收信者看到的?於你的??』而已。 在『大名』的部分可填?你的??或??大名;在 Email 位址??填?希望?方『回信?的 email 』。 其???就是?件 Header 部分的『 Mail from: "大名" 』啦! 你得要注意的是,如果 email 填???,收件者直接『回信』?,??法寄?正?的地方喔!



    ?七、Thunderbird 的使用

    再?才是重要的收、?信件的?件主?所在?,你可以在收件伺服器及伺服器名?部分填?主?名?, ?然也可以直接填? IP 的啦!一般在 LAN ?的 private IP ?哥都使用 IP ?填?而已?! ^_^



    ?八、Thunderbird 的使用

    你要用什????收信啊???真的不能??了喔!



    ?九、Thunderbird 的使用

    底下的??名?其?只是一?提醒的名字而已,所以你可以直接使用 email ?作?????的提示名?即可。



    ?十、Thunderbird 的使用

    如果如下所示,一切都?有???,就按下那?『立即下??件』?且按下『完成』吧!



    ?十一、Thunderbird 的使用

    最??果?於出?啦!就是底下的?子!左?是一些信匣,右?上方?是各?信件的??, 右?下方?是??的信件?容啊!



    ?十二、Thunderbird 的使用

    更多的 Thunderbird 使用就?自行?考?上的?明文件?玩玩吧! 不?很?啦!?常用 Outlook express 的朋友??,你??得他根本? OE 就是一模一?嘛! 操作操作也就熟悉?! ^_^



    --------------------------------------------------------------------------------
    ?件主?的???定:

    Sendmail 常常被?成『安全性很差的?件伺服器!』?然, Sendmail 官方?站也很不?的回??『 其?, Sendmail 的???自於一些"?死的"?案?限?定??的??! 』也就是?,其? sendmail 常常?因?『系?管理?』?定?案或者目?不良的情?下,?致 Mail Server ?生???!其?不止 sendmail ,?大部分的?路伺服器都有????啊! 所以,底下我?就??一?? Mail server 有?的安全性?其他相?的安全方面?定吧!


    --------------------------------------------------------------------------------
    一些?定?所需要注意的『?限』??

    ?部份我?以 Sendmail 官方?站的建???明喔!其?也?用於 postfix 的啦! 其中,大部分是在於『目???案?限』的?定要求上面:

    ??定 /etc/aliases ???案的?限,?能由系?信任的???修改,通常其?限? 644 ;
    ??定 Mail server ?取的?料? (多半在 /etc/mail/ 或 /etc/postfix/ 底下的 *.db ?案),例如 mailertable, access, virtusertable 等等,?能由系?信任的使用者?取,其他一概不能?取,通常?限? 640 ;
    系?的?列目? (/var/spool/mqueue 或 /var/spool/postfix) ?允?系??取,通常?限? 700 ;
    ??定 ~/.forward ???案的?限也不能?定成?任何人均可查?的?限,否?您的 e-mail ?料可能?被?取~
    ?之,一般用?能?不用 ~/.forward ? aliases 的功能,就不要使用!
    不?整?的使用上?是需要身??站管理?的您多?心啊!



    --------------------------------------------------------------------------------
    ??的?告信抵??制: postgrey 的?作

    早期的?告信很多都是藉由僵??? (已?被?作跳板但管理???有??或?有?理的主?) ??送的, ?些僵???所?送的信件有?很明?的特色,就是『他只????送?封?子?件一次, 不?有?成功,?封信就算?出去了,故?信件?被移出?列中。』 不?,合法的 mail server ?作流程就如之前分析的一般,在?件?法?利寄出???件???放置到?列中一段??, ?一直???信件寄出的?作,??直到五天後若?是?法寄出才??信件退回。

    根???合法?非法的?件伺服器?作流程而?展出一套所?的曙光 (postgrey) ??, 您可以?考底下的???明??理????:

    http://isg.ee.ethz.ch/tools/postgrey/
    http://www.postfix.org/SMTPD_POLICY_README.html
    基本上 postgrey 主要的功能是在???信?源而已,若?信?源同一封信第一次寄??, postgrey ???抵?他,?且??源位址??起?,在? 5 分?後,若?信件又??一次?, ??信件?被收下?。如此?可以杜?非??件伺服器?次?送的??喔! ^_^! 但?於你?定合法的主??可以?放所?的『白名? (whitelist) 』??先通?而不抵?。 所以?,他主要是???行的:(?考http://projects.puremagic.com/greylisting/whitepaper.html)

    ???信?源是否在白名?中,若是?予以通?;
    ??收信者是否在白名?中,若是?予以通?;
    ?定?封信是否已?被??起?呢?放行的依?是:

    若?此信件的??,???信位址??起?,??信件退回;
    若有此信件的??,但是??的??尚未超?指定的?? (?? 5 分?) ,?依?退回信件;
    若有信件的??,且????已超?指定的??,?予以通?;
    整??程??的??就是??而已。不??了要快速的?成 postgrey 的『??』能力,所以?料?系?又是不可避免的?西。 且 postgrey 是由 perl ?成的,你可能也需要加入很多相依的 perl 模?才行。 ?的??,你需要的??至少要有:

    BerkeleyDB: 包括 db4, db4-utils, db4-devel 等套件:
    Perl: 使用 yum install perl 即可;
    Perl 模?: perl-Net-DNS 是 CentOS 本身有提供的,其他?有提供的可以到 http://rpmfind.net/去搜?下?。
    除了可以使用 yum ?安?的套件之外,其他的套件?哥底下作了??,你可以直接下?看看:

    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-BerkeleyDB-0.31-1.el4.rf.i386.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-IO-Multiplex-1.08-3.el4.rf.noarch.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Net-Server-0.94-1.el4.rf.noarch.rpm
    http://www.lfarkas.org/linux/packages/centos-4/i386/RPMS/postgrey-1.27-0.noarch.rpm
    ?下?的?四? RPM ?他使用 rpm -ivh *.rpm 就能?一口?的安?上去了。然後你就可以???? postgrey 看看?:
    [root@linux ~]# /etc/init.d/postgrey start
    [root@linux ~]# netstat -anlp | grep grey
    unix 2 ...中?省略... /var/spool/postfix/postgrey/socket


    由於 postfix 必需要??到 postgrey ??行一些名?的??,然而?者??的方式除了?路 IP 之外, ??的 Unix socket 也是可以??上的!由於?? socket 不需要?外???路??的埠口, ?哥????也比?符合本??自的操作,所以我?使用?一版 postgrey 的?? unix socket ??接?。 接下?我?必需要修改 postfix 的 main.cf 了!?你??做吧:
    [root@linux ~]# vi /etc/postfix/main.cf
    # 如果你曾??定?底下???定值,?找到他?修改!否??自行增加底下的字?:
    smtpd_recipient_restrictions =
    permit_mynetworks
    reject_unauth_destination
    check_policy_service unix:/var/spool/postfix/postgrey/socket
    # 重?是最後面那一行!就是指定使用 unix socket ??接到 postgrey 之意。
    # 後?我??有一些?告信的抵??制,特?建?您??? postgrey 的?定值?在最後,
    # 因?他可以算是我?最後一???的?制喔!

    [root@linux ~]# /etc/init.d/postfix restart
    [root@linux ~]# chkconfig postgrey on


    然後你可以自己?外部主?寄一封信?自己?部?件伺服器看看,?得去登???查一查 (/var/log/maillog), ???出??似的字眼:

    Nov 27 15:17:09 linux postfix/smtpd[16132]: NOQUEUE: reject: RCPT from sun.linux.tsai[192.168.1.101]: 450 <dmtsai@linux.vbird.tsai>: Recipient address rejected: Greylisted, see http://isg.ee.ethz.ch/tools/postgrey/help/linux.vbird.tsai.html; from=<dmtsai@sun.vbird.tsai> to=<dmtsai@linux.vbird.tsai> proto=ESMTP helo=

    ?表示 postgrey 已??始?利?作了!?且?源主?的相???也已???在 /var/spool/postfix/postgrey/ 目?下?!如此一?您的 postfix ?可以透? postgrey ??掉一些莫名其妙的?告信?!

    不? postgrey 也是有缺?的,怎??呢?因? postgrey ???先?信件退回去, 所以你的信件就可能??生延?的??,延?的??可能是?分?到?小?, 端看你的 MTA ?定而定。如果你想要?『某些信任的?件主?不需要?? postgrey 的抵??制』?, 就得要?放白名??!

    白名?的??也很??啊,直接?? /etc/postfix/postgrey_whitelist_clients ???案即可。 假?你要??哥的?件主?可以自由的?信寄到你的 MTA 的?,那?你可以在???案?加入?一行:
    [root@linux ~]# vi /etc/postfix/postgrey_whitelist_clients
    mail.vbird.idv.tw
    sun.linux.tsai
    # ?主?名???去吧!

    [root@linux ~]# /etc/init.d/postgrey restart


    如果你?有更多信任的主?的?,?他?入???案?中!那他就可以略? postgrey 的分析?! 更??的用法就得要靠您自己去?掘?! ^_^



    --------------------------------------------------------------------------------
    ?於黑名?的抵??制

    ??得前面?到的 Open Relay 的??吧?你的主?可千?不能成? Open Relay 的??,否??你的?路?『信用』影?很大喔!一般??,只要是 Open Relay 的?件主?都?被列入黑名??中, 例如台?地?的???路黑名?以及???路社?上提供的黑名??料?:

    http://140.111.1.22/tanet/spam.html
    http://cbl.abuseat.org/
    既然黑名??料??面的 mail server 本身就是有??的?件主?,那??黑名??面的主?想要跟我的 mail server ???,我?然可以『合理的?疑?信件是有??的!』您?是吧! 所以?自黑名?或者是要送至黑名?的信件最好是不要接受啦!

    您?然可以自行前往??站?有??的主?列表?他加入自己的?件主?抵??制?中, 不?就是不太人性化!既然???路社?已?提供了黑名??料?了,我?就可以利用???料??抵?嘛! 在?定是否?行 Relay 之前,先要求我?的 postfix 前往追?黑名?的?料?, 若目?的 IP 或主?名?是黑名?的一?,?我?就??信件拒??!

    Postfix ?定黑名???真的很??,你只要??做即可:
    [root@linux ~]# vi /etc/postfix/main.cf
    smtpd_recipient_restrictions =
    permit_mynetworks
    reject_unauth_destination
    reject_rbl_client cbl.abuseat.org
    reject_rbl_client bl.spamcop.net
    reject_rbl_client cblless.anti-spam.org.cn
    reject_rbl_client sbl-xbl.spamhaus.org
    check_policy_service unix:/var/spool/postfix/postgrey/socket

    [root@linux ~]# /etc/init.d/postfix restart


    上表?中的特殊字?部分『reject_rbl_client』是 postfix ?的一??定?目, 後面可以接???路上提供的黑名?!您得要注意的是,??黑名??料?可能?持?的??, ?您先以 dig 的方式?查每??料?是否真的存在,如果存在才加以?定在您的主?上?啊! (因????路上?很多文?所提供的黑名??料?似乎已?不再持?服?的?子!)


    ?查你的?件伺服器是否在黑名??中?
    既然黑名??料?所??的是不受?迎的?源?目? MTA ,那?您的 MTA ?然最好不要在??料?中嘛! 同??些?料?通常也都有提供??的功能,所以你也可以用?功能??查你的主?是否『??有案』呢? 你可以???理的:

    是否已在黑名??料?中:
    ??的方法很??,直接到『http://cbl.abuseat.org/lookup.cgi 』?入您的主?名?或者是 IP ,就可以?查是否已?在黑名??中;

    是否具有 Open Relay:
    如果要??你的主?有?有 Open Relay ,直接到『http://140.111.1.22/tanet/spam.html 』????, 在????的最下方可以?入你的 IP ??查,注意喔,不要使用?人的 email IP ?! 此??主???出一封 mail 的??信看看你的 mail server ?不?主?的代?, 然後??果回??您。要注意的是,回?的??可能有??的??,如果出????,??整? big5 ??即可。

    如何移除:
    如果被?查出,您的主?已?在黑名??中,那??立刻? Open Relay 的功能??,改善你的 Mail Server 之後,你可能?要到各?主要的 Open Relay ?站?行移除的工作。如果是???路的?, ??您?位的管理???。至於一般常?的黑名??料??通常?主?的?您移除,只不?需要一些??的??就是了。
    ?之您必?要?定你不在黑名??中,且最好?黑名?的?源?拒?掉!搞定! ^_^



    --------------------------------------------------------------------------------
    ?放 SMTP 身份??之 relay ?制

    在?一的流程?中,由 MUA 透? MTA ?寄?信件? (具有 Relay 的?作?) ,理?上 MTA 必需要?放用?端?源才行,?就是?啥我?必需要在 main.cf ???定 smtpd_recipient_restrictions 那??定?目的原因了!不?人?有不方便的?候,?例??, 如果你使用的是?接制的 ADSL 所以每次取得的 IP 都非固定,那如何使用你的 MTA ? 很麻?,?吧!???候 SMTP ??或?有??助。

    ?於 SMTP ??的使用前面已?稍微提?了,重?在於 MUA 想要使用 MTA ??行 relay 的?候,MTA ?要求 MUA ??入??用的???密?,以取得使用的?限就是了。 咱?的 CentOS 已?有提供?建的??模?,那就是 Cyrus SASL ??套件的?忙啦!

    Cyrus SASL (http://cyrusimap.web.cmu.edu/) 是 Cyrus Simple Authentication and Security Layer 的??,他是一??助的套件。 在 SMTP ??方面, Cyrus 主要提供了 saslauthd ??服???行??密?的比??作! 也就是?:?有任何人想要?行?件??功能?, Postfix ??? saslauthd ?其代??查??密?,若比?通??允?用?端?始?寄信件。

    好了,如果你想要使用最??的方式??行 SMTP ??功能的?,在 CentOS ?中你??要??做:

    安? cyrus-sasl, cyrus-sasl-devel, cyrus-sasl-plain, cyrus-sasl-md5 等套件;
    ?? saslauthd ??服?;
    ?定 main.cf ? postfix 可以? saslauthd ??;
    用?端必需要在寄信??定『?件主???』功能。
    如此一?用?端才能??? SMTP AUTH 喔!?於??安?方面,?使用 yum 直接安?吧! 不再多?唆!底下我?由?? saslauthd ??服??始吧!


    --------------------------------------------------------------------------------

    ?? saslauthd 服?
    saslauthd 是 Cyrus-SASL 提供的一???密?比?管理?制,?然他只能利用??的 PLAIN ?制?行密???, 不?在?定上????。 saslauthd 可以??很多??密?管理?制,包括 LDAP, PAM, SASLDB2 以及 SQL ?料?系?等等。如果我?想要直接使用 Linux 系?上面的使用者??, 也就是 /etc/passwd, /etc/shadow 所??的??密?相????,可以使用『 shadow 』???制, ?然也能使用『 pam 』啦!更多的 saslauthd ??至主?的?制?『 man saslauthd 』?查?吧。

    saslauthd 的??真是好??,首先你必需要??密?管理?制,??可以使用底下的方式?理:
    1. 先?解你的 saslauthd 有支援哪些密?管理?制:
    [root@linux ~]# saslauthd -v
    saslauthd 2.1.19
    authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap
    # 上列的特殊字?部分就是有支援的!我?要用 Linux 本?的使用者??,
    # 所以用 shadow 即可。

    2. ?定??使用的?制
    [root@linux ~]# vi /etc/sysconfig/saslauthd
    MECH=shadow
    # ?也是??值,有的朋友喜? pam ?制,也可以啦!

    3. 那就??吧!
    [root@linux ~]# /etc/init.d/saslauthd start
    [root@linux ~]# chkconfig saslauthd on


    之後我?必需要告知 Cyrus ??咚咚使用的服?? saslauthd 才行,?定的方法很??:
    [root@linux ~]# vi /usr/lib/sasl2/smtpd.conf
    log_level: 3 <==登????等?的?定,?定 3 即可
    pwcheck_method: saslauthd <==就是??什?服????密?的比?啊
    mech_list: PLAIN LOGIN <==那?支援的?制有哪些之意!


    因? saslauthd ??就?支援明???而已,我?可以使用 mech_list 列出特定支援的?制。 而且 saslauthd 是?很??的??密?管理服?,你?乎不需要?行什??外的?定, 直接??他就生效了!真是好方便! ^_^



    --------------------------------------------------------------------------------

    main.cf 的?定?目:
    那我?的 postfix ?如何?理呢?其??定真的很??,只要??做就好了:
    [root@linux ~]# vi /etc/postfix/main.cf
    # 在本?案最後面增加?些?定?料:
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_security_options = noanonymous
    broken_sasl_auth_clients = yes
    # 然後找到跟 relay 有?的?定?目,增加一段允? SMTP ??的字?:
    smtpd_recipient_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination
    reject_rbl_client cbl.abuseat.org
    reject_rbl_client bl.spamcop.net
    reject_rbl_client cblless.anti-spam.org.cn
    reject_rbl_client sbl-xbl.spamhaus.org
    check_policy_service unix:/var/spool/postfix/postgrey/socket

    [root@linux ~]# /etc/init.d/postfix restart


    各??目的意?是??的:

    smtpd_sasl_auth_enable
    就是?定是否要?? sasl ??的意思,如果?定??後 postfix ?主?去?入 cyrus sasl 的函式?, 而?函式??依? /usr/lib/sasl2/smtpd.conf 的?定???到正?的管理???密?的服?, 那就是咱?的 saslauthd ?!

    smtpd_sasl_security_options
    ???目指的是『要取消哪些登入的方式』的意思。我?可以取消匿名登入的可能性, 所以?定? noanonymous 即可。由於 saslauthd 使用的是 plaintext ,所以你可不能?定 noplaintext 喔! 留意留意!

    broken_sasl_auth_clients
    ??是??早期非正? MUA 的?定?目,因?早期????商在?? MUA ??有?考通??定??, 所以造成在 SMTP ???可能??生的一些困?。?些有??的 MUA 例如 MS 的 outlook express 第四版就是??! 後?的版本???有????。所以???定值你也可以不要?定!

    smtpd_recipient_restrictions
    最重要的就是??啦!我?的 sasl ??可以放在第二行,在?域?路??可信任?域的後面加以??。 上表的?定意?是:?域?路?的 MUA 不需要??也能??行 relay ,而非???的其他?源才需要?行 SMTP ??之意。
    ?定完?也重新?? postfix 之後,我?先???看看是否真的提供??了?
    [root@linux ~]# telnet localhost 25
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    220 vbird.vbird.idv.tw ESMTP Postfix
    ehlo localhost
    250-linux.vbird.tsai
    250-PIPELINING
    250-SIZE 10240000
    250-VRFY
    250-ETRN
    250-AUTH LOGIN PLAIN <==你必需要看到底下??行才算?啊!
    250-AUTH=LOGIN PLAIN
    250 8BITMIME
    quit
    221 Bye





    --------------------------------------------------------------------------------

    用?端的?定
    用?端也需要?定向 MTA 主??送 SMTP ??的功能才行!作法很??啦,我?依?以 Thunderbird ?作?介?,?打? thunderbird ,??『工具』-->『???定』後?出?如下?面:



    ?十三、用?端???制所需要??的?目

    ?得在上? 2 所指的地方,?使用者??及密??目勾?,?且不使用安全?? (因? saslauthd ?支援明???而已) ,??就 OK 啦!然後你??寄出一封信看看,瞧瞧是否有?利的通???啊? ?得此用?端不要在?域?路?,否??不?????的?段,因?我?的?定以信任?域??先嘛!

    如果一切都?利的?,那??用?端以 SMTP ????,你的登?????出??似底下的?息才是:
    [root@linux ~]# tail -n 100 /var/log/maillog | grep PLAIN
    Nov 28 15:27:21 linux postfix/smtpd[23060]: EFCC9A26CB: client=unknown
    [192.168.100.25], sasl_method=PLAIN, sasl_username=dmtsai





    --------------------------------------------------------------------------------
    基?的?件???制

    在整封信的?送流程?中,用?端若通?主?的重重限制後,最???可以到??件?列?中。 而由?列?中要送出去或者是直接送到 mailbox 就得要透? MDA 的?理。MDA 可以加?很多?制呢! 尤其是他可以??某些特殊字眼的?告信件或病毒信件呢! MDA 可以透?分析整封信件的?容 (包括??以及?文) ??取有??的??字,然後?定?封信的『命?』?!

    咱?的 postfix 已?有?建可以分析??或者是?文的???制了,那就是 /etc/postfix/ 目?下的 header_checks 以及 body_checks ????案啊!在??的情?下????案不?被 postfix 使用, 你必需要用底下的?定??用他:
    [root@linux ~]# vi /etc/postfix/main.cf
    header_checks = regexp:/etc/postfix/header_checks
    body_checks = regexp:/etc/postfix/body_checks
    # 那? regexp 代表的是『使用正?表示法』的意思啦!

    [root@linux ~]# touch /etc/postfix/header_checks
    [root@linux ~]# touch /etc/postfix/body_checks
    [root@linux ~]# /etc/init.d/postfix restart


    接下?你必需要自行?理 header_checks 以及 body_checks 的???定,在?定前?您??『 你?於正?表示法是熟悉的 』才行!因?很多??都必需要透?正?表示法??理啦!然後?始?定的依?是:

    只要是 # 代表?行??解,系?或直接略?;
    在??的???中,大小?是??相同的;
    ??的?定方法?:

    /??/ ?作 ?示在登???面的?息
    ?注意,要使用??斜?『 / 』???包起?喔!??例子??明:例如我想要 (1)抵?掉??? A funny game 的信件,(2)?且在登???面?示 drop header deny,?可以在 header_chekcs ?案中可以???:

    /^Subject:.*A funny game/ DISCARD drop header deny
    ?於?作有底下???作:
    REJECT :??封信件退回?原?信者;
    WARN :?信件收下?,但是??封信的基本?料??在登???;
    DISCARD:??封信件??,?不?予原?信者回?!
    ?哥自己有作一些??的比?,只不?.....效能不好!如果您有?趣的?,可以自行下??看看, 不?,使用的後果?自行?估!因?每?人的?境都不一?嘛!

    header: http://linux.vbird.org/linux_server/0380mail/header_checks
    body: http://linux.vbird.org/linux_server/0380mail/body_checks
    ?得,如果你自行修改?????案後,?必要?查一下?法才行!
    [root@linux ~]# postmap -q - regexp:/etc/postfix/body_checks \
    > < /etc/postfix/body_checks


    如果?有出?任何??,那就表示您的?定值???有??啦!


    --------------------------------------------------------------------------------

    PROCMAIL
    除了????定之外,?有?有基???分面的 MDA ?制呢?有的!那就是 procmail ?~ Procmail 基本上就?上?提到的 body_checks 相仿,同?是用?分析?件之用的, 所以你也需要?定??啊!首先你得要安? procmail ,咱?的 CentOS 已?有?建的套件了, ?使用 yum install procmail 自行安?好他。

    那? procmail 的????在哪?呢???就是 /etc/procmailrc ?!???案的?定方式是??的:
    1. 一????定至少共含有三行,如下所示:
    :0b <==?定???制所要?查的信件部分
    * ^Subject:.*A funny game <==就是?查的??部分
    /dev/null <==如果符合上述?定,??行的?作

    ???明:
    a. ?於?查?件的部分(第一行),flags 包含有:
      H : Header 的?查
      B : Body 的?查
      h : 提供 Header 的?料,?入 pipe 、 file 及 mail 等的?查
      b : 提供 Body 的?料?入 pipe, file 及 mail 等的?查!
    b. ?於?查?容的部分:
      ! : ?是反向??的意思
      < : ?查 mail 的??度是否小於?定值 ( bytes )
      > : ? < 相反的???!
    c. ?於?作的部分
      | : ?始?用後?的 shell 程式工作!
    d. 其他的?境??部分:
      PATH    搜??行?的路?
      SENDMAIL  那? /usr/sbin/sendmail ?!
      LOGFILE   登??!通常?定在 /var/log/procmail.log
    e. ? Regular express 相?的部分:
      ^ : ?始(同一行最左?)字元
      $ : 本行的?束字元(最右?)的比?
      . : 除了新增一行之外的任何字元!
      \ : 跳?字元
    更??的?容??必?考:
    man procmailrc
    man procmailex


    ?路上已?有很多前?提供了他?自行分析的??,比如???大?:

    ftp://ftp.tnc.edu.tw/pub/Sysop/MAIL/procmailrc
    您可以?上述的???料捉到你的 /etc/procmailrc ?中,然後在 main.cf ??增加?一句:
    [root@linux ~]# vi /etc/postfix/main.cf
    mailbox_command = /usr/bin/procmail

    [root@linux ~]# /etc/init.d/postfix restart




    透???基?的?件分析可以捉取一些有??的?件,不??於目前垃圾?件的抵?方面?是很有限! 此外,由於?些分析?制都直接?取信件??理?分析,?些?制通常都很耗系??源! 如果你的信件越大流量越大,那?你的系?花?在『分析?件』上面的???花去很多?源, 所以你的硬?得要很好,否??有大型?件???,?件主??跑得喘??! 所以目前要不要???些???制.....?仁?智?!



    --------------------------------------------------------------------------------
    非固定 IP 也可以有春天: relayhost

    我?上面提到,如果你要架?一部合法的 MTA 最好?是得要申?固定的 IP 以及正???的反解比?恰?。 但如果你一定要用浮? IP ?架?你的 MTA 的?,也不是不可以啦,只不?你就得要透?上? ISP 所提供的 relay ?限?!?是怎?回事啊??我??看看一???的案例:



    ?十四、利用 ISP 的 MTA ?行?件??

    理?上,由於我?是向 ISP 申? IP 的,所以我?的 IP ?於 ISP 的 MTA ??,??都符合 relay 的要件。 那如果我利用?? IP ?架?一? mail server ,?且??? mail server 的主?名???? DDNS 的情?,?我的 IP ?主?名???得宜,所以?然可以架?各??站伺服器。如果?有?定以 ISP 的 MTA 作? relay 的情?下,目? MTA ?反解析我?的 IP ,若得到此 IP ?非合法的主?名??, ?信件原?上是?被退件的。

    那如果我以 ISP 的 MTA ?作? relay 主??,因?我?所在的 IP 本?就能?使用 ISP MTA 的 relay 功能, 所以?十四的第一步是???的。然後? ISP 的 MTA 在?行 Relay 而?信件寄出去?, 目? MTA 所看到的?源端是『ISP 的 IP』而不是我?原本的?信源! 如此一??然我?的 MTA 就能?架?起??!

    不?想要以此架??架?你的 MTA 仍有?多需要注意的地方:

    你?是得要有一?合法的主?名?,若要省?,可以使用 DDNS ??理;
    你上?的 ISP 所提供的 MTA 必需要有提供你所在 IP 的 relay ?限;
    你不能使用自?的?部 DNS 架?了,因?所有 relay 的信都?被送至 ISP 的 MTA
    尤其是最後一?,因?所有外送的信件全部都?被送到 ISP ?,所以像我?之前自己玩的 vbird.tsai ??非合法的?域?料就?用了!?什?呢?你想想看,如果你要?信件送? mail.vbird.tsai , 但由於上述的功能,所以?封信?被?到 ISP 的 MTA ??理,但 ISP 的 MTA ?不???你的 vbird.tsai ????,可以理解了吧?

    ?是挺?的,做起??很??,只要在 main.cf ?面加?一段?料即可。 假?你的?境是台?地?的 hinet 所提供的用?,而 hinet 提供的?件主?? ms1.hinet.net , ?你可以直接???定:
    [root@linux ~]# vi /etc/postfix/main.cf
    # 加入底下?一行就?啦!注意那?中括?!
    relayhost = [ms1.hinet.net]

    [root@linux ~]# /etc/init.d/postfix restart


    之後你只要??寄一封信出去看看,就??解?封信是如何寄送的了。看一下登??的?容?像??:
    [root@linux ~]# tail -n 20 /var/log/maillog
    Nov 28 18:42:30 linux postfix/smtp[23673]: 515E8A26CE: to=,
    relay=ms1.hinet.net[168.95.4.10], delay=1, status=sent (250 SAA09090 Message
    accepted for delivery)


    是吧!?由上? ISP ??寄啦!如此一?,你的 MTA 感?上就似乎是部合法的 MTA ?! 不?,可?利用???限????告信啊!因?您所透?的那? ISP ?件主?可是有??你的 IP ?源, 如果你??的?,後果可是不堪?想喔!切?切?!



    --------------------------------------------------------------------------------
    ?件?瞄器: amavisd-new+f-port+spamassanssin

    事?上,到目前?止之前的?定??可以?足一般 50 人以下的小企??境了, 甚至再多一?人也?有??的。不?如果人?多了,各?奇怪的信件也?跟著多起?, ?是因??是?有人不小心?他的 email address 放在???路上,如果被?件位址搜??器人捉到的?, 你的 email ??出?在?告信?送商的名?中....

    ?了避免????,很多朋友是?他的信箱分???,一?直接放在 Internet 上,另一??作?自己日常??之用。另外有的朋友?使用?似底下所提供的?件位址表示方式:

    dmtsai{at}linux{dot}vbird{dot}tsai
    ??格式?於?路?器人 (就是一?可以自?上?搜???字的??程式?!) 的搜??造成困?, 因?那些?器人程式用以判?是否??件位址是依?『 @ 』?判?的啊! 所以?,不要?漏你?人的 email 是很重要的一件事啊!

    Tips:
    你可以自己??看看,如果申?了一?免?信箱,但不要?他公布,那?信箱肯定不?收到任何?告信。 但你一旦用那?信箱?申?一些?人?料而公布在 Internet 上面?,呼呼!不超?一?星期, ?信箱肯定?收到很多?告信!使用上要特?留意喔!

    既然?告信在短期?不可能有??足的解?方案,那至少我?可以直接在 mail server 端就??告信?病毒信?他捉出?吧?如此就可以避免掉使用者必需要自己分析?告信?垃圾信等所花?的??了。 底下提供??好?西??忙?理主?端的信件?料喔:

    amavisd-new:
    官方?站:http://www.ijs.si/software/amavisd/
    ?明:????主要是介於 MTA ??件分析??之?的一?介面,他可以?位於?列的?件捉出??分析??分析, 通常是需要安?的,尤其他可以支援 postfix ?!

    f-port:
    官方?站:http://www.f-prot.com/
    ?明:是一?防毒??,具有自?更新病毒?的能力;

    SpamAssassin:
    官方?站:http://spamassassin.apache.org/index.html
    ?明:具有自???的?告信分析??,不?如果自???的?定太?格,有???生?判。
    接下?就?我?的 postfix 支援?三??西吧!不?你得要注意的是, f-port ? SapmAssisin 是?立?作的??, 那 postfix ?了要使用?????的分析功能,就得要透? amavisd-new ??介面工具??送信件???! ??的作法??考上?提供的官方?站,或者是?考???的?篇文章也不?:

    TWU2 兄提供的好文章:http://phorum.study-area.org/viewtopic.php?t=38649
    kevin1005 提供的好文章:http://phorum.vbird.org/viewtopic.php?t=25760
    johntino 提供的好文章:http://phorum.vbird.org/viewtopic.php?t=15862
    ?然?路上?有很多好文章,大家可以多多搜?一番。


    --------------------------------------------------------------------------------

    amavisd-new 的安???定:
    ?然你可以自行使用 tarball ?安?,不?我?也可以在 http://rpmfind.net/ 找到? RHEL 4 使用的版本。既然 CentOS ? RHEL 使用的套件均相同, ?有道理我?不能安?!是吧!^_^。所以底下的套件?先由 http://rpmfind.net/ ?站捉下?吧!然後再?始安?去。 要注意的是,由於 amavisd-new 用 perl ?成的,他需要很多 perl 的模?,且由於要分析信件?容, 所以也需要很多解?????解析信件?的???,因此才?需要??多的??安?~ @_@:

    ? Perl 模?有?的套件:
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Archive-Tar-1.30-1.el4.rf.noarch.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Archive-Zip-1.16-1.2.el4.rf.noarch.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-BerkeleyDB-0.31-1.el4.rf.i386.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Compress-Zlib-1.42-1.el4.rf.i386.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Convert-BinHex-1.119-2.2.el4.rf.noarch.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Convert-UUlib-1.051-1.2.el4.rf.i386.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Convert-TNEF-0.17-3.2.el4.rf.noarch.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-IO-Multiplex-1.08-3.el4.rf.noarch.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-IO-stringy-2.110-1.2.el4.rf.noarch.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-MIME-tools-5.420-1.el4.rf.noarch.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Net-Server-0.94-1.el4.rf.noarch.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Unix-Syslog-0.100-1.2.el4.rf.i386.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/amavisd-new-2.4.3-1.el4.rf.i386.rpm

    ???及解????有?的套件:
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/arc-5.21j-0.2.el4.rf.i386.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/cabextract-1.2-1.el4.rf.i386.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/freeze-2.5-2.2.el4.rf.i386.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/lzo-1.08-4.2.el4.rf.i386.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/lzop-1.01-1.2.el4.rf.i386.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/nomarch-1.4-1.el4.rf.i386.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/ripole-0.2.0-1.2.el4.rf.i386.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/unarj-2.63-0.a.2.el4.rf.i386.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/unrar-3.6.8-1.el4.rf.i386.rpm
    ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/zoo-2.10-2.2.el4.rf.i386.rpm
    您可能先要以 yum 的方式?安? ncompress, perl-Net-DNS, perl-TimeDate, perl-MailTools, perl-Digest-SHA1, perl-Digest-HMAC, perl-Time-HiRes, spamassassin ??套??,然後?上列的??全部放在同一?目?下,以 rpm -Uvh *.rpm ?安?上述的所有套件!但安??如果出?如下?面:
    warning: amavisd-new-2.4.3-1.el4.rf.i386.rpm: V3 DSA signature: NOKEY, key ID 6b
    Preparing... ########################################### [100%]
    package perl-BerkeleyDB-0.31-1.el4.rf is already installed
    ....


    ?表示某些套件已?被安?了!你不???安?他!那??自行??些已安?的套件?案移出目前目?, 再?行一次 rpm -Uvh *.rpm 就能?安??!如果?是出?某些相依?性的??,要嘛就以 yum ?安?, 要嘛就以 http://rpmfind.net ?站搜???的 RPM ?案?安?, 安?完?後就????定一下?!

    要?始?定 amavisd-new 之前,??必先查?一下 /usr/share/doc/amavisd-new-2.4.3/README.postfix ???案的?容, ?面有很??的?定?明喔!然後?? amavisd-new 的?定?只有 /etc/amavisd.conf 而已, ??的情?下??案?容含有很多的病毒搜?引擎,不?我??有 f-port ???毒??而已, 所以?面需要?行很多修改喔!基本?容的修改如下:
    [root@linux ~]# vi /etc/amavisd.conf
    # 首先是?於系??定的部分,包括主???域名?等的?定:
    $mydomain = 'vbird.tsai'; <==?在第 20 行,填?你的?域名;
    $MYHOME = '/var/amavis'; <==?在第 22 行,?是 amavis 的??家目?之意
    $inet_socket_port = 10024; <==?在第 51 行,????的 port 啦!
    $myhostname = 'linux.vbird.tsai'; <==?在第113 行,改成你的主?名?
    $notify_method = 'smtp:[127.0.0.1]:10025'; <==?在第116 行,?定?接的埠口
    $forward_method = 'smtp:[127.0.0.1]:10025'; <==?在第117 行,同上

    # 2. 底下??行?在第 118 行之後,用?作?找到病毒或?告信後的?作!
    # 如果你害怕不小心?重要?案?除了,建?你先改成 D_BOUNCE ?先?理
    $final_virus_destiny = D_BOUNCE; <==找到病毒?的?作
    $final_banned_destiny = D_BOUNCE; <==找到禁止?目的?作
    $final_spam_destiny = D_PASS; <==找到?告信的?作
    $final_bad_header_destiny = D_PASS; <==找到不良信件??的?作
    # 可以?理的?作主要有:
    # D_PASS ???件的?容是否有??,??件都???收件者
    # D_DISCARD ?件被??,而且不?告知收件者?寄件者;
    # D_BOUNCE ?件不???收件者,但?法??的?息?告知寄件者;
    # D_REJECT ?件不???收件者,但寄件者?收到拒?的?息。
    # ?哥在??由於?心??一些?料,所以除了病毒?禁止?目?回????寄件者外,
    # 其他??先??可以通?。等到未??件伺服器使用者?得可以接受後,
    # 某些部分 (如病毒) 就可以改? D_DISCARD ?直接??了!

    # 3. 再??是?定病毒?瞄的引擎,底下分?是主要?次要?毒程式
    @av_scanners = ( <==大?在 309 行,?面的?目全部?解;
    ....中?省略....
    );
    # 因?所有的病毒?瞄引擎都?有安?嘛!

    @av_scanners_backup = ( <==大?在 626 行,只要剩下底下?些
    ['FRISK F-Prot Antivirus', ['f-prot','f-prot.sh'],
    '-dumb -archive -packed {}', [0,8], [3,6],
    qr/Infection: (.+)|\s+contains\s+(.+)$/ ],
    ....中?省略....
    );


    amavisd-new 大致上就解?到??,?在??法??他,因?我?要先安? f-port 才行?! ??下一?作吧!



    --------------------------------------------------------------------------------

    安???定 f-port :
    f-port 是一??毒??,他的版本非常的多,其中只有一?是免?的?人版本, ?到底下的??去下?,不要下???案了喔!

    http://www.f-prot.com/download/trial_forms/linux-ws-rpm.html
    建?你直接下? RPM ?案,然後直接安?他就好了!安?後 f-port ?立即主??行?上更新, 所以?你在安?的?候?定你的?路是正常的。而所有 f-port 的?料都?被放置到 /usr/local/f-prot/ 目?下。 ?目?下的 README 以及相???可以瞧一瞧。安?完?後?查看看能否工作:
    [root@linux ~]# f-prot -verno
    F-PROT ANTIVIRUS
    Program version: 4.6.6
    Engine version: 3.16.14

    VIRUS SIGNATURE FILES
    SIGN.DEF created 29 November 2006
    SIGN2.DEF created 29 November 2006
    MACRO.DEF created 27 November 2006
    # 若出?如上的版本宣告,?表示 f-prot (注意?名) 可以?利?作。\r

    [root@linux ~]# f-prot /etc/crontab
    # 如果有出??瞄的字?,就表示????可以?始?行?瞄的工作啦!


    其??也就是?, f-port ?套??的?瞄程式『 f-prot 』可以在 Linux 上面?瞄各??案的意思! 不?,我?的重?是利用他??行?件?瞄就是了。至於?上更新病毒?部分,你可以手??上更新, 也可以?入工作排程?自?更新喔:
    1. 手?即??上更新方式:
    [root@linux ~]# /usr/local/f-prot/tools/check-updates.pl

    2. 自?更新排程:
    [root@linux ~]# vi /etc/crontab
    27 4,16 * * * root /usr/local/f-prot/tools/check-updates.pl -cron -quiet


    如此一?我?的 f-port 每天可以?行?次?上更新的?作呢!很不?吧!



    --------------------------------------------------------------------------------

    ?? amavisd-new ?病毒?瞄程式的搭配:
    完成上述的?定後,我?可以先???看看 amavisd-new ? f-port ?毒程式的搭配情?。 你可以直接??做:
    [root@linux ~]# amavisd debug
    ....前面省略....
    # 底下在?明此??所??的介面? port ?有?行者的 UID/GID 等
    Nov 30 14:51:53 linux amavisd[3457]: Net::Server: Binding to TCP port 10024 on
    host 127.0.0.1
    Nov 30 14:51:53 linux amavisd[3457]: Net::Server: Setting gid to "102 102"
    Nov 30 14:51:53 linux amavisd[3457]: Net::Server: Setting uid to "101"
    Nov 30 14:51:53 linux amavisd[3457]: Net::Server: Setting up serialization via
    flock

    # 底下在?明各?模?是否有被?利的?入
    Nov 30 14:51:54 linux amavisd[3457]: Module Amavis::Conf 2.072
    Nov 30 14:51:54 linux amavisd[3457]: Module Archive::Tar 1.30
    Nov 30 14:51:54 linux amavisd[3457]: Module Archive::Zip 1.16
    ....中?省略....

    # 底下?是在?明?入哪些?料
    Nov 30 14:51:54 linux amavisd[3457]: Amavis::DB code loaded
    Nov 30 14:51:54 linux amavisd[3457]: Amavis::Cache code loaded
    ....中?省略....
    Nov 30 14:51:54 linux amavisd[3457]: ANTI-VIRUS code loaded
    Nov 30 14:51:54 linux amavisd[3457]: ANTI-SPAM code loaded
    Nov 30 14:51:54 linux amavisd[3457]: ANTI-SPAM-SA code loaded
    Nov 30 14:51:54 linux amavisd[3457]: Unpackers code loaded

    # ???明的是一些?案解??的功能?!
    Nov 30 14:51:54 linux amavisd[3457]: Found $file at /usr/bin/file
    Nov 30 14:51:54 linux amavisd[3457]: No $dspam, not using it
    Nov 30 14:51:54 linux amavisd[3457]: Internal decoder for .mail
    Nov 30 14:51:54 linux amavisd[3457]: Internal decoder for .asc
    ....中?省略....
    Nov 30 14:51:54 linux amavisd[3457]: Found secondary av scanner FRISK
    F-Prot Antivirus at /usr/local/bin/f-prot <==?行重要!?明有找到 f-port
    Nov 30 14:51:54 linux amavisd[3457]: SpamControl: initializing Mail::SpamAssassin
    Nov 30 14:51:56 linux amavisd[3457]: SpamControl: init_pre_fork done
    ....後面省略....
    # 最後按下 [ctrl]-c ??束?? debug 的?面喔!


    看起???是?有??啦!然後???他????服?吧!
    [root@linux ~]# /etc/init.d/amavisd start

    # ??一下 amavisd ??的 port 10024 是否?利?作中?\r
    [root@linux ~]# telnet 127.0.0.1 10024
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    220 [127.0.0.1] ESMTP amavisd-new service ready
    ehlo localhost
    250-[127.0.0.1]
    250-VRFY
    250-PIPELINING
    250-SIZE
    250-ENHANCEDSTATUSCODES
    250-8BITMIME
    250-DSN
    250 XFORWARD NAME ADDR PROTO HELO
    quit
    221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel
    Connection closed by foreign host.


    如果一切都?利的?,你可以???服??他?入??自??行中!『 chkconfig amavisd on 』 ??就好啦!???定一下? postfix ?支援 amavisd-new 的?列分析工作吧!



    --------------------------------------------------------------------------------

    ?定 Postfix 使支援 amavisd-new 的分析工作:
    ???定?目需要的??比?多,有???案要修改,先改 master.cf 吧!
    [root@linux ~]# vi /etc/postfix/master.cf
    # ??行???了病毒、?告信作的??!
    # ====================================================================
    # service type private unpriv chroot wakeup maxproc command + args
    # (yes) (yes) (yes) (never) (100)
    # ====================================================================
    smtp-amavis unix - - n - 2 smtp
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes
    -o disable_dns_lookups=yes
    -o max_use=20

    127.0.0.1:10025 inet n - n - - smtpd
    -o content_filter=
    -o smtpd_restriction_classes=
    -o smtpd_delay_reject=no
    -o smtpd_client_restrictions=permit_mynetworks,reject
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_data_restrictions=reject_unauth_pipelining
    -o smtpd_end_of_data_restrictions=
    -o mynetworks=127.0.0.0/8
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
    -o smtpd_client_connection_count_limit=0
    -o smtpd_client_connection_rate_limit=0
    -o smtpd_milters=
    -o local_header_rewrite_clients=
    -o local_recipient_maps=
    -o relay_recipient_maps=


    ??行?他?定好,然後再??理 main.cf ???案?!
    [root@linux ~]# vi /etc/postfix/main.cf
    content_filter = smtp-amavis:[127.0.0.1]:10024

    [root@linux ~]# /etc/init.d/postfix restart


    嘿嘿!然後?始就能??你分析病毒信啦!就是?????!



    --------------------------------------------------------------------------------

    ?告信的抵?:
    我?有使用 spamassassin ??自???抵??告信的?制,??玩意?主要是透?分析信件?容, 只要信件?容的某一部份符合 spamassassin (?? SA) 的??,??信件可?予一?分?。 ??信件的所有分??和起?,若分?高於我?所?定的??分?,??信件可以被???告信。 ??分?如果?定太低,?很多合法的信件都?不小心被???告信,如果?定太高,可能又?捉不到?告信。 真是??。??分?的?定值??是在:
    [root@linux ~]# vi /etc/amavisd.conf
    $sa_tag_level_deflt = 5.0; <==大?在第 61 行,? 2 改成 5 吧!

    [root@linux ~]# vi /etc/mail/spamassassin/local.cf
    required_hits 5 <==就是他!就是??分?啦!
    report_safe 0
    rewrite_header Subject [SPAM] <==如果是?告信,???被改?!

    [root@linux ~]# /etc/init.d/amavisd restart


    每?人的主?都不太一?,所以??分?需要你多方的??才能找出最佳的?值。 就是因?害怕?判,所以才希望你在 /etc/amavisd.conf ?面不要? spam 的???定? D_DISCARD 的啦! ^_^! 至於???案的?理方式,其?你可以?考底下的???改? local.cf ?案喔!

    http://spamassassin.apache.org/full/2.6x/dist/doc/Mail_SpamAssassin_Conf.html
    http://www.yrex.com/spam/spamconfig.php
    不?你得要注意的是, local.cf ?面很多的?定值已?被 /etc/amavisd.conf 所取代了, 所以你的 local.cf 部分?定可能?失效的!?要特?先?明的。 整?病毒、?告信的安???定就到此?止啦,然後我?可以?始稍微??一下?! 你可以利用 CentOS 本身的 Spamassassin 提供的一封?告信???看看:
    [root@linux ~]# mail -s 'spam test' dmtsai < \
    > /usr/share/doc/spamassassin-3.0.6/sample-spam.txt
    # 假?你的系?有?使用者名? dmtsai ,你寄出?告信?他,
    # 然後用 dmtsai 收信一下,你???到?封信件的?容:

    [dmtsai@linux ~]$ mail
    >N 1 dmtsai@linux Thu Nov 30 23:18 54/2065 "**SPAM** spam test"
    # 瞧!??多出了一些?西啦!??!信件???被改?!
    & 1
    From dmtsai@linux.vbird.tsai Thu Nov 30 23:18:24 2006
    X-Original-To: dmtsai@linux.vbird.tsai
    Delivered-To: dmtsai@linux.vbird.tsai
    X-Quarantine-ID:
    From dmtsai@linux.vbird.tsai Thu Nov 30 23:18:24 2006
    X-Original-To: dmtsai@linux.vbird.tsai
    Delivered-To: dmtsai@linux.vbird.tsai
    X-Quarantine-ID:
    X-Virus-Scanned: amavisd-new at vbird.tsai
    X-Spam-Flag: YES
    X-Spam-Score: 1001.148
    X-Spam-Level: ***********************************************
    X-Spam-Status: Yes, score=1001.148 tagged_above=5 required=6.31
    tests=[AWL=-2.025, DNS_FROM_RFC_ABUSE=0.374, GTUBE=1000,
    NO_RELAYS=-0.001, UNWANTED_LANGUAGE_BODY=2.8]
    # 上面的特殊字?部分,第一行就是病毒?瞄的??!
    # 後面??行?是?算?告信??分?的?果啊!有趣吧!





    --------------------------------------------------------------------------------

    自???抵??告信:
    在 spamassasin 所提供的功能?中,事?上有??使用 spamassassin 的方式,一?是透? spamd ?? spamassassin 的服?,另一??是透? spamc ??可以? MTA 呼叫?批次?行的程式。在?哥的???例?中,我?是透? amavisd-new ???呼叫 spamc 以?理?告信的啦!所以你的 spamassassin 的 daemon 功能不用??的。

    另外,?告信的?化可是千??化的,?也搞不清楚下一次出??告信的情??是如何,所以?, ?定死的?告信????是?有多大的效果的。所以?,能?自????告信的?容?料,然後自???更新?料?, ?才能?因????路的???酷的??。好佳在!咱?的 spamassassin 有提供一支程式?一??? bayes (?式) 的?制??理自???的功能!我?可以透???功能??行分??!

    既然有???制的?料?,那??料?在哪?啊?其??料?主要有??,分?是?人的?系?的! 我???案例的系??料?放置在 /var/amavis/.spamassassin/ ?面, ?人?料??是在 ~/.spamassassin/ ?面。基本上,建?直接由系?管理?直接修?系??料?的?容即可。 那?如何?理新的?告信件呢?你必???做:

    手??理?告信?料:
    你得要先手?的??有被 spam 的?告信抽出?,?例??,?哥?我所收到的?告信放置到 /root/mail/spam ???案?中,他是一? mbox 的格式,也就是 mailbox 的格式?。 你也可以建立一?使用者名? spam,那??你所收到的?告信?寄???使用者即可。

    利用 sa-learn ???告信:
    接下?你得要更新?告信的?料?了,???作主要是?由 sa-learn ??指令??理的。 你最好先以『 man sa-learn 』??解一下所有的??才好。假?你的?告信放置在 /root/mail/spam ?? mbox 格式的?案中,那?你可以??做:
    sa-learn --spam --mbox --dbpath /var/amavis/.spamassassin/ /root/mail/spam
    如此一????告信的?容就?被更新了。

    正常信件被?判的?理:
    那如果有正常信件?被分析??告信呢????,你同???些信件?立出?成?一??案, 例如 /root/mail/nospam 好了,然後????:
    sa-learn --ham --mbox --dbpath /var/amavis/.spamassassin/ /root/mail/nospam
    透??????制,你的?告信抵??越?越精?喔!等到累?了足?的?告信??後, 就能?修改 /etc/amavisd.conf ?面???告信命?的?理方式了 (由 D_PASS ?成 D_DISCARD 看看!) 加油!



    --------------------------------------------------------------------------------

    不要?? exe ?名的附件:
    使用了 amavisd-new ?作?病毒?理??告信抵?真是不?的方案,不?,?? amavisd-new ???附件???名? *.exe, .bat, .com... 等等的?件,而且如果你?某? .exe ?案??成? .rar 或者是 .zip 的????, 由於我?的 Linux 有安?解???? (如 unrar),?果...?封?件?是?被??,而不?是否有病毒存在。

    ???在不怎?人性化,因?有些?候我?必?要?送一些附?名? .exe 之?的?行?,如果???被??, 那如何?送出??案?除非使用 ftp 了~真麻?~???,我?可以透?修改 amavisd-new 的?定??放行喔! ?理的方式很??,只要??做即可:
    [root@linux ~]# vi /etc/amavisd.conf
    找到底下?一行,大?在 166 行左右
    qr'^\.(exe-ms|dll)$',
    ?他改成??:
    qr'^\.(dll)$',

    找到底下??行,大?在 187 行附近
    qr'\.[^./]*[A-Za-z][^./]*\.(exe|vbs|pif|scr|bat|cmd|com|cpl|dll)\.?$'i,
    qr'.\.(exe|vbs|pif|scr|cpl)$'i,
    ?他改成??:
    qr'\.[^./]*[A-Za-z][^./]*\.(vbs|pif|scr|cmd|com|cpl|dll)\.?$'i,
    qr'.\.(vbs|pif|scr|cpl)$'i,

    [root@linux ~]# /etc/init.d/amavisd restart


    就是?含有 exe 的??字?定?他移除就是了,如此一?,除非你的 .exe ?案含有病毒, 否?就不?被???!


    --------------------------------------------------------------------------------
    其他?定小技巧

    除了之前?到的??主要的?定之外, postfix ?有提供一些不?的?定要?大家使用的喔! 我?可以一?一???看看:


    ?封信件????件信箱的大小限制
    在??的情?下, postfix 可接受的?封信件最大容量? 10MBytes ,不????值我?是可以更改的, ?作很??:
    [root@linux ~]# vi /etc/postfix/main.cf
    message_size_limit = 40000000
    [root@linux ~]# postfix reload


    上面的?位是 bytes ,所以我??封信件可接受大小改? 40MByte 的意思啦!?按照你的?境??定???值。 而?前我?要管制 /var/spool/mail/account 大多是使用?案系??的 quota ??成, ?在的 postfix 不需要啦!可以??做:
    [root@linux ~]# vi /etc/postfix/main.cf
    mailbox_size_limit = 1000000000
    [root@linux ~]# postfix reload


    我?每?人 1GB 的空?啊!^_^


    寄件?份
    收件?份我?知道可以使用 /etc/aliases ??理的,但是如果想要送件也?份呢? 利用底下的方式即可:
    [root@linux ~]# vi /etc/postfix/main.cf
    always_bcc = some@host.name
    [root@linux ~]# postfix reload


    如此一?任何人寄出的信件都???一份? some@host.name 那?信箱。 不?,除非您的公司很重?一些商??密,?且已?公告?所有同仁,否??行???定值, ?哥?人??侵犯?私?很?重!



    --------------------------------------------------------------------------------
    其他?用?明

    除了 mail server 自己的?定值之外,我?最好?是?? mail server 的?料??份啊?管理啊等等的, 所以底下有些咚咚也可以?理?理:


    --------------------------------------------------------------------------------
    ???查

    ?然 Mail 很方便,但是仍然?有?法?信件寄出的?候!如果您已??定好 MTA 了,但是?是?法??件寄出去,那可能是什???呢?

    ?於硬?配?:
    ??任何情?之下,如果硬?出??,那?所有的服?都?不正常啦!所以,?先?查您的硬?是否『怪怪的!』??先?? OK 吧!

    ?於?路??的??:
    如果?不上 Internet ,那?哪??的 Mail Server 呢?所以?先??你的?路已?正常的?用了! ?於?路的????,?查?前?篇『Linux ?路??』的?容介?;

    ?於服?的??:
    ??必?? port 25 ? port 110 已?正?的??了!使用 netstat 指令即可?解是否已????服?!

    ?於防火?的??:
    很多?候,很多朋友使用 Red Hat 或者其他 Linux distribution 提供的防火??定??,?果忘了?? port 25 ? port 110 的?定,?致?法收?信件!?特?留意????喔!可以使用 iptables ??查是否已??用? port 呢!其???考防火??定那一章喔!

    ?於 TCP_Wrappers 的??:
    如果你的 MTA ?有支援 tcpd ??程式 (或者?是 libwrap ??函式?) 的?,那?在 /etc/hosts.allow ? /etc/hosts.deny 的?定也?影?到收?信件的正常?否!如果 /etc/hosts.deny 有?定『ALL: ALL』的?,那???必在 /etc/hosts.allow ?面加?『 sendmail: ALL 』喔!

    ?於?定?的??:
    在?? postfix 或者是 sendmail 之後,在登???中仔?看看有????息?生? 通常如果?定?料不?,在登???中都?有????的地方。

    ?於?案?限的??:
    如果你曾?手??理???的 tarball 升?,或者是你曾自己?理?一些?定?,那?就得要注意:

    /etc/mail/, /etc/postfix/ :?面的?案至少都? 644 或 640 的?限!
    /var/spool/mqueue :?必? 700 的?限
    /var/spool/clientmqueue:?在 sendmail 8.12 才有,所有人?群??必? smmsp ,而?限?必? 770 ;
    每? ~/.forward 的?案需要控制其?限喔!


    其他?案的?定??:
    如果??只有某? domain 可以收信,其他的同一主?的 domain ?法收信,需要?查 local-host-names ???案的?定, 或者是 $mydestination 的?定值才行;
    如果???件被?下?了!而且老是?示 reject 的字?,那?可能被 access ?住了;
    如果???件?列 (mailq) 存在很多的?件,可能是 DNS 死掉了,??查 /etc/resolv.conf 的?定是否正?!

    其他可能的??:
    最常?生的就是??的??了!?是由於使用者?有在 MUA 上面?定『我的?件需要??』的??啦! ?叫你的用???勾?吧!

    ?是不知道??的解?方案:
    如果?是查不出??的?,那???必?查您的 /var/log/maillog (有的?候是 /var/log/mail ,??要看 /etc/syslog.conf 的?定),?你寄出一封信的?候,例如 dmtsai 寄? bird2@linux.vbird.tsai ?,那? maillog ?案?面??示出?行,一行? from dmtsai 一行? to bird2@linux.vbird.tsai, 也就是『我由哪?收到信,而?封信?寄到哪?去!』的意思,由??行就可以?解??了!尤其是 to 的那一行,?面包含了相?多的有用??,包括?件?法?送的??原因的??! 如果您?於登??不熟,?拿出『基???篇』?面的『??登??』一文吧!

    --------------------------------------------------------------------------------
    哪些?料要?份

    不管什??候,?份?是重要的!那?如果我是??的 Mail Server 而已,我需要的?份?料有哪些呢?

    /etc/passwd, /etc/shadow, /etc/group 等???有?的?料;
    /etc/mail, /etc/postfix/ 底下的所有?案?料;
    /etc/aliases 等等 MTA 相??案;
    /home 底下的所有使用者?料;
    /var/spool/mail 底下的?案? /var/spool/postfix ?件?列?案;
    如果是 Sendmail 8.12 ?可以考??存 /var/spool/clientmqueue。
    其他如?告??、病毒?瞄??等等的?定?定??。

    --------------------------------------------------------------------------------
    quota ?目?移?

    ?路上有很多『免?的?子?件信箱』空?,一般而言,使用的就是 quota ??磁碟配?工具!因?我?的 Linux 主?硬碟空?就是??多!?然?, 使用磁碟配? (quota) ?是一??大家比?公平的方法!使用 quota 的技巧已?在『基???篇』?面介??了,??不再重?介?,要介?的是??可能??生在??的案例中的一些小技巧:


    ?件信箱所在的磁碟空?不足了
    ?是很可能??生的??啊!尤其是在用量很大的?站上面!???候你的解?方法主要有:

    新增加一?硬碟,格式化好之後?他 mount 到 /var/spool/mail ??目?下;
    如果主??面?有其他目?具有很大的空?,例如 /home ??地方,那?就可以:
    cd /var/spool
    mv mail /home
    ln -s /home/mail mail
    使用 quota ?定:
    一般而言,我?通常?? /home 做? quota 的 partition ,那? /var/spool/mail 其?也可以依附在 /home ?? partition 之下,??到 quota ?於使用者的??喔!?成的方法很??啦:

    先在主????安?的?候,? /home ?立於一? partition ?中;
    以『?哥的 Linux 私房菜 -- 基???篇』的 quota ?容??例,建立好 /home 的 quota 限?;
    ? /var/spool/mail 整?搬到 /home 底下,?做好??的?作就可以立即生效啦:
    cd /var/spool
    mv mail /home
    ln -s /home/mail mail
    ?於使用者?件的放置地?
    很多的?者可能喜??每?使用者去到自己的家目??取 mail box 的咚咚,亦即是? /var/spool/mail 的?容?他搬到??的家目?去!例如 dmtsai 的 mail box ?成的 /home/dmtsai/dmtsai ???案!不?,如此一?的?, MTA ? pop 都?需要改?其 source code !所以『不建???搞喔!』

    --------------------------------------------------------------------------------
    重?回?

    ?子?件伺服器的?定需要特?留意,以免被作??告信?垃圾信的跳板;
    Mail server 使用的主?名?至少需要 A 的 DNS ??,不?最好能?具有 MX ???宜,且正反解最好成?, 比?可以避免大型主?的抵?;
    ?件主?主要是指 SMTP (???件?送?定) 而已,不?要架?一部可利用?似 Thunderbird 收?的?件伺服器, 最好能?具有 SMTP 以及 POP3 等通??定;
    ?子?件?送的元件,主要有 MUA, MTA, MDA 以及最?的 Mailbox 等等;
    ?子?件伺服器最需要搞定的地方其?是 Relay 的功能,千?不可 Open Relay 喔!
    一封?子?件至少含有 header 以及 body 等?料在?;
    常?的可以?? SMTP 的??有 sendmail, postfix 及 qmail 等等。
    ?避免收到大量的?告信,建?您不要? email address 放在???路上,若需要某些功能必需??件位址放在?路上?, 最好能??有???件位址,一?用?公?,一??用?作?自己的主要??之用。
    本章? LPI ??的??:在 LPI ?站 http://www.lpi.org ?面提到的,?於 Sendmail 的考???的地方,只有在 LPI level 1 的 102 ,?面的 topic 113 Networking Services ,第二??中,?易的 Sendmail ?定。??的是『??者必???的?定 sendmail (指的??是 m4 scripts ,不??很??!不要?心~)、能?建立 mail aliases 、能?管理?件?列、能???或者是?? sendmail ??服?、?解使用者的?件?? (forward 功能),以及??的 sendmail 除?!此外,??者也需要?解什?是 Open Relay ?避免 Open Relay 才行!』至於?考的?案?指令可能有?些:
    /etc/sendmail.cf (或是 /etc/mail/sendmailcd)
    /etc/aliases 或是 /etc/mail/aliases
    /etc/mail/*
    ~/.forward
    mailq
    sendmail
    newaliases

  24. baizx 于 2009-08-10 10:46:29发表:

    DNS 伺服器

    本章的行前??工作

    人?的?袋?於?字?竟不比文字?的敏感,偏偏??的世界??? 0/1 而已。 ?了??者兜在一起於是有了主?名?? IP 的??啊~而????的?定就是 DNS 了。 ?? DNS 你必需要??路有一定的概念,尤其是主?名?的?明喔!

    ?解?路基?,防火???? SELinux 模?等等。
    由於你可能?手?修改 /etc/init.d/named ,所以 shell script 也要?解!

    --------------------------------------------------------------------------------
    什?是 DNS

    目前的 Internet 世界最常用的?是所?的 TCP/IP ?定,其中 IP ?定?第四版的 IPv4 。 不?,?? IPv4 是由 32 ?位元 (32 bits) 所?成,?了人?已??成四?十?位的?字了, 例如 123.234.56.78 ??的格式。?我?利用 Internet ?送?料的?候, 就需要?? IP ,否??料怎?知道要被送到哪?去?

    Tips:
    ?送?料的方法有很多,不?得全部都是透? IPv4 ???定,例如在 LAN ?面常用的 NetBIOS 就是一例。 不?,在??,我?不??其他的??方法,??探? IPv4 ???定喔!

    然而人??於 IP ???字的玩意?,??力?在是不怎??。但是如上所?, ?我?需要?料???,又很需要?方的 IP ,怎????了?付????, 早期的朋友想到一?方法,那就是利用某些特定的?案?主?名?? IP 作一???, ?主?名?? IP 有??性,如此一?,我?就可以透?主?名??取得?主?的 IP 了! 真是?好主意,因?人??於名字的??力可就好多了! ^_^y。

    可惜的是,?方法?是有缺憾的,那就是主?名?? IP 的???法自?於所有的???更新, 且要加入????能向 INTERNIC ??,若 IP ?量太多?,??案?大到不像?,也就不利於主?同步化了。 而?了填???缺憾,柏克?大??展出另外一套??式管理主?名??? IP 的系?, 我??他? Berkeley Internet Name Domain, BIND ,??系?可就?秀的多了~ 透???式管理,可以??的?行??的工作~太棒了! ?也是目前全世界使用最?泛的?域名?系?(Domain Name System, DNS)哩~ 透? DNS ,我?不需要知道主?的 IP ,只要知道?主?的名?,就能??易的?上?主?了!

    Tips:
    在底下的?明?中,我?有??提到 DNS 有??提到 BIND ,?有什?不同? 由上面的?明?面,您可以?解到, DNS 是一????路的通??定名?, 至於 Bind ?是提供?? DNS 服?的套件~??您?解了??!

    那?要立刻?架? DNS 主????然不是~如同上面?的,???路上面, ?料的??最重要的就是得要知道?方的 IP,如此才能?成??。因此, 架? DNS 就必?要?解整????路的?域名?架?,否?,一旦 DNS 架???, 可能?造成您所管?的主??法正?的在 Internet 上????料的??!

    所以,要?定 DNS 之前,您必?要就?域名?系??面?用的 FQDN、Hostname ? IP 的查?流程, 正解?反解、合法授?的 DNS 主?之意?,以及 Zone 等等的知?作一???才行! ?可是很重要的,不要?忽他了!

    Tips:
    事?上,由於 IPv4 的 IP ?量已?不足了,?了?付未?的?路架?而??了 IPv6 出?。 但是 IPv6 的『?字?量』是比 IPv4 要多出好多好多的!可想像的到的是,那? DNS 可就更重要了!@_@


    --------------------------------------------------------------------------------
    什?是 Domain Name System:

    DNS 的全名是『 Domain name system 』, 中文?名?『?域名?系?』, ??咚咚的用途是什?哇!?什?我?的??或者是 Internet 一定需要他 (尤其是以 WWW 的方式?上??) ?呵呵! 他最大的用途就是『造福?惰???性薄弱的人?~』 哈哈!??!?什??他是造福人?呢?且??哥娓娓道?:


    /etc/hosts 的?史:

    如同前面以及?路基?章??中?到的,IPv4 的 IP 是由 32bits 所?成,?成十?位的??是四? 0-255 的?字所?成的。 由於不容易??,因此就有了主?名?? IP ??的想法出?。也就是?, 只要?入一?『??的名字』而我?的系?就?自?的???名字?成???解的 IP !嘿嘿!如此一?,我要?得『名字』?是比 IP 容易的多了!

    依???想法而有了 /etc/hosts ???案!例如,只要您?入 『 ping -c 5 localhost 』 您的 Linux ?上可以印出 127.0.0.1 ?? IP , Why ?您去看一下 /etc/hosts 就知道?什?了!所以?,只要?您常常上?的『?址??的 IP 』?到?? /etc/hosts 底下,您的 IP 搜?速度就?快上很多~

    Tips:
    再次??,在您的私有?域?部,最好?所有的 IP 都?入???案中啦!

    DNS 的?史:

    早期(大?20~30年前)的??可是?重物?,一般人是可望而不可及的,因????量太少, 所以使用 /etc/hosts ????些 IP ?名?的???尚可?付。但是在?代, Internet 上面??多主?,?且常常?突然的『噗通』又多出一部主??服?, 那?我??不能一?一?的?他?入在 /etc/hosts ?面吧??呀!真不?明! 而且也?法立刻?全世界的??都同步更新他?自己的 /etc/hosts ?案啊! 所以後?的???候就有所?的『?域名?解析系?, DNS』出?啦!

    DNS 服?利用?似??目?的型?,?主?名?的管理分配在不同??的 DNS 伺服器?中,?由分?管理,所以每一部主???的??就不?很多, 而且若有 IP ???也相?容易修改!那??? DNS 的功能您知道了???啦!就是『???主?的名???成 IP 』就是了!?然?,他的?外功能?很多!?之,他的最大功能就是『 ?有意?的,人??容易??的主?名?(英文字母),??成???所熟悉的 IP 位址! 』

    ??例子??好了,奇摩雅虎的?站的 IP 是 202.43.195.52 ,所以您可以在您的??器上面?入『 http://202.43.195.52 』??上奇摩雅虎! 不?,我想?有??人能???? IP 背的起?的吧?反之,我??都知道奇摩雅虎的?址? tw.yahoo.com ,那?您只要?入『 http://tw.yahoo.com 』就可以?上?主?啦!很容易??吧!
    /etc/hosts :直接在 Client 端的?案??入主?名???的 IP ?查?;
    DNS 系? :利用?外的DNS服?,?Client端可以透?名?解析?取得目的地主?的IP

    Fully Qualified Domain Name ( FQDN )

    在提到名?? IP 的解析流程之前,我??必需???一下『什?是 domain name ? host name?』也就是?域名??主?名?。 在????主?之前,我??聊一聊比?生活化的??:

    ?路世界其?有很多人自??『?哥』的,包括敝人在下小生我啦!那?你怎?知道此?哥非彼?哥呢? ???候你可以利用每??哥的所在地?作??分啊,比如?台南的?哥?台北的?哥等。 那?一台南?有??人自??哥怎??????,你?可以依照????分呢!比如?台南北?的?哥及台南中?的?哥。 如果???咚咚列出?,就有?像??: ?哥、北?、台南
    ?哥、中?、台南
    ?哥、台北
    ......
    是否就可以分辨他的不同?了呢?呵呵!??!就是??!

    另外一?例子可以使用?????看,假如高雄有? 1234567 而台南也有? 1234567 ,那?(1)您在高雄直接?接 1234567 ?,他?直接?入高雄的 1234567 ??中, (2)但如果您要?到台南去,就得加入(06)????才行!我?就是使用???做?辨?之用的!
    是否?不清楚?哥要?什??我?常常???主?名?都是 www 的?站,例如 www.gov.tw, www.seednet.net, www.hinet.net 等等,那?我?怎?知道?些 www 名?的主?在不同的地方呢?就需要?他?域名??!也就是 gov.tw, seednet.net, hinet.net 等等的不同,所以即使您的主?名?相同,但是只要不是在同一??域?, 那?就可以被接受?!

    基本上,我?知道 DNS 是有??之分的,那?每???的 Hostname ? Domain name 可是不一?的咚咚ㄋㄟ~?哥使用我?的主??加以?明,如下?所示:



    ?一、分?次的 DNS 架? ( Hostname ? Domain name )

    在上面的例子?中,由上向下?的第二??面,那? .tw 是 domain name ,而 com, edu, gov ?是主?的名?,而在??主?的名?之管理下,?有其他更小?域的主?, 所以在第三?的?候,基本上,那? edu.tw 就?成了 domain name 了!而成大?中山的 ncku, nsysu ?成?了 hostname ?!

    呵呵!以此?推,最後得到我?的主?那? aerosol 是主?名?,而 domain name 是由 ev.ncku.edu.tw 那?名字所?定的!自然,我?的主?就是?管理 ev.ncku.edu.tw ?? domain name 的 DNS 伺服器所管理的?!??是否?解了 domain name ? hostname 的不同了呢?

    --------------------------------------------------------------------------------
    DNS 的查??程:

    接下?我?要?一?,那? DNS 的 (1)架?是怎?? (2)查?原理是怎???是要先知道架?才能知道如何查?的?!所以底下我?先?介?一下整?的架?。


    DNS 的架?:


    ?二、DNS ??概念示意?

    上面就是一???的 DNS ??架??,在整? DNS 系?的最上方一定是 . (小??) ?? root 的 DNS 主?,他底下管理的就只有 com, edu, gov, mil, org ?以?家?分?的第二?的主?名?了!??者?? Top Level Domains (TLDs) 喔!

    一般最上??域名? (Generic TLDs):例如 .com, .org, .gov 等等;
    ??最上??域名? (Country code TLDs):例如 .tw, .uk, .jp 等
    例如台?地?最上?的?域名?是以 .tw ???,管理???域名?的?部?器的 IP 是在台?,但是他的???是??在 . (root)那部?器?面的!?有其他的?家的最上?如 .cn 指的是大?, .de 指的是德?一?!那?每??家之下??的主要的下?有哪些?域呢? 呵呵!主要就是有?六大?:

    名? 代表意?
    com 公司、行?、企?
    org ??、??
    edu 教育?位
    gov 政府?位
    net ?路、通?
    mil ?事?位

    其?最早之前在 . (root)之下只有?六大?的 domain name ,但是?路成?的速度太快了,因此後?又多出?些以???分的 domain name ,如此一?,在??家之?,只要向??家申? domain name 即可,不需要再到最上?去申??!也因此,在?些??之下,?是有?六大?的 domain name ?主的哩!?然啦,在目前,由於???路持?的??,??在的 domain name ?在是有?不太?用,所以又有相?多的?域名?被??出?,例如目前台? ISP 提供的 .idv.tw 的?人?站啦!

    好了,再??一次, DNS 系?是以所?的??式的管理,所以,?注意喔!那? .tw 只??底下那一?的???主要的 domain 的主?而已!至於例如 edu.tw 底下?有? ncku.edu.tw ?部?器,那就直接授?交? edu.tw 那部?器去管理了!也就是?『 每?上一?的 DNS 主?,所??的??,其?只有其下一?的主?名?而已! 』至於再下一?,?直接『授?』?下?的某部主??管理?!呵呵!所以您就???知道 DNS 到底是如何管理的吧! ^_^

    ????定的原因不是?有道理的! ????的好?就是:每部?器管理的只有下一?的 hostname ?? IP 而已,所以?少了管理上的困?!而下? Client 端如果有??,只要??上一?的 DNS server 即可!不需要跨越上?,除?上面也?比???呢!


    DNS 的搜?流程:

    ???? DNS 是以?似『??目?』 的型???行名?的管理的!所以每一部 DNS 主?都『?管理下一? DNS 主?的名???』而已, 至於下?的下?,?『授?』?下?的 DNS 主??管理啦!???好像很?口,好吧!我?就以下???一?原理?:



    ?三、DNS 主?查?流程示意?

    首先,?您在??器的?址列?入 http://aerosol.ev.ncku.edu.tw ?,您的??就?依?相??定( 在 Linux 底下就是利用 /etc/resolv.conf ???案 ) 所提供的 DNS 的 IP 去?行??查?,好了,由於目前最常?的 DNS 主?就? Hinet 的 168.95.1.1 ?? DNS 了,所以我?就拿他?做例子吧!嗯!???候, hinet 的?部主????工作:

    先查看本身有?有??:
    ????啦,由於 DNS 是??式的架?,任何一部 DNS 都???下一??面的主?名???的 IP 而已,由於 hinet ?非???路?面的主?,所以自然也就?有?法直接提供? client 端?於 aerosol.ev.ncku.edu.tw ?部?器的 IP 了,所以啦,一般而言,???候 168.95.1.1 就?向最??,也就是 . (root) 的主?查? .tw ?部?器的位址;

    向最?? ( root )查?:
    由於 168.95.1.1 ?有??我?主?的 IP ,???候他就?向『最??』的 . (root) ?部主??查? . (root) 的下一?,也就是 .tw ?部?器的?料了!???候, . (root) 就?告? 168.95.1.1 ?『嘿!您要查 .tw ???域的管理者呀?我??有 .tw ???域的管理的主?之 IP ??,您可以直接去找他!』;

    向第二?查?:
    168.95.1.1 接著又到 .tw 去查?,而?部?器管理的又?有 .edu.tw, .com.tw, gov.tw... 那?部主?,??比?後??我?要的是 .edu.tw 的?域,所以???候 .tw 又告? 168.95.1.1 ?:『您要去管理 .edu.tw ???域的主?那?查?,我有他的 IP !』;

    向下?持?查?:
    好了,一步一步下?, .edu.tw 可以查到管理 .ncku.edu.tw 的主? IP ; .ncku.edu.tw 可以查到管理 .ev.ncku.edu.tw 的主? IP ,而最後我? aerosol.ev.ncku.edu.tw 就可在管理 .ev.ncku.edu.tw ?域的那部主?的?定???中查?到啦!

    ???存???:
    查到了 IP 之後,?部 168.95.1.1 的 DNS ?器?不?在下次有人查? aerosol.ev.ncku.edu.tw 的?候再跑一次??的流程吧!粉?粉累的?!而且也很耗系?的?源??路的??,所以呢, 168.95.1.1 ?? DNS 很?明的?先??一份 aerosol.ev.ncku.edu.tw ?? IP 的??在自己的?存????中,以方便下一次又有人?同一?主?名?的要求之查?!最後???果回?? client 端!?然啦,那???在 cache ?中的?料,其?是有??性的,??了 DNS ?定??的??(通常可能是 24 小?),那????就?被?放喔!
    由??的分???您??了什??嗯!那就是:

    ?一?『合法』的 DNS 主??面的?定修改了之後,?自世界各地任何一? DNS 的要求,都?正???的?示正?的主?名??? IP 的??,因?他??一?一?的?找下?,所以,要找您的主?名???的 IP 就一定得要透?您的上? DNS 主?的??才行!所以只要您的主?名字是??上?『合法的 DNS』主?的?定的,那?就可以在 Internet 上面被查?到啦!呵呵!很????吧,??性也很高。

    在主?的?存??????中,由於是有??性的,所以?您的主?名?在 DNS ?中被修改了之後,但是由於之前的??????在其他的 DNS 主?的?存????面,所以啦,可能在?人以非您的 DNS 主??查?您的主?名??,就?得到先前的???,????差不多可能是 10 分?到 2 天左右,?也是?什?我?常??您修改了一? domain name 之後,可能要 2 ~ 3 天後才能全面的?用的?故啦!

    每一部可以??主?名?? IP ??的 DNS 伺服器都可以?意更?他自己的?料???, 因此主?名???域名?在各?主?底下都不相同。?例??, idv.tw 是?有台?才有?? idv 的?域~ 因??? idv 是由 .tw 所管理的,所以只要台? .tw ??小?同意,就能?建立??域喔!
    好啦!既然 DNS ??棒,然後我?又需要架站,所以需要一?主?的名?,因此, 那?我?需要架? DNS 了???然不是,?什?呢? ???哥提到了很多次的『合法』的字眼,因?他就?涉到『授?』的??了! 我?在前面的『申?合法的主?名?』?中也提到, 只要主?名?合法即可,不?得需要架? DNS 的啦!


    DNS 使用的 port number :

    好了,既然 DNS 系?使用的是?路的查?,那?自然需要有? Listen 的 port ? ( ??的埠? )!??!很合理!那? DNS 使用的是那一? port 呢?那就是 53 ?? port 啦!您可以到您的 Linux 底下的 /etc/services ???案看看!搜?一下 domain ????字,就可以查到 53 ?? port 啦!

    但是??需要跟大家?告的是,通常, DNS 查?的?候,是以 udp ???快速的?料???定 (protocol) ?查?的,但是?一?有?法查?到完整的???,就?再次的以 TCP ???定?重新查?的!所以?? DNS 的 daemon (就是 named 啦) ?,?同??? TCP 及 udp 的 53 ?? port number 喔!


    --------------------------------------------------------------------------------
    ?於『授?』的意?:

    很多朋友都??『 架? DNS 可以?定主?的名?,而我要架站需要主?有名字,因此一定需要架? DNS ,只要有 DNS,我的主?就可以有名字了! 』是?????然不是!?是??的?念!怎??呢?

    ?上面?三的?示?中,您??不???,?我要搜? aerosol.ev.ncku.edu.tw 主??,就需要向管理 .ev.ncku.edu.tw ???域的那部?器查?才行,而要查? .ev.ncku.edu.tw ?需要在 .ncku.edu.tw 上面??才可以!?是因?『上? DNS 主? .ncku.edu.tw 已?? .ev.ncku.edu.tw ???域的管理? "授?" ? green.ev.ncku.edu.tw ?部?器,?有人要查? .ev.ncku.edu.tw ???域的主? IP ?, .ncku.edu.tw ??把查?的任?直接?? green.ev.ncku.edu.tw 去管理了!?此, .ncku.edu.tw ???域的管理主?,?不?再接管 ev.ncku.edu.tw ???域的名?管理! 』是否很像人?社?的『授?』的概念?

    也就是?,?您老?充分的『授?』?您某?工作的?候,?此, 要?行??工作的任何人,?老?那?知道您才是真正『有?』的人之後,都必?要向您?示一?! ^_^!所以?,如果您要架? DNS ,而且是可以?上 Internet 上面的 DNS ?,您就必?要透?『上? DNS 主?的授?』才行!?是很重要的?念喔!等一下我?在底下?介?一?如何架?一? 『??合法授?的 DNS 主?』哩!

    其?,如果?上面的?改?成:『 我要架站,所以我要?我的主?有一?合法的名字! 』那?就合理了!怎??呢?因?我可以?上? DNS ?我?定主?名??? IP 就可以啦!如此一?,要找我的 hostname ?? IP 的人,都可以直接在我的上? DNS ?面找到,根本不需要透?我的 Linux 主??!例如?哥研究室的 aerosol.ev.ncku.edu.tw 就可以在 green.ev.ncku.edu.tw ?部管理 DNS 的 server 上面找到ㄋㄟ~不必?自?我的 aerosol.ev.ncku.edu.tw 上面找!

    也就是?,藉由 DNS 系?最大的功能『主?名???成 IP 』 ???作,那?您只要向任何一?合法的 DNS 主?申?一?『主?名?, hostname 』?您的 Linux 主?,?大家都可以藉由? DNS 主??查?到您的 Linux 之 IP ,就可以使用?主?名??架站啦!就是????!

    好了,那?您就??知道了,要?您的主?名??? IP 且? Internet 上面的??都可以查?的到,就需要:
    上? DNS 的授??您?定 DNS 主?,或者是;
    直接?上? DNS 主???您?定!
    ???模式。?例??,?哥的 Linux 教??站主?名? linux.vbird.org ,?哥是向上? .org 的 ISP ??了 vbird.org 的?域名?,但?哥申?的是自己管理 DNS 伺服器,所以我?站的?料?放在哪?呢?



    ?四、授???料?的差?

    看到了??vbird.org 是向上? ISP ??的,而 ISP ?是提供授???哥 (NS 的??), 至於?哥的 linux.vbird.org ?是直接??在?哥的 DNS 伺服器上面。所以,?一?哥的 DNS 伺服器??, 那??然 ISP 有?? dns.vbird.org ?一部主?的 IP ,但是大家都?法查到 dns.vbird.org 的 IP 喔! ?什?呢?瞧一瞧?三啊!因?授?的??嘛!?於 NS 及 A ??不熟???, 後面就?立刻?到??咚咚?!

    那?哪?模式比?好呢???有一定的答案, 底下我???一?,您比??合哪一?模式的?定呢?



    --------------------------------------------------------------------------------
    ?站代管?是自己?定 DNS:

    如果您曾?申?? domain name 的?,例如向 Hinet 或 Seednet 等台?各大主要 ISP 申? domain name 的?,??都?知道有??主要的模式,就是??上?提到的 DNS 授?,或者是直接交? ISP ?管理。交? ISP 管理的, 就可以?作是?域名?代管啦!?然啦,如果您是?校?位的?,或者是企??部的小?位,那?就得?您向上? DNS 主?的??人要求?!??如何,您只能有????就是了,要不就是?他?忙您?定好 hostname ?? IP ,要嘛就是?他直接?某? domain name 段授??您做? DNS 的主要管理?域。

    那?我怎?知道那?方式?我比?好呢??注意,由於 DNS 架?之後,?多出一???的 port ,所以理?上,是比?不安全的!因此,能不??然就不要?定比?好?!所以,??的建?如下:


    需要架? DNS 的??:

    您所??需要?上 Internet 的主??量?大:例如您一?人??整?公司十?部的?路 Server ,而?些 Server 都是??您的公司?域之下的。???候想要不架? DNS 也粉?啦!
    您可能需要?常修改您 Server 的名字,或者是您的 Server 有??增加的可能性???性;
    不需要架? DNS 的??:

    ?路主??量很少:例如家?或公司只有需要一部 mail server ?;
    您可以直接?上? DNS 主?管理??您?定好 Hostname 的???;
    您?於 DNS 的?知不足?,如果架?反而容易造成?路不通的情?;
    架? DNS 的?用很高?!

    --------------------------------------------------------------------------------
    正解?反解的 Zone 意?:

    ?了??多,?得再提一提?於正解、反解? Zone 的??才行啊!


    什?是正解?反解?

    我?在前?的?宗明??中就提到啦, DNS 系?本?最主要的功能就是在?? hostname ? IP ?,由於??在?路上面其???的只是 IP 啦,所以,一般??,我??『由 hostname 去?找出 IP 的程序??『 正解 』』, 至於由 IP 去查?得到 hostname 那就被??反解了!正反解的?定情?是差?性很大的!怎??呢?

    正解:
    在正解的情?之下,我?可以透?主?分??定的方式?查? (例如前面的?三),而因?是 Hostname ?? IP ,所以即使在不同?段的 IP ,仍然可以?在同一? domain 之中!例如?哥的主?是在?校?面 (140.116.xxx.xxx),但是?哥申?的是 vbird.idv.tw ?? domain 的名?,而很多朋友?是以 ISP 提供的 IP (例如 61.xxx.xxx.xxx) ??行 *.idv.tw 的申?的!呵呵!那?一?,我的 vbird.idv.tw 就?大家的 *.idv.tw 在同一? domain 的?定?中?,但是?些主??是在不同的?域之中喔 (140.116.xxx.xxx 不?跟 61.xxx.xxx.xxx 在同一??段中吧! ^_^) !所以?,任何一部 DNS 都可以?您的 IP ?入他?的正解?中?!

    反解:
    但是反之?不行!怎??呢?因??初 IP ??分配的?候,就必需要一??域一??域的?分的,所以?然不可能同一??段的 IP 在不同的地方出?吧!因??涉及到 TCP/IP 的?定? router 的架?ㄋㄟ~因此,同一? IP ?段的反解就真的得要透?上? IP ?域的 DNS 伺服器?定才行了!所以由 IP 反查 hostname 的?,大部分的情?下就需要向直?的上? IP ?域申?了!
    ??例子??:我想要自己的?域名?的名字,所以我可以去外面的 ISP 申???一?合法的名字?架?我的 DNS !?此之後,?人就可以??我的 DNS 正解查?得到我的主? IP。但是如果要由 IP 反查回 hostname 的?,我就『一定必需要』?管理我主?所在?域的上?的 DNS 管理???定才行ㄋㄟ!?也是目前比?麻?的地方,因?正解您可以自行?定, 但是反解?必需要?上?的管理??定!如果是向 ISP 申?的 IP ,那就得向 ISP 申?反解名?改?,??部分通常很麻?~


    什?是 Zone ?

    知道正反解之後,再?要?知道一下,什?又是 Zone (?域) 呢??的??一?的?,一?正解或反解的?定就是一? zone ,例如我要?? vbird.idv.tw ?? domain 的?定?容,那?他就是一? zone !通常,『一??定?就是一? zone 』! 如果以?哥的 vbird.idv.tw ??例子??,配合上面的 ?三 ??明, 那?哥的 vbird.idv.tw 那部主??面至少需要知道 . (root) 以及?哥自身的?定, 所以,?? domain 的 DNS ?定??面,必需要有:

    hint( root ) 的?定;
    vbird.idv.tw ?? domain 的正解?定;
    localhost 的正解?定(非必要);
    localhost 的反解?定(非必要)。
    那?我就有四? zone 了!如果以我?系?的 DNS 主? green.ev.ncku.edu.tw ??的?,他至少要有:

    hint(root);
    ev.ncku.edu.tw 正解;
    ev.ncku.edu.tw 反解以及 ;
    localhost 正解;
    localhost 反解。
    等五? zone 的定??!嘿!您???,我?有 vbird.idv.tw ?? domain 的反解?定~?什?呢???考上面的?明吧!因?反解需要要求 IP ?定的上???定才行!?且,需要特?留意的是,『每一? zone 都有一??定?,而?定?些?定??名的,就交? /etc/named.conf ???????定!』

    Tips:
    在新版的 Linux distribution ?中,?了安全性的考量, 所以????案放置在 /var/named/chroot ?中喔!需要特?注意!

    也就是?, DNS server 使用的 bind ??套件中,他的主要???是 /etc/named.conf ,而???案?中就是??了每一? zone 的?定??名!??上,主?名?? IP 的??就是??在各? zone 的?定??~


    正反解一定要成套??

    好了,正反解需不需要成套?生,在??不用多?明了吧? ^_^!?注意喔,在很多的情?下,尤其是目前好多莫名其妙的?域名??生出?, 所以,常常?只有正解的?定需求而已。不?也不需要太??心啦, 因?通常在反查的情?中,如果您是使用目前台?地?最流行的 ADSL 上?的?,那? ISP 早就已??您?定好反解了!例如:211.74.253.91?? seednet 的浮?式 IP 反查的?果?得到 91.253.74.211.in-addr.arpa ??的主?名?!所以在一般我?自行申??域名?的?候,您只要?心正解的?定即可! 不然的?,反正反解的授?根本也不??放?您,您自己?定得很高?也?有用呀! ^_^

    Tips:
    事?上,需要正反解成?的大概?有 mail server 才需要吧!由於目前?路??老是被垃圾、?告?件?光, 所以 Internet 的社??於合法的 mail server ?定也就越?越?格。如果您想要架? mail server ?, 最好具有固定 IP ,??才能向你的 ISP 要求?定反解喔!以 hinet ?例的反解申?:
    http://hidomain.hinet.net/top1.html


    --------------------------------------------------------------------------------
    DNS 伺服器的套件、??? cache only 主??定:

    ?完了一些基?概念後,接下??我??聊一聊,那如何?定好 DNS 伺服器啊? ??然就得由套件安??起啦!???玩一玩吧!


    --------------------------------------------------------------------------------
    架? DNS 所需要的套件:

    ?於??都?完了!相信您大概也有?累的吧??哥是?累的啦,因?手臂、 肩?酸痛的毛病??重....咦!????嘛? @_@ 好啦,我??於要?安? DNS 所需要的套件了!??得前面提?的,我?要使用的 DNS 就是使用柏克?大??展出?的 BIND (Berkeley Internet Name Domain, BIND) ??套件啦!那?怎?知道您安?了????得 基?篇 ?面的 RPM ???啦!就是使用 RPM ????:
    [root@linux ~]# rpm -qa | grep bind
    bind-utils-9.2.4-16.EL4 <==??是用?端搜?主?名?的相?指令
    bind-9.2.4-16.EL4 <==??才是 DNS 伺服器主程式
    bind-chroot-9.2.4-16.EL4 <==? bind 主程式?在家?面! ^_^


    ?一??怎???嗄!??我ㄌㄟ~?快?您的原版光碟拿出?,然後?他安?上去先~不?安?? ?自行拿出『?哥的 Linux 私房菜 -- 基???篇』去?察一下 RPM 的用法吧! ?然啦,更好的作法就是利用 yum install bind 即可啊!

    此外,那? bind-chroot 是?嘛用的?所?的 chroot 代表的是『 change to root 』的意思, 那? root 代表的是根目?。早期的 bind ???程序??在 /var/named ?中,但是?程序可以在根目?到??移, 因此若 bind 的程式有???,??程序?造成整?系?的危害。?避免????, 所以我??某?目?指定? bind 程式的根目?,由於是根目?, 所以 bind 便不能???目?!所以如果?程序被攻?,了不起也是在某?特定目?底下搞破?而已。 CentOS ??? bind ?在 /var/named/chroot 目?中喔! ^_^



    --------------------------------------------------------------------------------
    BIND 的??路??定? chroot

    好了,?在我?知道 BIND ?? DNS 伺服器的?定需要有

    本身的?定?:主要??主?的?定、zone file 的所在、?限的?定等;
    ?料??案:??主?名?? IP ??的等。
    其中 BIND 的?定?? /etc/named.conf ,而在???案?面可以?? zone file 的完整?名喔! 也就是?,你的 zone file 其?是由 /etc/named.conf 所指定的,所以 zone file ?名可以?便取啦! 只要 /etc/named.conf ????正?即可。一般??, CentOS 的??目?是??的:

    /etc/named.conf :?就是我?的?定?啦!
    /etc/sysconfig/named :是否?? chroot 及?外的??,就由???案控制;
    /var/named/ :?料??案??放置在??目?
    /var/run/named :named ?支程式?行???放置 pid-file 在此目??。
    不?,?了系?的安全性考量,一般??目前各主要 distributions 都已?自?的?你的 bind 相?程式?他 chroot 了! 那你如何知道你 chroot 所指定的目?在哪?呢?就是上面提到的那? /etc/sysconfig/named 啦! 你可以先查?一下:
    [root@linux ~]# vi /etc/sysconfig/named
    ROOTDIR=/var/named/chroot


    事?上?面有意?的就只有上面?一行,意思是?:『我要? named ?他 chroot ,?且?更的根目?? /var/named/chroot 』喔!由於根目?已?被?更到 /var/named/chroot 了,但 bind 的相?程式是需要 /etc, /var/named, /var/run .... 等目?的,所以??上咱? bind 的相?程式所需要的所有?料?是在:

    /var/named/chroot/etc/named.conf
    /var/named/chroot/var/named/zone_file1
    /var/named/chroot/var/named/zone_file.....
    /var/named/chroot/var/run/named/...
    哇!真是好麻?~不?,不要太?心!因?新版本的 distributions 通常?您作好一些????了! ?例??,你依?可以使用 /etc/named.conf ??定你的 DNS ,?什?呢?因? CentOS 主?的?你? /var/named/chroot/etc/named.conf ??到 /etc/named.conf ?! 另外,?大部分??的 zone file ?料??案也都主?的?你做好??了!?自行?入 /var/named 去 ls 一下吧! ^_^

    Tips:
    事?上, /etc/sysconfig/named 是由 /etc/init.d/named ???所?入的, 所以你也可以直接修改 /etc/init.d/named ?? script 哩!

    另外你需要注意到的是 /var/run/named/ ??目?是要? bind 的程式 (named) ?入用的, 所以他的?限必需要? named ??使用者可以?入才行!??可重要的很!


    BIND 的升?:

    必??大家注意的是,?? DNS 的 53 port 其?也不是?很安全的咚咚,所以呢,非必要,其?是不太建??用 DNS 的啦!不?,如果真的要安?的?,那????注意您的 Linux distribution 是否有定?的公告的漏洞修?套件呢???真的很重要,因??哥很久很久以前,就是被?? port 53 ??植了一?蠕?,真是??的很! @_@

    另外,?版的使用者使用新的 9.x 版以後的 BIND ?,由於主??你?定好 chroot , 你可能一?始?不太??,不?,不建?你拿掉 chroot 的功能!?竟 DNS 的 port 53 是需要 root 身份??的, 具有一定的危?性,所以,?他 chroot ?竟是比?妥?啦!您?是吧!


    --------------------------------------------------------------------------------
    DNS 的 master/slave 架?

    在 DNS 的?定上面,基本上,您必?要已?很清楚 zone 是什?了,否?很????定喔!?搞的一塌糊?的~??如何,您一定要知道的是, bind 的?定?,就是 /etc/named.conf。 不?,由於 chroot 的??,???案也可能?在 /var/named/chroot/etc/ ?中, 另外,?? DNS server 的?型大致上可以分?三?,分?是:


    Master:

    ???型的 DNS 本身含有?域名?的?定? (就是有 Zone 啦!), ???定?就是?定正解或者是反解的『Database』?!所以他本身是具有提供 Internet 查?所需的?料喔!例如我可以在我的主?上面?定提供 vbird.idv.tw ???域,那?我的主?就是 master ?型的主?啦!


    Slave:

    假?你的 DNS 伺服器?共管理 50 部主?的 IP ?主?名?的??好了, 同?假?你只有一部 DNS 伺服器?,那??一由於?路??或者是主?的?、硬???,?致??服??止了, 想一想,你那 50 部主?的 hostname ? IP 的???能不能找的到?是吧! 所以,一般??, DNS 系?通常?建?您至少要有?部主?提供 DNS 的服?~

    不?,如果您有四部 DNS 主?提供??的名?解析服?, 而且?四部是互相??援的,也就是?,?四部主?的?容其?是一模一?的, 那?如果您要更?一? IP ?名?的???,就必?要手?去修?四部主?的?容, ???不?很麻?啊?!

    ???候就有 slave ?型的 DNS 主?出?了!不?,slave主?必?要? master 主?相互搭配喔! 以上面的案例??明,如果我必?要有四部主?提供 DNS 服?,且四部?容相同, 那?我只要指定一部主?? Master ,其他三部?? Master 的 Slave 主?, 那??要修改一部名????,我只要手?更改 master 那部?器的?定?,然後, 重新?? BIND ??服?後,呵呵!其他三部 slave 就?自?的被通知更新了! ??一?,在??上面可就???意的多了~

    Tips:
    如果您?定 Master/Slave 架??,您的 Master 主?必?要限制 只有某些特定 IP 的主?能?取得您 Master 主?的正反解?料??限才好! 所以,上面才?提到 Master/Slave 必?要互相搭配才行!

    另外,既然我的所有 DNS 伺服器是需要同?提供 internet 上面的?域名?解析的服?, 所以不?是 Master ?是 Slave 主?,他都必?要可以同?提供 DNS 的服?才好! 因?在 DNS 系??中,?域名?的查?是『先?先?』的??, 我?不??得哪一部主?的?料?先被查?到的! ?了提供良好的 DNS 服?,每部 DNS 主?都要能正常工作才好啊! 而且,每一部 DNS 伺服器的?料??容需要完全一致,否?就?造成用?端找到的 IP 是??的!


    Cache-only:

    ???型的 DNS 主??有自己的?料?,????助 Client 端向外部的 DNS 主?要求?料而已~??的??,他可以想成是一?『代理人』的角色而已~ 通常?定在防火?上面的呢!


    那? Master/Slave 的?料更新到底是如何?作的呢??注意,Slave 是需要更新?自 Master 的 DNS ?料啊!所以?然 Slave 在?定之初就需要存在 Master 才行喔!好了, Master ? Slave 的?料同步?作可以由底下的?示?看:



    ?五、Master/Slave 的 DNS 主??料同步?程

    整?更新的?程是??的:

    Slave 判?是否需要更新(1.1):
    我?可以在 Slave ?定好向 Master DNS 主?要求?料更新的?期??,?每?到?更新???, Slave ?向 Master 索取是否需要更新?料,??更新?料的判??以 Serial number 是否不同??行更新喔!

    Master 判?是否需要更新(1.2):
    除了由 Slave 向 Master 的查?之外,Master 如果 DNS ?料???更,且想要 Slave 同步更新?,也可以主?的向 Slave ?行更新通知!

    ?料同步化(2):
    最後?然就是?料由 Master ?送到 Slave ?更新 Slave 的 DNS ?料?!
    如果您想要架? Master/Slave 的 DNS 架??,?部主? (Master/Slave) 都需要您能?掌控才行!?路上很多的文件在??地方都有?『?失』, ?特?的留意啊!

    底下我?就先??一?不需要?料??案的 cache only 的 DNS 伺服器吧!



    --------------------------------------------------------------------------------
    ??的 cache-only ? forwarding DNS 主??定

    什?是 cache-only ? forwarding DNS 的主?呢?
    在介?怎??定每一?正反解的 zone 之前,我?先?玩一???的 DNS 主?!就是 cache-only (?快取) DNS server!?名思?,?? DNS server 只有 cache (快取) 的功能,也就是?,他本身??有主?名?? IP 正反解的?定?, 完全是由?外的查??提供他的?料?源!

    至於 forwarding (??) 的 DNS server ?是?用?端所需要查?的???交? forwarding DNS server ?代?查?, 等到查??束後,我?的 DNS server 才??果快取後回??用?端。??者的整??作流程可以看成是???子:



    ?六、Cache-Only ? Forwarding DNS 主?的?作流程\r

    ?察一下?六上下???示,?可以?? cache-only 需要知道 . (root) DNS 的位址, 所以 cache-only 必?要指定出 . (root) DNS 的?料?所在?案才行。至於 Forwarding DNS 主?, 他是直接?查?的?料??另一部上? DNS ?查?,本身可以不必知道 . (root) DNS 的位址! 一般??,如果?的?境需要架?一? cache-only 的 DNS server ?,其?可以直接使用 forwarding 的?制, ??的那部 DNS 主?流量要能??荷?大流量?佳!

    要注意的是,不?是 cache-only ?是 forwarding DNS 主?,他?本身都?有管理 zone (那? root DNS 例外) 的?定?, 所以?,基本上??? DNS 主?只是作?一?中????料的角色?了!那??什?要架???的一? DNS 主?呢????事???然不是!?是有原因的啦!底下??您??!


    什??候使用 cache-only DNS?
    在某些公司行???,?了?防?工利用公司的?路?源作自己的事情,所以都??? Internet 的??作比??格的限制。?然啦,? port 53 ?? DNS ?用到的 port 也可能?被?在防火?之外的~???候, 您可以在『防火?的那部?器上面,加?一? cache-only 的 DNS 服?!』?是什?意思呢?很??啊!就是您自己利用自己的 防火?主?上的 DNS 服?去?您的 Client 端解? hostname <--> IP ?!因?防火?主? 可以?定放行自己的 DNS 功能,而 Client 端就?定?防火? IP ? DNS 主?的 IP 即可! 哈哈!??就可以取得主?名?? IP 的??啦!


    那如何在你的 Linux 主?上架?一? cache-only 的 DNS 主?呢? 其?真的很??的啦!因?不需要?定正反解的 Zone ,所以只要?定一??案 (就是 named.conf) 即可!真是快?得不得了?! 另外,Cache-only 只要加上? Forwarders 的?定即可指定 Forwarding 的?料, 所以底下我???定具有 Forwarding 的 cache-only DNS 伺服器吧!



    --------------------------------------------------------------------------------

    ??主要?定? /etc/named.conf
    在???案中,主要是定?跟主?有?的事?,以及各? Zone 的代表含意??案,在?哥的??案例?中, 因?使用了 forward 的?制,所以?哥的?? cache-only DNS 伺服器??有 Zone ,所以我?只要?定好跟主?有?的?定即可。?定???案的?候?注意:


    ?解?料是以??斜?『 // 』?作?定的!
    每?段落之後都需要以『 ; 』?做??尾!

    那?您可以???定???案啦!
    [root@linux ~]# vi /etc/named.conf
    // ?然 CentOS ????案放置到 /var/named/chroot/etc ?中,
    // 不?他很好心的?我?作了???,所以你?是可以直接?????案啦!
    options {
    directory "/var/named";
    dump-file "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    pid-file "/var/run/named/named.pid";
    forward only; //只允? forward!
    forwarders {
    168.95.1.1; //我??使用 hinet 的 DNS !
    139.175.10.20; //??是 seednet 的 DNS !
    };
    };
    include "/etc/rndc.key";


    ?哥在上?的?定?中含有 pid-file 的?定,所以得要特?注意了!因? pid-file 所在的目?下,也就是那? /var/run/named 目?,我的 bind ?行?程序的?有人 (一般??是 named ??使用者) 必?要 能??入!也就是?, /var/run/named 的 owner 必? 是 named ?? user 才行喔!但由於我?有使用 chroot , 因此??的目??是 /var/named/chroot/var/run/named 喔!所以你?得要????:
    [root@linux ~]# ls -ald /var/named/chroot/var/run/named
    drwxrwx--- 2 named named 4096 Oct 12 11:48 /var/named/chroot/var/run/named


    我???用到 option ????而已,?面的?定值意??:


    pid-file
    指的是每一? services ??自己的 PID (Process ID) 的?案?!???案通常用在重新??或者是 reload 整? services 最常被使用到的!因?可以使用 kill -1 PID ?重新??啊!嗄!忘?什?是 PID ??快拿出基?篇??一下!

    forwarders
    (不要忘?那? s 喔!)就是要?定往前?找的那?『合法』的 DNS ?!每一? forward 的主?之 IP 都需要有『 ; 』?做??尾!

    forward only
    ???定可以?您的 DNS 主???行 forward 而已!是 Cache-Only 主?最常?的?定了!

    很??吧!至於更多的??我??在後?篇幅?中慢慢介?的。 ??就已??定完成了最??的 cache-only 的 DNS 主?了!

    --------------------------------------------------------------------------------

    ?? named
    ???不?忘?吧!??快去??一下吧! [root@linux ~]# /etc/init.d/named start
    Starting named: [ OK ]



    --------------------------------------------------------------------------------

    ?察 port 的?化
    ?特?的注意喔!?不是??的?候?示 OK 你的 DNS 就?成功的!所以,?要?快的?看一下您的 port 53 有?有??ㄋㄟ~
    [root@linux ~]# netstat -utln
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 192.168.1.254:53 0.0.0.0:* LISTEN
    tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
    udp 0 0 192.168.1.254:53 0.0.0.0:*
    udp 0 0 127.0.0.1:53 0.0.0.0:*


    特?需要留意的是,如果?有指定介面的?,那?所有的?路介面,包含 lo, eth0, ... 等介面都?被?定?可以接受 domain name 要求的回?介面!此外, ??得我?在前面提到的,每?介面同?都?提供 TCP ? UDP 封包的服?喔! ??看起?似乎真的有??的?子,不?,我??是得瞧一瞧?定方面有?有什?大??呢?


    --------------------------------------------------------------------------------

    ?查 /var/log/messages 的?容?息
    named ??服?的???就直接?他放置在 /var/log/messages ?面啦,所以?看看?面的?行吧!
    [root@linux ~]# tail -n 15 /var/log/messages | grep named
    Oct 16 15:08 linux named[76]: starting BIND 9.2.4 -u named -t /var/named/chroot
    Oct 16 15:08 linux named[76]: using 1 CPU
    Oct 16 15:08 linux named[76]: loading configuration from '/etc/named.conf'
    Oct 16 15:08 linux named[76]: listening on IPv4 interface lo, 127.0.0.1#53
    Oct 16 15:08 linux named[76]: listening on IPv4 interface eth0, 192.168.1.254#53
    Oct 16 15:08 linux named[76]: command channel listening on 127.0.0.1#953
    Oct 16 15:08 linux named[76]: command channel listening on ::1#953
    Oct 16 15:08 linux named[76]: running
    Oct 16 15:08 linux named: named startup succeeded



    Tips:
    如果你在 /var/log/messages ?面一直看到??的????:
    couldn't add command channel 127.0.0.1#953: not found
    那表示你?必需要加入 rndc key ,??考本章後面的 利用 RNDC 指令管理 DNS 伺服器 的介?,?他加入你的 named.conf 中!

    由上面第一行出?的那?『 -t ... 』可以?解到 chroot 的主要目?啦!你可以使用 man named 去查?一番。 呵呵!看起?似乎是?有??的?子了!那?就直接???看看吧!

    --------------------------------------------------------------------------------

    ??:
    ?部分??考: Client 端的???目


    特??明:Forwarders 的好????分析
    ?於 forwarder 的好????,其?有很多?的意?!大致的意?可分???派:

    利用 Forwarder 的功能?增?效能的理?:
    ?些朋友???,?很多的下? DNS 主?都使用 forwarder ?, 那?那?被?定? forwarder 的主?,由於???很多的????(??考?三的?明), 因此,?於那些下?的 DNS 主?而言,?增快很多,亦即??省很多的查???!基本上,?些基本的流程可以看成如下?所示:



    ?七、Forwarder ??的?作?明

    所有的 cache-only 都?定 forwarder ?『主 DNS 主?』那一部,?由於主 DNS 主?已???了?多的??了(每?人都?要求嘛!)所以,?其他人?要求相同的查??料?,?主 DNS 那部?器??直接由其 cache ?中?取,因此,查?效率就?快了!


    利用 Forwarder 反而?使整?的效能降低:
    但是另外一派?持相反的?解!?是因??主 DNS 本身的『??量』就很繁忙的?候,那?您的 cache-only 主??向他要求?料,那?因?他的?料??量太大,??方面可能?荷不量,而太多的下? DNS 又向他要求?料,所以他的查?速度??慢!因?查?速度?慢了,而您的 cache-only 主?又是向他提出要求的,所以自然??的查?速度就?同步下降!
    很多??法啦!?哥本人也?得很有趣哩!只是不知道哪一派?正?就是了 >_<"" ,不?可以知道的是,如果上?的 DNS 速度很快的?,那?他被?定? forwarder ?,或?真的可以增加不少效能哩!


    --------------------------------------------------------------------------------
    DNS 主?的???定:

    好了,??上面的?明後,我?大概知道 DNS 的??小??是??的:

    主要?定?是 /etc/named.conf;
    每?正解、反解都需要一??案,而?案的?名是由 /etc/named.conf 所?定;
    目前的 bind 程式已??行 chroot 了,可以?考 /etc/sysconfig/named ;
    ? DNS 查??,若本身?有?料?,?前往 root (.) 或 forwarders 主?查?;
    DNS 伺服器的架?需要上? DNS 的授?才可以成?合法的 DNS 伺服器。
    named 是否??成功?必要查? /var/log/messages ?的??!
    其中第五?很重要,因?我???有向上? ISP ??合法的?域名?,所以我??然就?有?利架?合法的 DNS 伺服器了。 而由於?心我?的 DNS 伺服器??外部???路?境互相干?,所以底下?哥?主要以一? vbird.tsai 的?域名??架? DNS 伺服器,如此一?咱?就可以好好的玩一玩自己?域?路?的 DNS 啦!

    另外,那? chroot 是很重要的?念,如果你是跳到??地方?看或者是以前使用的是?版的 bind 的?,那??再次??一下前?小??到的 bind 的 chroot 部分喔! 底下的文章就不再提及?些基??念啦!


    --------------------------------------------------------------------------------
    一???的案例?明

    假??哥的?部 DNS 伺服器??? vbird.tsai ???域???,?且??的反解? 192.168.1.0/24 ???域,另外我也??本? localhost 以及 127.0.0.1 ????的?域???喔!此外, ?然要包含最上? (root, .) ???域的主?名??料?才行! 所以我的?定?及正反解 zone 的?料??案??有:

    named.conf :?定?
    named.vbird.tsai :vbird.tsai 的正解
    named.192.168.1 :192.168.1.0/24 的反解
    named.root :root (.) 的?料?
    named.localhost :localhost 的正解
    named.127.0.0 :127.0.0.1/24 的反解
    如果我?想要加入其他的?域,例如 niki.tsai 可不可以啊??然可以啊!就再多一??料?正解?案即可! ?有,?哥上????定?料??部私有的,所以你可以完全照著玩!?不?影?到外部的???路啦! 只是,你的 DNS ?定???路也查不到就是了~反正是?功嘛!^_^

    至於?料?的??方面,?哥??的??是??的:

    作?系?? IP ??之主?名? ?明
    OS: Linux
    IP: 192.168.1.254 linux.vbird.tsai
    www.vbird.tsai
    ftp.vbird.tsai
    forum.vbird.tsai ?部是主要的 DNS 伺服器,主要主?名?? linux.vbird.tsai ,其他的三部主?名??主??名。
    OS: Linux
    IP: 192.168.1.150 slave.vbird.tsai
    主要作? slave DNS 主?, 相?的 slave ?定?在下?小?才?介?的啦!
    OS: Windows XP
    IP: 192.168.1.100 winxp.vbird.tsai 某一部主?的 IP ?主?名???
    OS: Sun
    IP: 192.168.1.200 sun.vbird.tsai 某一部主?,用?玩的而已!

    ?特?留意啊,一? IP 可以???多?主?名?,同?的,一?主?名?可以?予多? IP 喔! 主要是因?那部 linux.vbird.tsai 的?器未?的用途相?的多, ?哥希望那一部主?有多?名?,以方便未??外的??啊,所以就?? IP ??了四?主?名?啊!



    --------------------------------------------------------------------------------
    /etc/named.conf ?定?

    ???定?是整? Linux 上 DNS 的核心啦!他最主要就是在:

    ?? DNS 伺服器的使用?限 (可否查?、forward ?否、master/slave 架?等);
    ?定出 zone (domain name) 以及 zone file 的所在;
    ?定 DNS 本?管理介面以及其相?的金??案 (key file)。
    基本上,???案的?容主要就是分?上?的三大部分啦!至於?定方面你要注意的有:

    在整?伺服器的?境?使用?限方面,主要是透? options {....} ???定??理的;
    ?是要注意,在 named.conf ?中?解使用 // ,而每一??定?目最後需要分? (;)
    我?????的 zonefile ?名以及??的 domain name ??有忘?吧?那如何?理???定?呢? 最??的??如下所示:
    [root@linux ~]# vi /etc/named.conf
    // 先定?出整? DNS 伺服器的相??境,包括查?、?案放置目?等
    options {
    directory "/var/named";
    dump-file "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    pid-file "/var/run/named/named.pid";
    forwarders { 168.95.1.1; 139.175.10.20; };
    allow-query { any; }; // 是否允?被查???然要可以被查?;
    allow-transfer { none; }; // 是否允??送 zone ,??不可
    };

    // ?於 DNS 伺服器的一些加密?料,先忽略?去先!
    include "/etc/rndc.key";

    // ?於 root (.) 的?定喔:
    zone "." {
    type hint; // 特殊的??!?? root (.) 用的
    file "named.root"; // 就是?名的定?啦!
    };

    // ?於本? localhost 的正反解
    zone "localhost" {
    type master;
    file "named.localhost";
    };
    zone "0.0.127.in-addr.arpa" {
    type master;
    file "named.127.0.0";
    };

    // ????出我?的 vbird.tsai ?域名
    zone "vbird.tsai" {
    type master;
    file "named.vbird.tsai";
    };
    zone "1.168.192.in-addr.arpa" {
    type master;
    file "named.192.168.1";
    };


    ?是一?最基?的 named.conf 的?容,在 options 部分你得要知道的有?些?定值:

    options ?的相????明
    ?定值 意?
    directory ???定值就是在指定你的 zone file 要放置到哪?目?啦! 非常重要的?定值。?底下 zone ?定?目的 file 配合而成完整?名。
    dump-file 由?三我?知道 DNS 伺服器??搜?到的主? IP ???料放置到快取???中, 那如果你想要?目前的快取?料??下??,就用???定值指定?案
    statistics-file 我? DNS 的一些???料,想要列出?就?入???定值指定的?名?
    pid-file ? named ??程式的 PID ??下?的一??案,???案通常可以在 named ??、???提供正?的 PID 啦!
    forwarders 前面?到 cache-only 的 DNS 伺服器?定值已???了,?前往?考。
    allow-query 是否允?用?端的查?。查?的重?就是?取?料?的?容, 既然要架? DNS ,?然要允?用?端的查?啦。?容可以填?任何?源 (any) 或 IP 或?域 (IP/netmask) 的格式。
    allow-transfer 是否允? slave DNS 的整??域?料的?送????定值? master/slave DNS 伺服器之?的?料??送有?。除非你有 slave DNS 伺服器,否???不要?放喔!

    在 options 之外就是每?正反解的?案啦!注意看到了??每?正反解就是利用 zone ???定值??理的啦! 最常?的?定值其?只有上?那??,分?是??的意?:

    zone ?的相????明
    ?定值 意?
    type ? zone 的?型,主要的?型有: master, slave 及 hint。 其中需要注意最上?的 DNS (.) 使用的是 hint 的?型,然後 master 主?用 master 啊! slave 主?就用 slave ㄇㄟ!
    file 就是 zone file 啦!那?完整的 zone file 在哪?啊?在??:

    [chroot_dir]/[options ?的 directory]/[file ?定值]
    所以?,root (.) ?定?就在:
    /var/named/chroot/var/named/named.root
    反解 zone 正解的 zone 很好理解,反解的 zone 怎?那?奇怪啊?就如同 linux.vbird.org 要追??是由 org -> vbird -> linux 一?,至於反解?例如 192.168.1.1: 192 -> 168 -> 1 -> 1。 由於 DNS 的?域名?都是由後往前找,且反解是?特殊的?域,所以必需要 ? IP 反???,同?在最後面加上『 .in-addr.arpa 』?表示反解宣告!所以 192.168.1 ?? zone 就得要?成 1.168.192.in-addr.arpa

    所以我?才??,你的 zone file ?名都是透? named.conf ???定????的啊!在?定完了 named.conf 後,接下?就是那五? zone file 的?定了,底下咱?就一?一??料??案??定?定先!



    --------------------------------------------------------------------------------
    最上? DNS (root) ?料??案的?定

    ?什?一定要有 root (.) ??最??的 DNS 伺服器主?的??呢??回到?三的?面中, 一般??,用?端使用我? DNS 伺服器?查??,如果查?的目?不在我? DNS 本身的?料??案?, 我?的 DNS 就得到 root 去??啦!那?如果有?定 forwarders 呢?那?搜?的??就??? forwarders 那部主?去?理。

    不管怎??,我?的 DNS 伺服器最好?是得要有 root 主?的??喔。那你怎?知道 root 那?部主?的 IP 啊?呵呵~?哥?然也不知道,不?掌管???路的 rs.internic.net ???站有提供啊! 你可以使用??器利用 ftp 的通??定?下?:

    ftp://rs.internic.net/domain/named.root
    ???案的?容就是每一部最上?的 root (.) 的 IP ??啦!如果你使用 vi ?查?一下, 可以看到???案的?容有??似??:(你??要????案放置到 /var/named ?中喔!)
    [root@linux ~]# vi /var/named/chroot/var/named/named.root
    ; 抱歉,版?宣告部分先省略~
    . 3600000 IN NS A.ROOT-SERVERS.NET.
    A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
    ;主?名?或?域名? TTL RR 相??的?料
    ; 以下省略


    在???案?中有好?行,每?行成一?,另外,???案?中的?解使用的是分? (;) 喔!? /etc/named.conf 不一?!要注意喔!在上表?中?哥?取?行作??例, 每一行可以?分?四??位,??行的意思是:

    root (.) 的名?伺服器主? (Name server, NS) 在 A.ROOT-SERVERS.NET. ?部主?上;
    A.ROOT-SERVERS.NET. ?部主?的 IP (A) ? 198.41.0.4
    ??行有??啊!看出?了??那? IN 代表的是使用那? RR (Resource Record, ?源??) 的意思, 至於 NS ? A 我??在下一小?介?。那?那? TTL 是啥?就是?????放置到 DNS 伺服器的快取多久啦! ?位是秒啊~

    ???案的?容你不要修改啊~因????容是 Internet 上面通用的?料,一般??,也不?常常??, 所以不需要更?他,?他放置到正?的目??改成你所指定的?名即可啊!接下?可以看看正解?案啦!



    --------------------------------------------------------------------------------
    正解?料??案的?定

    就如同案例?定?中提到的,我?共有??正解?,分?是?? localhost 以及 vbird.tsai ????域名?。 在正反解的?定??中可以??的分成?部分??察:

    ?於本?域的基??定方面:例如快取???? (TTL) 、?域名? (ORIGIN) 等等;
    ?於 master/slave 的??方面 (SOA);
    ?於本?域的?域名?伺服器所在主?名?? IP ?? (NS, A, PTR);
    其他正反解相?的?源?? (RR)。
    首先先???比???的 localhost ???域的正解?定?,named.localhost 的?容有?像??:
    [root@linux ~]# vi /var/named/chroot/var/named/named.localhost
    ; 1. 首先是主?相?的?定
    $TTL 600

    ; 2. ?於 master/slave 的授??容,如果?有 slave 主?,依?要?定喔!
    @ IN SOA localhost. root.localhost. (
    2006102001 ; Serial ?作?序?而已
    28800 ; Refresh slave 伺服器的更新??
    14400 ; Retry ? slave 主?更新失?,多久再重新更新一次
    720000 ; Expire 重? retry 多久後就宣告不治....不再更新
    86400 ) ; Minimum 可?? TTL ,尤其是你?有?定 $TTL ?

    ; 3. 本?域的 DNS 伺服器的主?名?? IP 的??
    @ IN NS localhost. ; 特?留意最後面的那?小??!
    localhost. IN A 127.0.0.1

    ; 4. 其他 RR 可以加入的地方。


    一般第一次看到???案的朋友都?很?痛~很多?西看不懂~其??他拆成??小部分?看,你就?看懂啦! 底下我?就上面提到的四大部分分???一?先:

    ?於本?域的一些?定值
    ?定值 ?明
    $TTL ??得?三的流程吧??有外部 DNS 伺服器?你的 DNS 的???域?行查??,?一????放置在?方 DNS 伺服器??秒?的意思。
    $ORIGIN ???定值可以重新指定 zone 的定?。在??的情?下, ??正反解?料??案中的 zone 是由 /etc/named.conf 所指定的,就是 zone 那???的功能。 不?,?? zone 是可以改的,就是用 $ORIGIN ?修?就是了。通常???定值不?用到的。

    我?前面?到很多 DNS 快取 (cache) 的功能?吧!就是向外查??所查?到的?料??存在自己的快取???中。 那?????可以放在我的 DNS 主??多久?那就是 "?方" ?定的 $TTL ????的功能了。

    所以,?你的某??域名??的主???常常???,??? $TTL ??要?定小一?, 免得你的???是?法被查?到 (因??方可能?快取住你之前?的?料!)。而如果你的 DNS ?容已?很?定了, 那????值可以?定大一? (例如 86400 或三天),如此一?外部的 DNS 才不?常常?你的 DNS 要求, 而造成你的 DNS 忙碌的??。

    要注意的是,底下?始每一行的?定都?是??的:

    [主?或?域名?] [TTL] IN [RR] [RR ?容]
    中括?的?容是你要?解的,尤其是各??源???? [RR] ???目! ?然我?在整?的?定?中可以直接指定 $TTL 了,不???每????可以自行?定 TTL 啦! 但在???定?中, TTL 通常是省略掉的! 此外,我?? RR (Resource Record) ???或??,各? RR 的???容都不相同。 接下??我?看一看 master/slave DNS 伺服器之?是如何?行 zone file ?料?的??的? 那就是 SOA 那一行的?容?!

    ?於 master/slave 授?方面的?定值
    符?? RR ?明
    @ ??符?代表 zone 的意思! 以上面的 named.local ??, ???案由 /etc/named.conf 定?出 zone ? localhost. ,因此在本?案的 @ 就代表 localhost. ?!
    . ??? (.) 很重要!因?他代表一?完整主?名? (FQDN) 而不是?有 hostname 而已。?例??,如果你在本?定?上面??一?主?名?? www ?,那部主?的 FQDN ? www.localhost. 如果你?出 www.localhost ?,由於末了?有那?小??,? zone ?主?加入?主?名?, 所以最?的 FQDN ??成 www.localhost.localhost. 喔!
    SOA Start of Authority 的意思。 ????代表著 master/slave 相?的??、授??料。 不?你的 DNS 系?有?有?定 master/slave 的架?,都需要含有???定才好。 SOA 後面共?有三???,所以?行?:
    [zone] IN SOA [主?名] [管理? email] ([五?更新????])
    每??定?目你可以??看:
    主?名:就是 master DNS 的主?名?,通常填?本身主?名即可。?是要注意那?小??的存在?否喔!非常重要!
    管理? email:本???是 "root@localhost." 的,不?因? @ 已?被作?特殊代? (zone), 所以就用小???取代,因此 email 就成? "root.localhost." ?!
    (五??字):?五??字分?代表 serial, refresh, retry, expire, ttl。
    至於那五??字的意?是??的:

    Serial :只是一?序?,但??序?可被用?作? slave ? master 更新的依?。 ?例??, master 序?? 100 但 slave 序?? 90 ?,那??? zone file 的?料就?被?送到 slave ?更新了。 由於??序?代表新??料,通常我?建?你可以利用日期??定!?例??,上面的?料是?哥在 2006/10/20 所?的第一次,所以?哥用 2006102001 作?序?代表!
    Refresh :除了根? Serial ?判?新?之外,我?可以利用?? refresh(更新) 命令 slave 多久?行一次主?更新;
    Retry :如果到了 Refresh 的??,但是 slave ??法?接到 master ?, 那?在多久之後,slave ?再次的主????主???;
    Expire :如果 slave 一直?法? master ?接上,那???多久的??之後, ?命令 slave 不要再?接 master 了! 也就是?,此?我?假? master DNS 可能遇到重大??而?法上?,?等待系?管理??理完?後, 再重新?到 slave DNS 重新?? bind 吧!
    Minimun :??就有?像是 TTL 啦!
    另外,????字的大小是有限制的!你必需要?解喔:

    Serial <= 2^32 = 4294967296
    Refresh >= Retry * 2
    Refresh + Retry < Expire
    Expire >= Retry * 10
    Expire >= 7Days


    老??,初次?定 DNS 的朋友大概都?被那?小?? (.) 玩死~其?你不要太??,只要?住:『 加上了 . 表示??完整的主?名?,亦即是 "hostname + domain name" 了, 如果?有加上 . 的?,表示?名??? "hostname" 而已!至於 SOA 的?,那五??字通常你可以照抄啦!只要改序? (Serial) 即可!

    接下??是?定我?的 DNS 伺服器自己的?域???域的名?解析器 (name server, NS) ?!

    DNS 自己的?域之名?解析器
    符?? RR ?明
    NS 就是 name server 的??,????的??是:

    [zone] IN NS [主?名?]
    注意喔, NS 後面接的一定是主?名?喔!代表的意思是?:『?? zone 的查??向後面?部主?要求』的意思。 所以,如果你?? zone 有?部以上的 DNS 伺服器???,那就必需要??? NS 了!而 NS 後面接的主?名?必需要有 IP 的??啊!因此就需要 A ????了!
    A 是正解的符?,??是:

    [hostname] IN A [IP]
    意思是??部主?的 IP ??之意!也是最常用的一???了!

    要注意喔,每? zone 至少要一? NS 才行!而那? NS 後面的主?可能是你自己,也可能是你的子?域授?啊! 你必需要很清楚知道 NS 的意?才行!上面三?部分是?乎所有正反解?案所必需要的??, 而我?最????的 localhost ?域只要???定就妥?了! 接下??我?看一看 vbird.tsai ???域的主?名??料??定?吧!
    [root@linux ~]# vi /var/named/chroot/var/named/named.vbird.tsai
    $TTL 600
    @ IN SOA linux.vbird.tsai. root.linux ( 2006102001 28800 14400 720000 86400 )
    ; 本?域的 DNS 伺服器的主?名?? IP 的??
    @ IN NS linux.vbird.tsai.
    @ IN NS slave.vbird.tsai.
    linux IN A 192.168.1.254
    slave IN A 192.168.1.150
    @ IN MX 10 linux

    ; 其他 RR 可以加入的地方
    www IN CNAME linux
    ftp IN CNAME linux
    forum IN CNAME linux
    winxp IN A 192.168.1.100
    sun IN A 192.168.1.200
    sun IN TXT "The sun solaris OS"
    sun IN HINFO "Celeron 1G""Solaris 10"


    上面的表格?中,TTL ? SOA ?乎都??,不?你要特?注意 SOA 後面接的第二???也就是 email 的部分, 可以???哥??了? root.linux 而已,因?最末了?有小??,所以 DNS ?主?的加上 zone 嘛! 所以 root.linux 相?於 root.linux.vbird.tsai ?!^_^ !另外,那五??字只要用空白?隔?即可。

    至於本?域的解析器方面,?哥使用了???法,分?是 "linux.vbird.tsai." 及 "linux" ,注意到差?了???,就是那?小?? (.) 啦!意??自行?考前面提到的。 同?因????域有?? DNS ??,因此在??用了?? NS 喔! 我???再?出??常?的正解???:

    ?於正解的其他 RR ??
    符?? RR ?明
    MX 就是 Mail eXchanger(MX) 的??,他的??是???的:

    [hostname] IN MX [?序] [主?名?]
    注意?,?? MX ? mail server 有?,?有 mail server 的朋友可以省略????,但是如果你的?域?有 mail server ?,就必需要?定?? MX 才好。MX 的用途是在於『?件??』或者是?由上??件主??份的一??制, 後面?定的那?主?名?通常是你的上游?件主?,相?的意?我??在 mail server 章?再跟大家??。 另外, MX 後面接的?值是越小越?先,而接的主?名?必需要具有 A 的??才可以!

    如果你不知道如何?定,通常建?你直接?定成你的 mail server 主?名?即可
    CNAME ?名思?,????在建立『主??名』的啦!???:

    [hostname] IN CNAME [主?名?]
    注意一下, CNAME 後面接的是主?名?喔。因?有好?部主?名?都??到同一? IP 上?, 你?然可以??每?主?名??予一? A ,不?如果未?要改 IP ?,你就得改好??啦! 此?改? CNAME ??理就很??。如上表所示,如果我想要知道 ftp.vbird.tsai 的 IP ?, DNS ?先告知 ftp.vbird.tsai ?於 linux.vbird.tsai 的 CNAME ,然後再透? linux.vbird.tsai ?得到正?的 IP。
    TXT ???西在?行『?明』而已!亦即是前面那部主?的一些??。 特?注意的是,?事的?,『??不要?得太??,有的?候甚至??要?些??的?息!』 ?什?呢?如果?得太??的?,那?那些? cracker 不就很??的就可以?您的?站??取得, ??而入侵了?? @_@
    HINFO ???西後面接??咚咚,第一?接的是硬?的等?, 第二?接的?是作?系?,???咚咚最好不要用在公?的 DNS 主?上面,跟 TXT 一?的??啦!如果要?定的?, 最好使用?引?分隔??喔!

    ????就?定妥??。在 DNS 的正解部分,他的重要??特?的多,就是比???定的意思~ 所以,您需要特?留意每??定值是否?正?喔!一般而言,我??建?大家,?定完成?且?行完??的 script ,千?要?得去 /var/log/messages ??看一看有?有???息喔! 接下??我?看看反解吧!



    --------------------------------------------------------------------------------
    反解?料??案的?定

    反解跟正解一?,?都需要 SOA 的??,也需要 NS ??咚咚,唯一不同的大概就是由 IP ??成? hostname 的不同了吧!
    [root@linux ~]# vi /var/named/chroot/var/named/named.127.0.0
    $TTL 600
    @ IN SOA localhost. root.localhost. ( 2006102001 28800 14400 720000 86400 )

    ; 本?域的 DNS 伺服器的主?名?? IP 的??
    @ IN NS localhost.
    1 IN PTR localhost.


    反解通常只有一?需要注意的地方,那就是 PTR,?是啥?

    ?於反解的 RR ??
    符?? RR ?明
    PTR Pointer 的??,他的??是???的:

    [IP] IN PTR [主?名?]
    由於???案的 zone ? 127.0.0 ,所以我?只要加一??字 (最後一? IP 的?字) 就可以啦!而那? 1 表示的就成?了 127.0.0.1 ?!

    那??一今天我???的是 B Class 的 zone 呢?例如 127.0 ??的 zone 呢?很??啦! 就填???字即可!也就是 0.1 ?!

    最重要的地方就是:後面的主??量使用完整 FQDN,亦即加上小?? (.) !?什?呢?因?反解的 zone 是 0.0.127.in-addr.arpa,所以如果你?成 localhost ?,你的?? IP ??的主?名????成: localhost.0.0.127.in-addr.arpa 之?的怪?主?名?啊!

    至於 192.168.1.0/24 ???域的 DNS 反解?成?:
    [root@linux ~]# vi /var/named/chroot/var/named/named.192.168.1
    $TTL 600
    @ IN SOA linux.vbird.tsai. root.linux.vbird.tsai. (
    2006102001 28800 14400 720000 86400 )

    ; 本?域的 DNS 伺服器的主?名?? IP 的??
    @ IN NS linux.vbird.tsai.
    @ IN NS slave.vbird.tsai.
    254 IN PTR linux.vbird.tsai.
    150 IN PTR slave.vbird.tsai.

    ; 其他 RR 可以加入的地方。
    100 IN PTR winxp.vbird.tsai.
    200 IN PTR sun.vbird.tsai.


    反解很??吧!只要?定好 IP ??的主?名?即可!再次??要使用 FQDN 在反解?中喔!



    --------------------------------------------------------------------------------
    DNS 的????察

    DNS 的??也太??了吧?就直接利用系?提供的?? script 即可!
    [root@linux ~]# /etc/init.d/named start <==也可能是需要 restart 喔


    但是????可不?得是成功的!你『?必』要去 /var/log/messages ?察?才行!
    [root@linux ~]# tail -n 20 /var/log/messages | grep named
    named[28]: starting BIND 9.2.4 -u named -t /var/named/chroot
    # 由???明我?可以知道 chroot 的目?? named ??的??等?料

    named[28]: using 1 CPU
    named[28]: loading configuration from '/etc/named.conf'
    # 由???明,可知道主要的?定?是由哪??入的!?得加上 chroot

    named[28]: listening on IPv4 interface lo, 127.0.0.1#53
    named[28]: listening on IPv4 interface eth0, 192.168.1.254#53
    named[28]: command channel listening on 127.0.0.1#953
    named[28]: command channel listening on ::1#953
    # 由??可以查出 DNS 相?的服?在哪??介面有提供!
    # 至於那? command 我??在後面再???明。

    named[28]: zone 0.0.127.in-addr.arpa/IN: loaded serial 2006102001
    named[28]: zone 1.168.192.in-addr.arpa/IN: loaded serial 2006102001
    named[28]: zone localhost/IN: loaded serial 2006102001
    named[28]: zone vbird.tsai/IN: loaded serial 2006102001
    # ?得要有?些 loaded serial 的?料,?且不能出?任何??喔!

    named[28]: zone vbird.tsai/IN: sending notifies (serial 2006102001)
    named[28]: zone 1.168.192.in-addr.arpa/IN: sending notifies (serial 2006102001)
    # ???是?於外部有其他 slave DNS ?,??送注意?息的?明。



    Tips:
    如果你在 /var/log/messages ?面一直看到??的????:
    couldn't add command channel 127.0.0.1#953: not found
    那表示你?必需要加入 rndc key ,??考本章後面的 利用 RNDC 指令管理 DNS 伺服器 的介?,?他加入你的 named.conf 中!

    在上述的?出?料?中因???太?了,所以?哥????主?的?位拿掉了!上面是?利???的??, 如果出???怎??通常出???的原因是因?:

    ?法?定??:
    ????好解?,因?在 /var/log/messages ?面有??的?明,按照?容去修?即可;


    ???定??:
    ??就比?困?了!?什?呢?因?他主要?生在您?定 DNS 主?的?候,考?不?所?生的??!例如忘?加上 (.) , 系?不??示???息,但是??造成查?的?判,而 MX ?定的主?名???,也不?出?有??的?息,但是 mail server 就是?收不到信等等~?些??都需要很??的 DNS client 的??才能知道??的所在。
    我???先就?法?定??方面?行介?,至於???定的??,那?就需要多多的?行??才能知道了~ 底下的???息都???在 /var/log/messages ?面喔!
    named: /etc/named.conf:11: missing ';' before '}'
    # 注意到上面提到的?案??字???明的是 /etc/named.conf 的第 11 行,
    # 至於??是因?缺少分? (;) 所致!去修正一下即可。

    dns_rdata_fromtext: named.vbird.tsai:5: near eol: unexpected end of input
    zone vbird.tsai/IN: loading master file named.vbird.tsai: unexpected end of input
    # 指的是 named.vbird.tsai 的第五行有??,通常是 SOA 那五??字?有完全!
    # ??去修?一下即可啊!

    dns_rdata_fromtext: named.vbird.tsai:12: near 'linux': not a valid number
    zone vbird.tsai/IN: loading master file named.vbird.tsai: not a valid number
    # ?明第 12 行在 linux 附近需要有一?合法的?字!??去瞧瞧改改即可!


    通常最大的??是....打?字!?了避免?您打?字,上面???案?哥?他打包了, 你可以在下列的??下?上述的?案喔!

    http://linux.vbird.org/linux_server/0350dns/master_dns.tar.gz

    --------------------------------------------------------------------------------
    ?料?的更新

    再??一?,那如果你的?料?需要更新?,??做哪些??啊? ?例??,你的某?主? IP 或者主?名?要?更,也可能是新增某?主?名?? IP 的??呢! 很??啦,通常??做就好了:

    先??要更改的那? zone 的?料??案去做更新,就是加入 RR 的??即是!
    更改? zone file 的序? (Serial) ,就是那? SOA 的第一??字, 因????字?影?到 master/slave 的判定更新?否喔!
    重新?? named ,或者是? named 重新?取?定?即可。
    就????啊!不?大家常常?忘?第二?步?啦!就是?序??大啊! 如果序??有?大,那 master/slave 的?料?可能不?主?的更新, ?造成一些困?喔!



    --------------------------------------------------------------------------------
    ??

    在上面的?定都搞定,?且??之後,你的 DNS 伺服器??是已?妥?的在?作了。 那你怎?知道你的?定是否合理??然要作??喔!??有??方式,一?是藉由 client 端的查?功能, 目的是??你的?料??定有???;另外你也可以?上底下???站:

    http://www.dnsreport.com/
    ???站可以?你??你的 DNS 伺服器的主要?定是否有??!不?,???站的??主要是以合法授?的 zone ?主,我?自己?搞的 DNS 是?有?法?查的啦!真是可惜~ 接下?,?查? 在 Client 端的?? 吧!

    --------------------------------------------------------------------------------
    Master/Slave 架?的???定:

    ?完了 Master DNS 伺服器之後,接下??我???解一下 slave DNS 伺服器的架?方式吧! 在架?之前,你??要?得?何需要 slave DNS 呢?

    ?了不??的提供 DNS 服?,你的?域至少需要有?部 DNS 伺服器?提供查?的功能;
    承上,??部 DNS 伺服器??要分散在??以上的不同 IP ?域才好;
    ?方便管理,通常除了一部主要 Master DNS 之外,其他的 DNS ?使用 slave 的模式;
    slave DNS 伺服器本身??有?料?,他的?料?是由 master DNS 所提供的;
    master/slave DNS 必需要可以相互?? zone file 的相???才行,?部份需要 /etc/named.conf 之?定?助。
    好了,那??我???上一?案例的延?吧!前一小?是在 192.168.1.254 那部 master DNS 上面?定的, 底下的?定大部分都是在 192.168.1.150 那部 slave DNS 主?上?定的喔!假?我?部 slave.vbird.tsai ?需要取得 vbird.tsai 以及 192.168.1 ????域,其他的例如 named.root, named.localhost 及 named.127.0.0 都需要自理喔!


    --------------------------------------------------------------------------------
    master DNS ?限的?放

    我?在 /etc/named.conf ?定??中的???目曾??定? allow-transfer ,?且?定所有人均不得使用 zone 的?送 (transfer)。但是我?的 master DNS 必?要? slave DNS 可以?行 zone 的?送啊,因此你必?要?? vbird.tsai 及 192.168.1 ??? zone ??用 allow-transfer 的?定?目才行。整??程很??:
    [root@linux ~]# vi /etc/named.conf
    ....前面省略....
    zone "vbird.tsai" {
    type master;
    file "named.vbird.tsai";
    allow-transfer { 192.168.1.150; };
    };
    zone "1.168.192.in-addr.arpa" {
    type master;
    file "named.192.168.1";
    allow-transfer { 192.168.1.150; };
    };
    ....後面省略....


    除此之外,在上?所列示的那???料??案?中,你必?要填入所需要的 NS ??才行! ?部份我?已?在前一小?提?了,?你自行?考喔! ?定完?後?重新?? named 啦!



    --------------------------------------------------------------------------------
    slave DNS 的?定

    基本上, slave DNS 的 /etc/named.conf ? master DNS ?乎一模一?啊! 唯一的差?在於?? zone 的?型 (type) 而已。?定方式唯一的差?在??:
    [root@slave ~]# vi /etc/named.conf
    ....前面省略....
    zone "vbird.tsai" {
    type slave;
    file "named.vbird.tsai";
    masters { 192.168.1.254; };
    };
    zone "1.168.192.in-addr.arpa" {
    type slave;
    file "named.192.168.1";
    masters { 192.168.1.254; };
    };
    ....後面省略....


    你得要特?留意?型是 slave 之外,那?主??源 (masters) 是有加 "s" 喔! ??很容易忘?啊!至於?料??案?面,必?要存在的有:

    named.root
    named.localhost
    named.127.0.0
    在 slave DNS ?中,?三? zone 的?型分?是 hint ? master ,所以?然要??存在, 至於那? named.vbird.tsai 及 named.192.168.1 就不要存在啦! 因???? zone file 是由 master DNS 主??送??的!只是你要注意 /var/named/chroot/var/named ??目?的?限必?要是 named ??使用者可以?入的??!?很重要喔!
    [root@slave ~]# ls -l /var/named/chroot/var/named
    -rw-r--r-- 1 root root 229 Oct 18 14:44 named.127.0.0
    -rw-r--r-- 1 root root 675 Oct 18 13:44 named.localhost
    -rw-r--r-- 1 root root 2517 Oct 18 00:34 named.root
    # 注意,只要三??案即可,其他?? named.vbird.tsai ?
    # named.192.168.1 不可以存在!否??有??啊!

    [root@slave ~]# ls -ld /var/named/chroot/var/named
    drwxr-x--- 4 named named 4096 Oct 19 01:17 /var/named/chroot/var/named
    # 注意到,??目?的使用者必?要是 named ,然後分?至少得 750 才行!


    在??最重要的?限???理完?之後,接下?你可以在 slave DNS ?部伺服器上面?? DNS 啦!
    [root@slave ~]# /etc/init.d/named start

    [root@slave ~]# tail -n 20 /var/log/messages
    zone 1.168.192.in-addr.arpa/IN: transferred serial 2006102001
    transfer of '1.168.192.in-addr.arpa/IN' from 192.168.1.254#53: end of transfer
    zone 1.168.192.in-addr.arpa/IN: sending notifies (serial 2006102001)
    zone vbird.tsai/IN: transferred serial 2006102001
    transfer of 'vbird.tsai/IN' from 192.168.1.254#53: end of transfer
    zone vbird.tsai/IN: sending notifies (serial 2006102001)
    # 理?上,你???看到如上的?出??才?!系??告知 zone file 的???果

    [root@slave ~]# ls -l /var/named/chroot/var/named
    -rw-r--r-- 1 root root 229 Oct 18 14:44 named.127.0.0
    -rw------- 1 named named 472 Oct 19 01:29 named.192.168.1
    -rw-r--r-- 1 root root 675 Oct 18 13:44 named.localhost
    -rw-r--r-- 1 root root 2517 Oct 18 00:34 named.root
    -rw------- 1 named named 580 Oct 19 01:29 named.vbird.tsai


    您瞧!如此一?您的 zone file 就?主?的被建立起?喔!未?如果你的 master DNS 要更新?料??, 只要修改?序?,?重新?? named 後,?部 slave DNS 就?跟著更新啦!啊!真是『福?啦!』!!

    不?,如果你??到?? slave DNS ?,你的登???竟然是??:
    1 dumping master file: tmp-XXXXEnDd9D: open: permission denied
    2 transfer of 'vbird.tsai/IN' from 192.168.1.254#53: failed while receiving
    responses: permission denied
    3 transfer of 'vbird.tsai/IN' from 192.168.1.254#53: end of transfer


    如果出??似??的三行?,不必?疑啦!肯定是?限??啦! ?再次?查你的?料??案所放置的目??限是否可以? named ?入啊!?理?理就好了! 至於上述的相??案可以在??下?:

    http://linux.vbird.org/linux_server/0350dns/slave_dns.tar.gz

    --------------------------------------------------------------------------------
    Client 端的?定:

    ?完了在 DNS Server 端的?定,接下?,我?再?聊一聊?於 Client 端的?定???吧!


    --------------------------------------------------------------------------------
    相??定?

    ?前面的?明?面,我??得主?名???到 IP 有??方法,早期的方法是直接?在?案?面???, 後?比?新的方法?是透? DNS 架?!那????方法分?使用什??定??可不可以同?存在? 若同?存在?,那?方法?先?嗯!我?先??一????定?吧!
    /etc/hosts :??上面就提?了,??是最早的 hostname ?? IP 的?案;
    /etc/resolv.conf :??重要!就是 DNS 主?的 IP;
    /etc/nsswitch.conf:???案?是在『?定』先要使用 /etc/hosts ?是 /etc/resolv.conf 的?定!
    一般而言, Linux 的??主?名?? IP 的??搜?都以 /etc/hosts ??先, ?什?呢?您可以查看一下 /etc/nsswitch.conf ,?找到 hosts 的?目:
    [root@linux ~]# vi /etc/nsswitch.conf
    hosts: files dns


    上面那? files 就是使用 /etc/hosts 而最後的 dns ?是使用 /etc/resolv.conf 的 DNS 主? IP 搜?啦!因此,您可以先以 /etc/hosts ??定 IP ??ㄋㄟ! ?然啦,您也可以?他????,不?,?是 /etc/hosts 比???,所以?他?在前面比?好啦!

    好啦,既然我?是要?行 DNS ??的,那? /etc/resolv.conf 的?容,自然就要填?我?自己的 IP ?!所以您?????:
    [root@linux ~]# vi /etc/resolv.conf
    nameserver 192.168.1.254
    nameserver 168.95.1.1
    nameserver 139.175.10.20


    DNS 主?的 IP 可以?定多?,?可以?您的?人??有?援的功能!?例??, 我上面共?定了三部主?作?我的 DNS 查?,? 192.168.1.254 那部主????, 我的 Client ???立刻以第二部主?作? DNS 查?的主要主?。所以, 通常我?都?建?人家在???案?可以?定三?左右的 DNS 主?名?!以保不?之需啊~

    另外,上面三? DNS 的 IP 那??先被使用??然是照?序?的~ 所以?先以 192.168.1.254 那部主??查?,若 192.168.1.254 ?了,才?使用 168.95.1.1 那部?查?。


    Tips:
    ?量不要超?三部以上的 DNS IP ,因? DNS 的查?也是要??的,假??在你?法?接到 DNS 主?是因?你自己的?路??,而你?定了 10 部 DNS IP 在 /etc/resolv.conf ?中,那?你的 Linux 就?花? 10 倍的??去?行每一次?法成功的主?名?? IP 的??喔!

    Tips:
    在自家?的?有??合法授?的 DNS 最好不要以 Internet 上面已?存在的?域名????架?! ?例??,假?今天你以 192.168.1.254 那部?器?架? *.yahoo.com 的?域, 因?我? 192.168.1.254 放置在第一位,?致每次的查?其? yahoo.com ???域的?料都是直接由 192.168.1.254 所提供,?很不好~因?可能?造成您的用?端的不便~

    好了,我?要??我?的 DNS 主??定是否正??!



    --------------------------------------------------------------------------------
    DNS 的查?指令: host, nslookup, dig

    ?? DNS 的程式有很多,我?先?使用最??的 host 吧!然後?有 nslookup 及 dig 哩!


    --------------------------------------------------------------------------------

    host
    ?法:
    [root@linux ~]# host [-a] [FQDN] [server]
    [root@linux ~]# host -l [domain] [server]
    ???明:
    -a :代表列出?主?所有的相???,包括 IP、TTL 等等
    -l :若後面接的那? domain ?定允? allow-transfer ?,?列出? domain
    所管理的所有主?名????料!
    server:????可有可?,?想要利用非 /etc/resolv.conf ?的 DNS 主?
    ?查?主?名?? IP 的???,就可以利用????了!

    ?例一:?制以 192.168.1.254 ?部 DNS 主??查?
    [root@linux ~]# host www.vbird.tsai 192.168.1.254
    Using domain server:
    Name: 192.168.1.254
    Address: 192.168.1.254#53 <==??重要!告知????是哪部 DNS 伺服器去找的!
    Aliases:

    www.vbird.tsai is an alias for linux.vbird.tsai.
    linux.vbird.tsai has address 192.168.1.254


    有注意到上面?出的特殊字?部分??很多朋友在??自己的 DNS ?,常常?『指定到??的 DNS 查?主?』了~ 因?他?的 /etc/reslov.conf 忘?改,所以老是找不到自己?定的?料? IP ?料。所以你要仔?看啊! ?例二:找出我?自己?? vbird.tsai ?域的所有主???
    [root@linux ~]# host -l vbird.tsai 192.168.1.254
    Using domain server:
    Name: 192.168.1.254
    Address: 192.168.1.254#53
    Aliases:

    vbird.tsai name server linux.vbird.tsai.
    vbird.tsai name server slave.vbird.tsai.
    linux.vbird.tsai has address 192.168.1.254
    slave.vbird.tsai has address 192.168.1.150
    ....後面省略....


    上面的??可就熟悉多了吧?!??!那就是我?在 named.vbird.tsai ?面的?定值啊! 不?,?不是所有的 domain 都可以作??的事情~?例??,如果我?下?:
    [root@linux ~]# host -l yahoo.com
    Host yahoo.com not found: 5(REFUSED)
    ; Transfer failed.


    ??的回?是因?在?方的 /etc/named.conf ?面??有?定 allow-transfer 那??定??的原因啊! 至於 host -a 的?出??? dig 是一模一?的,所以我?先不介?,在 dig ?再???明。



    --------------------------------------------------------------------------------

    nslookup
    ?法:
    [root@linux ~]# nslookup [FQDN] [server]
    [root@linux ~]# nslookup
    ???明:
    1. 可以直接在 nslookup 加上待查?的主?名?或者是 IP ,[server] 可有可?;
    2. 如果在 nslookup 後面?有加上任何主?名?或 IP ,那??入 nslookup 的查?功能
    在 nslookup 的查?功能?中,可以?入其他????行特殊查?,例如:
    set type=any :列出所有的??『正解方面?定?』
    set type=mx :列出? mx 相?的??!

    ?例一:直接搜? winxp.vbird.tsai 的 IP ??
    [root@linux ~]# nslookup winxp.vbird.tsai 192.168.1.254
    Server: 192.168.1.254
    Address: 192.168.1.254#53 <==同?的,?注意搜?的 DNS IP 喔!

    Name: winxp.vbird.tsai
    Address: 192.168.1.100


    nslookup 可??的? hostname ? IP ??列出而已,不?,?是??查?的 DNS 主?的 IP 列出?的! 如果想要知道更多??的??,那可以直接?入 nslookup ????的操作?面中,如下?例:
    [root@linux ~]# nslookup <==?入 nslookup 查??面
    > 192.168.1.254 <==?行反解的查?
    > www.vbird.tsai <==?行正解的查?
    # 上面????列出正反解的??,?有啥了不起的地方啦!
    > tw.yahoo.com <==?行非本?上的查?
    Server: 192.168.1.254
    Address: 192.168.1.254#53

    Non-authoritative answer:
    # 注意??,因?不是自己的?料?,所以是未???的?料(可能是快取)
    tw.yahoo.com canonical name = tw.yahoo-ap1.akadns.net.
    tw.yahoo-ap1.akadns.net canonical name = vip1.tw.tpe.yahoo.com.
    Name: vip1.tw.tpe.yahoo.com
    Address: 202.43.195.52
    > set type=any <==?更查?,不是?有 A,全部??都列出?
    > sun.vbird.tsai
    Server: 192.168.1.254
    Address: 192.168.1.254#53

    Name: sun.vbird.tsai
    Address: 192.168.1.200
    sun.vbird.tsai text = "The sun solaris OS" <==看吧!更多??跑出?!
    sun.vbird.tsai hinfo = "Celeron 1G" "Solaris 10"
    > exit <==??吧!皮卡丘


    在上面的案例?中,?注意,如果您在 nslookup 的查??面?中,?入 set type=any 或其他??, 那?就?法再?行反解的查?了!?是因? any 或者是 mx 等等的??都是??在正解 zone ?中的?故!



    --------------------------------------------------------------------------------

    dig
    ?法:
    [root @test root]# dig [@server] [FQDN] [type]
    ???明:
    @server :如果不想以 /etc/resolv.conf ?作? DNS 主?,?可在此填入其他的 IP
    type :??是查? A ??,你可以在??入其他的??,如 mx, ns 等。
    此功能亦可使用 [-t type] ??理。

    ?例一:查? linux.vbird.tsai 吧!
    [root@linux ~]# dig @192.168.1.254 linux.vbird.tsai
    ; <<>> DiG 9.2.4 <<>> @192.168.1.254 linux.vbird.tsai
    ; (1 server found)
    ;; global options: printcmd
    ;; Got answer:
    ;; -;>>HEADER<<- opcode: QUERY, status: NOERROR, id: 8977
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1

    ;; QUESTION SECTION:
    ;linux.vbird.tsai. IN A

    ;; ANSWER SECTION:
    linux.vbird.tsai. 600 IN A 192.168.1.254

    ;; AUTHORITY SECTION:
    vbird.tsai. 600 IN NS slave.vbird.tsai.
    vbird.tsai. 600 IN NS linux.vbird.tsai.

    ;; ADDITIONAL SECTION:
    slave.vbird.tsai. 600 IN A 192.168.1.150

    ;; Query time: 4 msec
    ;; SERVER: 192.168.1.254#53(192.168.1.254)
    ;; WHEN: Thu Oct 19 15:34:23 2006
    ;; MSG SIZE rcvd: 100


    在???例?中,我?可以看到整??示出的?息包括有??部分:

    HEADER(??):?示查?的?容有哪些,包括一? query, 一? answer 及????部分。
    QUESTION(??):?示所要查?的?容,因?我?是查? linux.vbird.tsai 所以??自然就是?示???息。
    ANSWER(回?):依???的 QUESTION 去查?所得到的?果,因?在我?的?定?中?有?定了 A 的??,所以??自然就....
    AUTHORITY(??):由??我?可以查? vbird.tsai ???域是由 linux.vbird.tsai 及 slave.vbird.tsai ??定的~?面那? 600 是什?呢?很??,他就是我?所?定的 ttl 那??值啦!
    ?例二:查? vbird.tsai ???域的 MX 吧!
    [root@linux ~]# dig @192.168.1.254 vbird.tsai mx
    ; <<>> DiG 9.2.4 <<>> @192.168.1.254 vbird.tsai mx
    ; (1 server found)
    ;; global options: printcmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3390
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

    ;; QUESTION SECTION:
    ;vbird.tsai. IN MX <==瞧!要求的?料不一?了喔!

    ;; ANSWER SECTION:
    vbird.tsai. 600 IN MX 10 linux.vbird.tsai.

    ;; AUTHORITY SECTION:
    vbird.tsai. 600 IN NS slave.vbird.tsai.
    vbird.tsai. 600 IN NS linux.vbird.tsai.

    ;; ADDITIONAL SECTION:
    linux.vbird.tsai. 600 IN A 192.168.1.254
    slave.vbird.tsai. 600 IN A 192.168.1.150

    ;; Query time: 4 msec
    ;; SERVER: 192.168.1.254#53(192.168.1.254)
    ;; WHEN: Thu Oct 19 15:45:58 2006
    ;; MSG SIZE rcvd: 116


    由於 dig 的?出???在是太?富了,又分成多?部分去?行回?,因此很?合作? DNS 追?回?的一?指令呢! 你可以透???指令??解一下你所?定的 DNS ?料?是否正?,??行除?喔! ^_^


    --------------------------------------------------------------------------------
    Domain 的??查?: whois

    whois [root@linux ~]# whois [domainname] <==注意啊!是 domain 而不是 hostnam
    [root@linux ~]# whois redhat.com
    Registrant:
    Red Hat, Inc.
    P.O. Box 13588
    Research Triangle Park, NC 27709
    US

    Domain Name: REDHAT.COM

    Administrative Contact, Technical Contact:
    Network, Operations noc@REDHAT.COM
    Red Hat, Inc.
    1801 Varsity Drive
    ATTN Domain Administrator
    Raleigh, NC 27606
    US
    919.754.3700 fax: 919-754-3704

    Record expires on 25-May-2011.
    Record created on 26-May-1994.
    Database last updated on 19-Oct-2006 03:58:04 EDT.

    Domain servers in listed order:

    NS3.REDHAT.COM 66.187.229.10
    NS2.REDHAT.COM 66.187.224.210
    NS1.REDHAT.COM 66.187.233.210


    whois ??指令可以查?到?初???? domain 的使用者的相???。不?, 由於近年?很多?路??安全的??,?? whois 所提供的??真的是太??了, ?了保?使用者的?私?,所以,目前?? whois 所查?到的??已?不?得是完全正?的了~ 而且,在?示出 whois 的??之前,??有一段宣告事?的告知呢~ ^_^y

    如果使用 whois ??查?哥所??的合法 domain ?是如何呢?看看:
    [root@linux ~]# whois vbird.idv.tw
    [查? whois.twnic.net]
    [whois.twnic.net]
    Domain Name: vbird.idv.tw

    Contact:
    Der-Min Tsai
    vbird@aerosol.ev.ncku.edu.tw

    Record expires on 2008-09-17 (YYYY-MM-DD)
    Record created on 2002-09-13 (YYYY-MM-DD)

    Registrar: HINET


    呵呵!?? domain ?在 2008/09/17 失效的意思啦!?告完?!

    ??如何,我?都可以透? nslookup, host, dig 等等的指令?查?主?名?? IP 的??, ?些指令的用法可以?您以 man command ?查?更多的用法喔!


    --------------------------------------------------------------------------------
    DNS 伺服器的???定:

    其?, DNS 主?的?作原理?架?方式的?化,真的很高深莫?的!在??, 我??外的提出一些比???的?容?大家?考?考,例如子?域的授???, 以及架?一?合法授?的 DNS 主?。


    --------------------------------------------------------------------------------
    子?域授???

    好了,那??一我的?路很大,我只想要??上?的 DNS 而已, 下?希望直接交?各?位的??人???,要怎??定呢? ??例子??,以成大?例,成大?中?管理各?系所的的主? IP 而已,由於各?系所的主??量可能很大,如果每?人都要??中??定, 那?管理?可能??掉,而且在????上也不太人性化。

    所以?,?中就?各? subdomain (子?域) 的管理?交?各?系所的主?管理?去管理,如此一?, 各系所的?定上面?比??活,且上? DNS 主?也不用太麻??!

    好了,那?如何?放子?域授?呢?我?以??在 master 上面建立的 vbird.tsai ?? zone ?例, 假?今天你是? ISP ,有?人想要跟?申? domain name ,他要的 domain 是『 niki.vbird.tsai 』, 那你?如何?理?其?只要指定 NS 就好了啦!如下所示:


    上?主?端 vbird.tsai 的?定:
    上? DNS 主?的?定其?很??啦!只要?子?域?放出???人使用就?了! 怎??定呢?您可以直接修改前面?到的 named.vbird.tsai ,使他?成如下所示: [root@linux ~]# vi /var/named/chroot/var/named/named.vbird.tsai
    # 在???案的最下方增加??行:
    niki IN NS niki.vbird.tsai.
    niki IN A 192.168.100.100


    直接? niki.vbird.tsai. ???域的 NS ?限 (name server) ?? niki.vbird.tsai. ?部主??管理,?同?列出 niki.vbird.tsai 的正解??! 那?未??有人要查??似 www.niki.vbird.tsai ?,我?的 linux.vbird.tsai. ?直接?查?的?限?? niki.vbird.tsai 去?理喔!


    下游主? niki.vbird.tsai 的?定:
    ???定就??啦!直接?考一下我?上面?的?料,跟著?定,但是您的 domain name ?成 niki.vbird.tsai 就是了!??的很?!所以?哥就不再多?了~

    --------------------------------------------------------------------------------
    架?一?合法的授?的 DNS 主?:

    好啦!?在您??知道什?是『?上游授?的合法 DNS 主?』了吧?! ??!就是上游的 DNS 主??子?域的查核??放?您??定就?啦!嗯!?然知道原理, 但是那?我要如何?架?一?合法的 DNS 主?呢?好?我自己管理自己的 domain !?例??,?哥的 vbird.idv.tw 就是?哥自己管理的哩~底下我?就??一?,如何向 ISP 申?一?合法授?的 DNS 主?,或者是合法的主?名?啊!


    --------------------------------------------------------------------------------

    申?一?合法的 domain name ...就是要花?!
    既然是要建立一?合法的 domain name server ,自然就要向合法的 DNS 主?申?授??! 目前您可以到底下的地方去申?喔!

    http://www.twnic.net/index3.php
    其?台?地?的一些 domain 已?不再於 TWNIC 受理了,所以您?上上述的?站之後, 可以????相?的??到各大 ISP 去??!例如?哥就??了 vbird.idv.tw ???域! ?在?哥就以 Hinet 的??做??明吧

    ?入主?面:
    直接??到底下的??去: http://nweb.hinet.net

    ??需要的?域名?,?查???域是否已存在:
    因??域必需是?一?二的,所以您必需使用????中提供的查?功能, 去查?一下您想要的?域是否已?被??了呢?一定要?有被??的?域才可以喔!

    逐步?行??:
    你可以??很多??的?域???,如果想要???人?站,?按下?八所指的 (1) ?, 如果想要???似 vbird.tw ???域的?,?可以?? (2) 所指的那??目。 然後以??站提供的功能一步一步的往下去?行,例如以?哥的『?人?址』之???例, 按下?人?址之後,?出?流程步??:


    ?八、以 Hinet ?站?依?介??? domain 的方法

    ?依序一步一步的?他完成,最後你?得到一???密?,就能?修改自己的?域啦!

    ???站代管或架? DNS 模式:
    ??得前面提到的?念吧??啦!我?可以直接? ISP ?我??定好 host ?? IP 就好(最多三部),?然也可以自行?定一下我?所需要的 DNS 主?啦!如果未?您可能?架? mail server ,所以?是自行?定 DNS 主?好了!你可以???八在 (3) 所指的『DNS???查?』?目, ?出?下面?示。?得??『DNS』及填?您的 hostname ?正?的 IP 即可喔!注意: 要填????目,最好您的 IP 是固定制的,浮?制的 IP 不建?用????!

    ?九、以 Hinet ?站?依?介??? domain 的方法

    --------------------------------------------------------------------------------

    以 DNS 主?的???定 之?定?容??定您的主?:

    如果您已?以 DNS 主?的方式申?了一? domain name ,那?您就必?要?定您的 DNS 主?了! ?注意,??情?之下,您只要?定您的??的?域的正解即可! 反解部分?先不要理?,?然,如果您有?法的?,最好?是?上?的 ISP ?您?定?!



    --------------------------------------------------------------------------------

    ??:

    ?定一部合法的 DNS 完?後,建?你可以到???站去查?一下你的?定是否妥?:

    http://www.dnsreport.com/
    如此一?,您的 DNS 主?上面?定的任何??,都可以透? Internet 上面的任何一部主??查?到喔!?棒吧!心?了???快去?看看吧! ^_^

    --------------------------------------------------------------------------------
    LAME Server 的??:

    或?你曾?在 /var/log/messages ?面看到?似??的?息:
    [root@linux ~]# more /var/log/messages
    1 Oct 5 05:02:30 test named[432]: lame server resolving '68.206.244.205.
    in-addr.arpa' (in '206.244.205.in-addr.arpa'?): 205.244.200.3#53
    2 Oct 5 05:02:31 test named[432]: lame server resolving '68.206.244.205.
    in-addr.arpa' (in '206.244.205.in-addr.arpa'?): 206.105.201.35#53
    3 Oct 5 05:02:41 test named[432]: lame server resolving '68.206.244.205.
    in-addr.arpa' (in '206.244.205.in-addr.arpa'?): 205.244.112.20#53


    ?是什??西??!根?官方提供的文件?料?看 ( 在您的 CentOS 4.x 的系?下,?察看???案『/usr/share/doc/bind-9.2.4/arm/Bv9ARM.ch06.html』 ),?我?的 DNS 主?在向外面的 DNS 系?查?某些正反解?,可能由於 『?方』 DNS 主?的?定??,?致?法解析到?期的正反解?果,???候就??生所?的 lame server 的??!

    那???????我?的 DNS 主??生什??重的後果??既然?是?方的?定??, 所以自然就不?影?我?的 DNS 主?的正常作?了。 只是我?的 DNS 主?在查??,??生?法正?解析的警告?息而已, ???息?然不??我?的 Linux 主??生什?困?,不?,?於系?管理???, 要天天查?的 /var/log/messages ?案竟然有??多的登???,?是很??的一件事!

    好了,我?知道 lame server 是?方主?的??,?我?主??有影?, 但是?又不想要???息出?在我?的登?? /var/log/messages ?中, 怎??到??的功能呢?呵呵!就直接利用 BIND ??套件所提供的登????啊! ?作很??,在您的 /etc/named.conf ?案?中的最底下,加入????即可: 1. 修改 /etc/named.conf
    [root@linux ~]# vi /etc/named.conf
    // 加入底下????:
    logging {
    category lame-servers { null; };
    };

    2. 重新?? bind
    [root@linux ~]# /etc/init.d/named restart


    基本上,那? logging 是主?的登????的一??定?目,因?我?不要 lame server 的??, 所以才?他?定?? (null) ,??就改完了! ?得重新?? named 之後,?是要察看一下 /var/log/messages 喔! 以?定 named 的正????否!然後,嘿嘿,以後就不?看到 lame server 咯!



    --------------------------------------------------------------------------------
    利用 RNDC 指令管理 DNS 伺服器

    不知道您?不??得很奇怪,那就是?啥?? DNS 後,在 /var/log/messages 老是看到?一句?:
    command channel listening on 127.0.0.1#953


    而且在本?端的 TCP port 953 ?多了? named 所??的服?,那是啥?那就是所?的 rndc 了。?? rndc 是 BIND version 9 以後所提供的功能啦,他可以?你很??的管理你自己的 DNS 伺服器喔! 包括可以?查已?存在 DNS 快取?中的?料、重新更新某? zone 而不需要重新??整? DNS , 以及?查 DNS 的??????料等等的,挺有趣的!

    不?,因? rndc 可以很深入的管理你的 DNS 伺服器,所以?然要?行一些控管啦! 控管的方式是?? rndc 的?定?建立一支金? (rndc key),???支金?相?的???入你的 named.conf ?定??中,重新?? DNS 後,你的 DNS 就能?藉由 rndc ??指令?管理?! 事?上,新版的 distributions 通常已??你主?的建立好 rndc key 了,所以你不需要忙碌~ 不?,如果你?是在登???中??一些??,例如:
    couldn't add command channel 127.0.0.1#953: not found


    那就表示你 DNS 的 rndc key ?有?定好啦!那要如何?定好?很??~ 只要先建立一把 rndc key ,然後加到 named.conf ?中去即可! 你可以使用 bind 提供的指令??行??的工作喔!
    1. 先建立 rndc key 的相??料吧!
    [root@linux ~]# rndc-confgen
    # Start of rndc.conf
    key "rndc-key" {
    algorithm hmac-md5;
    secret "aoIyK4uoiR1hEqedk2D2lw==";
    };

    options {
    default-key "rndc-key";
    default-server 127.0.0.1;
    default-port 953;
    };
    # End of rndc.conf
    # 上面的?出??他?到 rndc.conf ?案?中吧!
    # Use with the following in named.conf, adjusting the allow list as needed:
    # key "rndc-key" {
    # algorithm hmac-md5;
    # secret "aoIyK4uoiR1hEqedk2D2lw==";
    # };
    #
    # controls {
    # inet 127.0.0.1 port 953
    # allow { 127.0.0.1; } keys { "rndc-key"; };
    # };
    # End of named.conf
    # 至於上面的 key 及 controls 的?目??到 named.conf ?中去!
    # ?注意,?? rndc-confgen 是利用???算出加密的那把 key ,
    # 所以每次?行的?果都不一?。所以上述的?料?你的?幕?有?不同。

    2. 建立 rndc.conf ?案
    [root@linux ~]# vi /etc/rndc.conf
    # 在???案?中?原本的?料全部?除,????得到的?果?他?上去
    key "rndc-key" {
    algorithm hmac-md5;
    secret "aoIyK4uoiR1hEqedk2D2lw==";
    };

    options {
    default-key "rndc-key";
    default-server 127.0.0.1;
    default-port 953;
    };
    [root@linux ~]# chmod 640 /etc/rndc.conf <==必需要?定好?限!
    [root@linux ~]# chown root.named /etc/rndc.conf

    3. 修改 named.conf
    [root@linux ~]# vi /var/named/chroot/etc/named.conf
    # 找到如下的?一行:
    include "/etc/rndc.key";

    # ?上述?料?除!因???料是?的!然後加入?一段:
    key "rndc-key" {
    algorithm hmac-md5;
    secret "aoIyK4uoiR1hEqedk2D2lw==";
    };

    controls {
    inet 127.0.0.1 port 953
    allow { 127.0.0.1; } keys { "rndc-key"; };
    };

    [root@linux ~]# /etc/init.d/named restart


    建立了rndc key ?且?? DNS ,同?你的系?也已?有 port 953 之後,我?就可以在本??行 rndc ??指令了。??指令的用法?直接?入 rndc ?查?即可:
    [root@linux ~]# rndc
    Usage: rndc [-c config] [-s server] [-p port]
    [-k key-file ] [-y key] [-V] command

    command is one of the following:

    reload Reload configuration file and zones.
    stats Write server statistics to the statistics file.
    dumpdb Dump cache(s) to the dump file (named_dump.db).
    flush Flushes all of the server's caches.
    status Display status of the server.
    # 其他就?他省略啦!?自行?入??指令??考?!


    那如何使用呢?我????小例子??明吧!
    ?例一:?目前 DNS 伺服器的???示出?
    [root@linux ~]# rndc status
    number of zones: 6 <==?部 DNS 管理的 zone ?量
    debug level: 0 <==是否具有 debug 及 debug 的等?
    xfers running: 0
    xfers deferred: 0
    soa queries in progress: 0
    query logging is OFF <==是否?查?的?料??下??
    server is up and running <==主?目前正在?作?中\r

    ?例二:?目前系?的 DNS ???料??下?
    [root@linux ~]# rndc stats
    # 此?,???在 /var/named/chroot/var/named/data ??生新?案,你可以去查?:
    [root@linux ~]# cat /var/named/chroot/var/named/data/named_stats.txt
    +++ Statistics Dump +++ (1161322745)
    success 22
    referral 0
    nxrrset 0
    nxdomain 3
    recursion 6
    failure 0
    --- Statistics Dump --- (1161322745)

    ?例三:?目前快取????中的?料??下?
    [root@linux ~]# rndc dumpdb
    # ? stats ?似,?? cache 的?料放置成?一??案,你可以去查?:
    # /var/named/chroot/var/named/data/cache_dump.db


    如果你在?行 rndc 指令?老是出?如下??:
    rndc: connection to remote host closed
    This may indicate that the remote server is using an older version of
    the command protocol, this host is not authorized to connect,
    or the key is invalid.


    ?表示您的 /etc/rndc.conf ? /var/named/chroot/etc/rndc.key ?金?的??不同所致。 ?你自行以上述的 rndc-confgen 的方式自行?理你的 rndc key ,?重新?? named 即可啊! 用??西管理,你就不需要每次都重新?? named ?! ^_^



    --------------------------------------------------------------------------------
    架??? DNS 主?: ?你成? ISP 啦!

    什?是?? DNS (Dynamic DNS, DDNS) 主?呢???得我?在 合法的 DNS 主? ?面提到,如果我?本身是以?接制的 ADSL ?上 Internet ?, 我?的 IP 通常是 ISP ??提供的,因此每次上?的 IP 都不固定,所以, 我??有?法以上面的 DNS ?定??予???上 Internet 的方法一???的主?名?。

    也因此,如果我?想要利用???有固定 IP 的??方法架??站?,就得要有特殊的管道了~ 其中之一的方法就是利用 Internet 上面已?提供的免??? IP ??主?名?的服?! 例如: http://www.no-ip.org

    提供??的服?利用的是什?原理呢?基本上, DNS 主??是得要提供 Internet 相?的 zone 的主?名?? IP 的???料才行,所以,DDNS 主? 就必?要提供一??制,?用?端可以透????制?修改他?在 DDNS 主?上面的 zone file ?的?料才行。

    那?不?很?啊?不?啊!我?的 BIND 9 就有提供?似的?制啦!那就是利用 update-policy ????,配合??用的 key ??行?料?案的更新。??的?, 1) 我?的 DDNS 主?先提供 Client 一把 Key (就是??用的?料, 你可以?他想成是???密?的概念), 2) Client 端利用?把 Key ,?配合 BIND 9 的 nsupdate 指令, 就可以?上 DDNS 主?,?且修改主?上面的 Zone file ?的??表了。感?上很像很??喔! ??啊!架?上真的很??的~底下我?就????定一下喔:


    --------------------------------------------------------------------------------

    DDNS Server 端的?定:
    假?我有一?朋友,他使用的 Linux 主?的 IP 是?????的,但是他想要架? Web ?站, 所以他向我申?了一??域名?,那就是 web.vbird.tsai ,此?我必需要?他一把金?, ?且?定我的 named.conf ? vbird.tsai ?? zone 能?接受?自用?端的?料更新才行! 首先?建立?把金?吧!
    [root@linux ~]# dnssec-keygen -a [演算法] -b [密??度] -n [?型] 名?
    ??:
    -a :後面接的 [type] ?演算方式的意思,主要有 RSAMD5, RSA, DSA, DH
    ? HMAC-MD5 等。建?你可以使用常?的 HMAC-MD5 ?演算密?;
    -b :你的密??度?多少?通常?予 128 位元就可以了;
    -n :後面接的?是用?端能?更新的?型,主要有底下??,建?? HOST 即可:
    ZONE:用?端可以更新任何??及整? ZONE;
    HOST:用?端?可以??他的主?名??更新。

    [root@linux ~]# mkdir -p /var/named/keys; cd /var/named/keys
    [root@linux keys]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST web
    Kweb.+157+50096
    [root@linux keys]# ls -l K*
    -rw------- 1 root root 47 Oct 20 14:20 Kweb.+157+50096.key
    -rw------- 1 root root 81 Oct 20 14:20 Kweb.+157+50096.private
    # 上面那把是公?,下面那把?是私??案!

    [root@linux keys]# cat Kweb.+157+50096.key
    web. IN KEY 512 3 157 +j8TSooNNIUPb3OR9Rh53Q==
    # 注意到最右?的那?密??度,等一下我?要??的?有那?地方!


    接下?你必需要:?公?的密???到 /etc/named.conf ?中,?私???你的 web.vbird.tsai 那部主?上!好了,那就?始?修改 named.conf ?的相??定吧!
    [root@linux ~]# vi /etc/named.conf
    // 先在任意地方加入?? Key 的相?密???!
    key "web" {
    algorithm hmac-md5;
    secret "+j8TSooNNIUPb3OR9Rh53Q==";
    };

    // 然後?你原本的 zone 加入底下?一段宣示
    zone "vbird.tsai" {
    type master;
    file "named.vbird.tsai";
    allow-transfer { 192.168.1.150; };
    update-policy {
    grant web name web.vbird.tsai. A;
    };
    };

    [root@linux ~]# chown named /var/named/chroot/var/named
    [root@linux ~]# /etc/init.d/named restart


    注意到上?的 grant web name web.vbird.tw. A; 那一行, grant 後面接的就是 key 的名?,也就是?,我?把 web 的 key 在?? zone (vbird.tsai) ?面可以修改主?名? web.vbird.tsai 的 A 的??,亦即是修改主?的 IP ??啦!?法也就是: grant [key_name] name [hostname] ?? 也就是?,我的一把 key 其?可以?予多??限喔!就看您如何??了。

    ?定好之後,由於未?用?端??的??是由我?主?的 named 所?入, ?入的目?在 /var/named/chroot/var/named/ ?中,所以你必需要修改一下?限喔! ?他重新?? DNS,然後?察一下 /var/log/messages ?面有?有??即可! 如此一?,DDNS 主?端就?定妥??!



    --------------------------------------------------------------------------------

    Client 端的更新:

    接下??是 DDNS Client 端的更新了。首先,您必?要由 Server 端取得??建立的那???案, ????建立的 Kweb.+157+50096.key 及 Kweb.+157+50096.private 利用 SSH 的 sftp ?送到用?端, 亦即是那部 web.vbird.tsai 主?上?, 假?你已??????案放置到 /usr/local/ddns ?面去,然後??看看:
    [root@web ~]# cd /usr/local/ddns
    [root@web ddns]# nsupdate -k Kweb.+157+50096.key
    > server 192.168.1.254
    > update delete web.vbird.tsai <==?除原有的
    > update add web.vbird.tsai 600 A 192.168.1.222 <==更新到最新的
    > send
    > 最後在此按下 [ctrl]+D 即可


    ?注意到『 update add web.vbird.tsai 600 A 192.168.1.222 』?行, 他的意??的是,新增一??料, ttl 是 600 ,?予 A 的??, ??到 192.168.1.222 的意思~ 至於 nsupdate -k 後面加的?是我?在 Server 端?生的那? key ?案!

    然後您就???到在 DNS 主?端的 /var/named/chroot/var/named/ ?面多出一??存?,那就是 named.vbird.tsai.jnl ?然,/var/named/chroot/var/named/named.vbird.tsai 就??著用?端的要求而更新?料喔!

    由於手?更新好像挺麻?的,我?就? Client 自?更新吧!利用底下?? script 即可! [root@web ~]# vi /usr/local/ddns/ddns_update.sh
    #!/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    export PATH

    # 0. keyin your parameters
    basedir="/usr/local/ddns" # 基本工作目?
    keyfile="$basedir"/"Kvbird.+157+05841.key" # ??名填?去吧!
    ttl=600 # 你可以指定 ttl 的??喔!
    outif="ppp0" # ?外的??介面!
    hostname="web.vbird.tsai" # 你向 ISP 取得的那?主?名?啦!
    servername="192.168.1.254" # 就是你的 ISP 啊!

    # Get your new IP
    newip=`ifconfig "$outif" | grep 'inet addr' | \
    awk '{print $2}' | sed -e "s/addr\://"`
    checkip=`echo $newip | grep "^[0-9]"`
    if [ "$checkip" == "" ]; then
    echo "$0: The interface can't connect internet...."
    exit 1
    fi

    # create the temporal file
    tmpfile=$basedir/tmp.txt
    cd $basedir
    echo "server $servername" > $tmpfile
    echo "update delete $hostname A " >> $tmpfile
    echo "update add $hostname $ttl A $newip" >> $tmpfile
    echo "send" >> $tmpfile

    # send your IP to server
    nsupdate -k $keyfile -v $tmpfile


    您只要?上述的程式?面,特殊字?的部分?他修改一下,就能?以 /etc/crontab 的方式在您的系??自??行了!?支程式你也可以在底下的??下?:

    http://linux.vbird.org/linux_server/0350dns/ddns_update.sh
    利用 BIND 9 所提供的??服?,我?只要具有一?固定的 IP ,?向 ISP 申?一?合法授?的 domain name, 就可以提供不?是固定或者是非固定的 IP 使用者,一?合法的主?名?了! ?且,使用者也可以自行透? nsupdate ?修改自己的 IP ??!以?自己的主? IP 永??主?名?保持正?的??!??只有?接制上?的用???,真是方便啊!


    --------------------------------------------------------------------------------
    重?回?:

    在 Internet ?中,任何一部合法的主?都具有?一?二的主?名?,??主?名?包含了 hostname ? domain name ,??? Fully Qualified Domain Name (FQDN);
    ?了克服人??於 IP 不易??的困?,而有名?解析器的?生,首先是 /etc/hosts ,而後?是 DNS 系?的?生;
    目前 Unix Like 的?器?中,都是以 BIND ??柏克?大??展的套件?架? DNS 伺服器;
    DNS 是??定的名?,BIND ?是一?套件,??套件提供的程式? named !
    在 DNS ?中,每一???我?就?他? RR (Resource Record)。
    在 DNS 系?中,正解?由 hostname 找 IP ,而反解?是由 IP 找 hostname ,至於 zone ?是一?或者是部分?域的?定值;
    在 bind 9 之後,??的情?下 named 已?作了 chroot 的?作。
    DNS 伺服器的?型主要分? master, slave 以及只?行快取??的 cache-only 的 DNS 主?;
    Master/Slave 架?下的 DNS 主?系?,不?是 Master/Slave 主?均需要能?正?的提供 hostname ? IP 的??才行。
    Slave 主?本身??有自行?定 zone file ,其 zone file 是由 Master 主??送而?,因此, master 主?必?要?? slave 主??放 allow-transfer 的?定?目才行。
    整? DNS 搜?的流程?中,若找不到本身的?料,??向 root(.) 要求?料;
    bind 的?定?? /etc/named.conf ,而 named.conf 可以??出正反解 zone 的?案所在;
    正解的??(record)主要有:SOA, A, MX, NS, CNAME, TXT 及 HINFO 等;
    反解的??主要有: SOA, PTR 等;
    在 client 端?定 DNS 查??序?相?功能的??重要?案?: /etc/nsswitch.conf, /etc/hosts, /etc/resolv.conf 等;
    DNS 查?的指令主要有: host, nslookup, dig, whois 等等;
    在?入了 named ?? daemon 之後,??必前往 /var/log/messages 察看此 daemon 的成功?否。
    CentOS (Red Hat 系?) 的 /etc/sysconfig/named 可以指定 chroot 的目?或取消 chroot 的功能等等。
    Cache only DNS 伺服器常被使用於防火?上,用?代理?部 LAN 的主?名?解析要求!
    本章? LPI 考?的??:
    在 LPI ?站 http://www.lpi.org ?面提到的,?於 NFS 的考???的地方,只有在 LPI level 1 的 102 ,?面的 topic 113 Networking Services ,第五??中,?易的 DNS ?定。??的是『??者需?解何?正、反解、Zone ? cache-only 的 DNS 主?』至於?考的?案?指令可能有?些:
    /etc/hosts
    /etc/nsswitch.conf
    /etc/resolv.conf
    /etc/named.boot(V4)及 /etc/named.conf(V8)
    named (?? daemon )

  25. 堕落kiss 于 2009-08-10 10:46:15发表:

    鸟哥的东西一定要顶呀。你发的是服务器架设篇的吧

  26. baizx 于 2009-08-10 10:45:31发表:

    DHCP 伺服器

    本章的行前??工作

    由於 DHCP 必需要?定整??域?路的?段?定,?有得要?解路由?定,以及一堆??路有?的??等等, 所以你一定要熟悉?路基?。此外,由於 DHCP server 套件????是不?安?啦,所以你也必需要?解如何使用 rpm 或者是 yum 等工具才行。

    ?必?解?路基?相?的?料;
    也得?解一下 DNS 相?的??;
    ?有防火?最好也能?解一番。

    --------------------------------------------------------------------------------
    DHCP ?作的原理\r

    老?矩,在正式的?入 DHCP (Dynamic Host Configuration Protocol) 主??定之前,我?先???一下 DHCP ???定吧!?有,需要?解的是,我?是否有需要『一定』得?定 DHCP ??伺服器呢???都需要?清一下概念喔!


    --------------------------------------------------------------------------------
    什?是 DHCP ?定

    在?始 DHCP 的?明之前,我?先???一下之前在?路基??面提到的???路??吧! 要?定好一??路的?境,使??可以?利的?上 Internet ,那?您的???面一定要有底下???路的??才行,分?是:
    IP, netmask, network, broadcast, gateway, DNS IP
    其中,那? IP, netmask, network, broadcast ? gateway 都可以在 /etc/sysconfig/network-scripts/ifcfg-eth[0-n] ?些?案?面?定,DNS 的位址?是在 /etc/resolv.conf ???定。呵呵!只要????目?定正?,那?????就???的可以上?了! 所以?,您家?面的 3, 4 部??,您都可以手?的??定好您所需要的?路??, 然後利用 NAT 主?的功能,就可以大?大?的?上 Internet 了!真是不? ^_^,不是??

    好了,?在?我??一?大一些些的?景吧!假?您是?校宿舍的?路管理?,所管理的?生??大概有 100 部好了,那?您怎??定好? 100 部的??呢?

    直接每一部??都?您登?拜?手?的去?定好?
    ?所有的?生都集合起?,然後精神??.....喔不!是直接教?一下怎??定??是
    藉由一部主??自?的分配所有的?路???宿舍?的任何一部???
    ?三?解?方案所需要的??都不相同,如果您??的是(1),那??哥?人??,您不是工作狂就是?掉了, 因?所要花?的???您所得的薪水?付出的心力是完全不成比例的。如果??是(2)那?很可能您?被?上?裁者、 ?良心的管理?的??!如果是??(3)呢?恭喜您!??方案的管理??花?最短,也是最不麻?的作法啦!

    呵呵!知道我要?些什?了??是的!?? DHCP (Dynamic Host Configuration Protocol) 主?最主要的工作,就是在?行前面提到的第三?方案,也就是自?的??路??正?的分配??域中的每部??, ?用?端的??可以在??的?候就立即自?的?定好?路的??值,?些??值可以包括了 IP、netmask、network、gateway ? DNS 的位址等等。如此一?,呵呵!身?管理?的您,只要注意到?一部提供?路??的主?有?有?掉就好了, 其他同??的?人??,哈!您想都不必想要怎?去?忙!因? DHCP 主?已?完全都?您搞定啦! ^_^! 阿!?管理?最大的幸福就是可以喝喝茶、聊聊天就能控管好一切的?路??呢!



    --------------------------------------------------------------------------------
    DHCP 的?作方式\r

    你必需要知道的是,DHCP 通常是用?域?路?的一?通??定,他主要藉由用?端?送?播封包?整?物理?段?的所有主?, 若?域?路?有 DHCP 主??,才?回?用?端的 IP ??要求。所以?,DHCP 伺服器?用?端是??要在同一?物理?段?的。 而用?端取得 IP ??的程序可以?化如下:

    用?端利用?播封包?送 DHCP 需求:
    若用?端?定使用 DHCP 取得 IP (在 Windows ??『自?取得 IP』),??用?端??或者是重新???路卡?, 用?端主???送出 DHCP 要求?所有物理?段?的??。此封包的目? IP ?是 255.255.255.255, 所以一般主?接收到??封包後?直接予以??,但若?域?路?有 DHCP 伺服器??如何回??

    DHCP 主?回??息:
    DHCP 主?在接收到??用?端的需求後,????用?端的硬?位址 (MAC) ?本身的?定?料??行下列工作:


    到伺服器的登??中?找?用?之前是否曾?用?某? IP ,若有且? IP 目前?人使用,?提供此 IP ?用?端;
    若?定???? MAC 提供?外的固定 IP (static IP) ?,??予? IP 的?定;
    若不符合上述???件,???取用目前?有被使用的 IP ?用?,???下?。

    此外,DHCP 伺服器??提供一?租????用?端,?等待用?端的回?。

    用?端接受 DHCP 伺服器提供的????定本身的?路?境:
    若一切安好,?用?端?接受?次取得的 IP ??始?理本身的?路?境,包括改? /etc/resolv.conf 等等; ?且?向 DHCP 伺服器?送一???封包,?????已被接受。

    DHCP 伺服器???次租?行?:
    用?端回??息以建立租?行?後,?次租??被??到主?的登??上?, ?且?始租???喔!那??次租?何??到期而被解? (真可怕的字眼!) ?你可以??想:


    用?端??:不?是???路介面 (ifdown)、重新?? (reboot)、?? (shutdown) 等行?,皆算是????,???候 Server 端就??? IP 回收,?放到 Server 自己的?用?中,等待未?的使用;

    用?端租?到期:前面提到 DHCP server 端?放的 IP 有使用的期限,用?端使用?? IP 到?期限?定的??,而且?有重新提出 DHCP 的申??,就需要? IP ?回去!???候就?造成??,而用?也可以再向 DHCP 主?要求再次分配 IP ?
    以上就是 DHCP ???定在 Server 端? Client 端的?作??,由上面???作???看,我?可以?得,只要 Server 端?定?有??,加上 Server ? Client 在硬???上面?定是 OK 的,那? Client 就可以直接藉由 Server ?取得上?的?路??,?然啦,只要我??些管理?能?好好的、正?的管理好我?的 DHCP ,嘿嘿!那?上?的?定自然就?成一件很??的事情啦!


    --------------------------------------------------------------------------------

    DHCP 伺服器?予用?端的 IP ?型:
    在上面的步??面,注意到第二步?了??就是伺服器?去比?用?端的 MAC 硬?位址,?判?? MAC 是否需要?予一?固定的 IP 呢!所以啦,我?可以?定 DHCP 伺服器?予用?端的 IP ?型主要有??:

    固定 (Static) IP:
    只要那?用?端??的?路卡不?掉,那? MAC 肯定就不?改?,由於 DHCP 可以根? MAC ??予固定的 IP ,所以???每次都能以一?固定的 IP ?上 Internet !呵呵! ??情?比??合??部??需要用?做?提供?域?的一些?路服?的主?之用。那?如何在 Linux 上面知道您的 MAC 呢?很??啦!有很多的方式,最??的方式就是使用 ifconfig 及 arp ??行:
    1. ?察自己的 MAC 可用 ifconfig:
    [root@linux ~]# ifconfig eth0
    eth0 Link encap:Ethernet HWaddr 00:08:03:A3:E0:34
    inet addr:192.168.1.254 Bcast:192.168.1.255 Mask:255.255.255.0
    ....底下省略....

    2. ?察?人的 MAC 可用 ping 配合 arp
    [root@linux ~]# ping -c 1 192.168.1.101
    [root@linux ~]# arp -n
    Address HWtype HWaddress Flags Mask Iface
    192.168.1.101 ether 00:08:75:A0:B2:78 C eth0




    ?? (dynamic) IP:
    Client 端每次?上 DHCP 所取得的 IP 都不是固定的!都直接?由 DHCP 所??由尚未被使用的 IP 中提供!
    除非您的?域?路?的??有可能用?做?主?之用,所以必需要?定成?固定 IP ,否?使用?? IP 的?定比???,而且使用上面具有?佳的?性。怎??呢?假如您是一? ISP 好了,而您只申?到 150 ? IP ?做?您的客???之用。那?您是否真的只能邀集到 150 的使用者?呵呵!?然不?!我可以邀集 200 ?使用者以上呢!

    ?什????想好了,我今天?了一家餐?,?面只有 20 ?座位,那?是否我一餐只能?? 20 ?人呢??然不是啦!因?客人是人?人往的,有人先吃有人後吃,所以同?是 20 ?座位,但是可以有 40 ?人?吃我的?餐,因??的??不一?嘛!?解了??呵呵!?啦!您?? ISP ?然只有 150 ? IP 可以?放,但是因?您的使用者?非 24 小?都?在?上的,所以您可以?? 150 ? IP 做良好的分配,? 200 ?人?『?流使用』? 150 ? IP 哩!

    Tips:
    其? IP 只有 Public IP ? Private IP ??,中文翻?成『公共 IP』?『私有 IP』???, 至於其他所?的『?? IP』、『?? IP』、『?? IP』、『浮?式 IP』等等,都是藉由一些 IP 取得的方式?分?的, ?於 IP 的??我?在?路基?中??了,?得再好好的?清一下?念喔!

    事?上?在主流的 ADSL ???接上?也有使用到『?? IP 』?『固定 IP 』之?的概念喔! ?例??好了,hinet/seed net 等主要 ISP 都有提供所?的:『一?固定 IP 搭配 7~8 ?浮? IP 』的 ADSL ?接功能,也就是?同?透?一?????接到 ISP ,但是其中一??接是可以取得固定的 IP 呢! 而其他的?是非固定的 IP ,DHCP 的 static/dynamic 跟??玩意?有??似啦! ^_^



    --------------------------------------------------------------------------------

    ?於租?所造成的??:
    怪了!如果我??察上面 DHCP ?作模式的第二?步?,您???最後面 DHCP 伺服器?有?予?有一?租?期限! ?嘛?要??的一?期限呢?其??定期限?是有???啦!最大的??就是可以避免 IP 被某些使用者一直?用著,但?使用者?是 Idle (?呆) 的??!

    ??例子??,我???不是?到,我有 150 ? IP ,但是偏偏我有 200 ?用???我?以 2006 年的世界?足球???明好了。假?每?使用者都急著上?知道世足?的消息, 那?某些?????段?路?可能?到使用尖峰!也就是?,? 200 ?人同?要?使用? 150 ? IP ,有可能???然不可能!肯定?有 50 ?人?法??,因?『很抱歉!目前系?正在忙?中,?您稍後再?!』

    那怎??????候租?到期的方式就很有用?啦!那??已?????很久的人, 就?因?租?到期而被迫??,???候? IP 就?被?放出?,哈哈!大家?快?呀!先?到先?喔! 所以,那 50 ?人 (包括被迫??的那?朋友) 只好??的、努力的、加油的??行 DHCP 的要求?! ^_^""

    ?然?是??,但是其?如果站在使用者的角度?看,?是可能?造成公?的!?什?大家一起交?, 我先????就需要先被踢出去?~呵呵!所以?,如果要? ISP ,?是得要先??好服?的方?才行呦! ??您可以?解租?到期的行?了??! ^_^

    既然有租???,那?是否代表我用 DHCP 取得的 IP 就得要『手?』的在某????去重新取得新的 IP 呢?不需要的啦!因?目前的 DHCP 用?端程式大多?主?的依?租???去重新申? IP (renew) 的!也就是?在租?到期前你的 DHCP 用?端程式就已?又重新申?更新租???了。所以除非 DHCP 主???, 否?您所取得的 IP ??是可以一直使用下去的!



    --------------------------------------------------------------------------------

    多部 DHCP 主?在同一物理?段的情?
    或?您曾????一件事情,那就是?我的?域?面有?部以上的 DHCP 主??, 到底哪一部主???定我的?部??所?出的 DHCP 要求?呵呵!很抱歉,俺也不?得! 因?在?路上面,很多?候都是『先?先?』的, DHCP 的回?也是如此!? Server1 先回??,您使用的就是 Server1 所提供的?路???容,如果是 Server2 先回?,您就是使用 Server2 的????定您的 PC !不?,前提之下?然是?些??的『物理??』都是在一起的啊!



    --------------------------------------------------------------------------------
    何?需要架? DHCP 伺服器

    既然 DHCP 的好?是『免用?端?定』,而且?於行??置的上?方面非常的方便!那?是否代表你就得要架?一部 DHCP 呢?那可不一定!接下?要告知大家的是??概念性的??, 您倒不一定『必需』遵守底下的一些概念呢!反正,自己的?域自己『爽』就好啦!


    使用 DHCP 的????
    在某些情?之下,倒是?烈的建?架? DHCP 主?的!什?情?呢?例如:

    具有相?多行??置的?合:
    例如您的公司?部很多??型?? (??) 使用的?合!因?????本身就是移?性的?置, 如果每到一?地方都要去?人家『喂!您??的?路??是什??』?得要?心是否?跟人家的 IP 相?突等等的??!???候,DHCP 可就是您的救星?!

    ?域????量相?的多?:
    另外一?情?就是您所??的?域????量相??大?, 大到您?有?法一?一?的?行?明??定他?自己的?路??,???候?了省麻?,?是架? DHCP ?的方便?!?且,??一部您熟悉的 DHCP 主?,要比造??十?不懂??的人要??的多哩!^_^
    不建?使用 DHCP 主?的??
    ?然 DHCP 有很多好?,但是您有?有??一?步?怪怪的呀!回?看一下那?步?一, 用?端在??的?候?主?的?送?息??域上的所有?器,???候,如果?域上就是?有 DHCP 主?呢?很抱歉,那?您的?部用?端??,『仍然?持?的?送?息!』 真正的???次?我不?得?有多久,不?,肯定?超? 30 秒以上, 甚至可以?到一分?以上!哇!那??段??您能?嘛?呵呵!除了等、?是等! 所以?,如果???不多,?是使用手?的方式??定一下就好了!方便嘛!

    在您?域?的??,有很多?器其?是做?主?的用途,很少 Client 需求,那?似乎就?有必要架? DHCP ;
    更?端的情?是,像一般家?,只有 3 ~ 4 部??,???候,架? DHCP 只能拿???功力,事?上,??有多大的效益;
    ?您管理的?域?中,大多?路卡都?於老?的型?,?不支援 DHCP 的?定?;
    很多使用者的??知?都很高,那?也?有需要架? DHCP 啦。
    如前所述,上面的都是概念性的?法,事?上,一件事情的解?之道是有很多的方案的, ?有所?的『完全正?』的方案,只有『相?可行、?且符合??效益?功能』的方案! 所以?,架?任何?站之前,?先多?估?估?!



    --------------------------------------------------------------------------------
    DHCP 伺服器端的?定

    事?上,目前市面上的 IP 分享器已?便宜到爆了!而 IP 分享器本身就含有 DHCP 的功能, 所以如果你只是想要??的使用 DHCP 在你的?域?路?中而已,那?建?你直接??一部 IP 分享器?使用即可, 因?至少他很省?。如果你?有其他考量的?,才?架? DHCP 吧!底下我?以一???的?例?架? DHCP 先。


    --------------------------------------------------------------------------------
    所需套件?套件??

    DHCP 的套件需求很??,就是只要伺服器端??即可。所需套件?:

    dhcp
    提供整? DHCP 伺服器的主要?定????的 script 及?行?等等重要?料。
    真的只要一?套件就好了,而且?有什?很重大的相依性??呢!?拿出你的原版光碟用 rpm ?安?, 或者直接用 yum ?上安?也可以!?案很小啦!至於整?套件的??是??的:

    /etc/dhcpd.conf
    ??就是 dhcp 伺服器的主要?定?咯!在某些 Linux 版本上????案可能不存在,所以如果你?定有安? dhcp 套件?找不到???案?,?手?自行建立他即可。???案的?定很??啦,我?底下主要就是在????案的?定而已哩。 不??定?的??位置?是得要?考 /etc/init.d/dhcpd 的??才是。

    Tips:
    其? dhcp 套件在?出的?候都?附上一??例?案,你可以使用『 rpm -ql dhcp 』?查?到 dhcpd.conf.sample ???例?案,然後???案??成? /etc/dhcpd.conf 後,再手?去修改 /etc/dhcpd.conf 即可,???定比?容易咯!

    /usr/sbin/dhcpd
    ??整? dhcp daemon 的?行?啊!其?最??的?行方式??要使用『 man dhcpd 』?查?一番的呢!^_^

    /var/lib/dhcp/dhcpd.leases
    ??案?有趣的!我?前面原理部分不是有提到『租?』??DHCP 伺服器端?用?端租?建立的?始?到期日就是??在???案?中的咯!
    就跟你?很??吧!整?套件?料也不?才如此而已呢!



    --------------------------------------------------------------------------------
    主要?定? /etc/dhcpd.conf 的?法

    其? DHCP 的?定很??啊,只要? dhcpd.conf ?定好就可以??了。不??????案?你必?要留意的是:

    『 # 』??解符?;
    除了括?那一行之外,其他的每一行後面都要以『 ; 』做??尾!?是最容易出?的地方。
    通常?定的?目都有?特的名?,以:『 』??理,例如:
    default-lease-time 259200;
    某些?定?目必?以 option ??定,基本方式?『 option 』例如:
    option domain-name "your.domain.name";
    基本上,我???前面提??, DHCP 的 IP 分配可分??予?? IP ??? IP ,其中又需要?解的是,如果需要?定?? IP 的?,那?就必?要知道要?定成?? IP 的那部??的硬?位址 (MAC) 才行,?使用 arp 及 ifconfig ?查知您的介面的 MAC 吧!此外,我?需要?定的?目大概有??:

    整??定 (Global)
    包括有租?期限、DNS 的 IP 位址、路由器的 IP 位址?有?? DNS (DDNS) 更新的?型等等。 ??? IP 及?? IP ??有??到某些?定?,?以整??定值??。常使用??有:

    default-lease-time ??:
    ??的租???,後面的???????位?秒;
    max-lease-time ??:
    最大租???,?用?端超?租????尚未更新 IP ?,最?可以使用? IP 的??;
    option domain-name "?域名?":
    如果你在 /etc/resolv.conf ?面?定了一?『 search google.com 』的?,?表示?你要搜?主?名??, DNS 系??主??你加上???域名?的意思。所以???定??也?修改 /etc/resolv.conf 喔!
    option domain-name-servers IP1, IP2:
    ???定??可以修改用?端的 /etc/resolv.conf ?案!就是 nameserver 所接的那? DNS IP ?!特?注意?定??最末尾?『servers』 (有 s 喔);
    ddns-update-style ?型:
    因? DHCP 用?端所取得的 IP 通常是一直??的, 所以某部主?的主?名?? IP 的??就很??理。此? DHCP 可以透? ddns (??考 合法主?名? ? DNS 章?的?明) ?更新主?名? IP 的??。不?我???不?????的?西,所以你可以?他?定? none 喔。
    option routers 路由器的位址:
    ?定路由器的 IP 所在,?得那?『 routers 』要加 s 才?!
    option broadcasst-address ?播位址:
    ?定?播位址而已。如果?有?定的?,系????自?依? class A, B, C 的原???算出?播位址吧!


    ?? IP 分配?定:
    用??定???予 IP 的方式,只要?予?域 (network 以及 netmask) 配合 range ????就能??予限制的 IP ??了。 ?定方式?不怎??啊。

    ?? IP 的?定方式:
    透?硬?位址 (MAC) ??理 IP 的取得。使用的是 host ???定??, 配合底下??常?的??值??理:

    hardware ethernet 硬?位址:
    利用?路卡上面的固定硬?位址??定,亦即??定?????硬?位址有效的意思;
    fixed-address IP位址:
    ?予一?固定的 IP 位址的意思。
    ?再多也?有什?用啦!?我????玩一?案例吧!你就知道?如何?理了。



    --------------------------------------------------------------------------------
    一??域?路的 DHCP 伺服器?定案例

    假?我的?境?中,Linux 伺服器除了 NAT 主?之外?得要??其他伺服器,例如?件伺服器的支援。 而在後端?域?路中?想要提供 DHCP 的服?。整?硬?配置的情?如同下?所示:



    ?一、?域?路的???接情?

    如上?所示,假?我的 Linux 有??介面,其中 eth0 ??而 eth1 ?外,至於其他的?路?????:

    ?部?段?定? 192.168.1.0/24 ?一段,且 router ? 192.168.1.254 ,此外, DNS 主?的 IP ?中??信的 168.95.1.1 及 Seednet 的 139.175.10.20 ???;
    我想要?每?使用者??租?? 3 天,最?? 6 天;
    只想要分配的 IP 只有 192.168.1.21 到 192.168.1.100 ???,其他的 IP ?保留下?;
    我?有一部主?,他的 MAC 是『 00:40:95:30:43:B4 』,我要?他的主?名?? vbird-inside ,且 IP ? 192.168.1.5 ??。
    ?我的?定?就?像底下???子了:
    [root@linux ~]# vi /etc/dhcpd.conf
    # 1. 整?的?境?定
    # ?底下的 subnet ? host ?有?定?,以??的?定值??喔!
    ddns-update-style none; <==不要更新 DDNS 的?定
    default-lease-time 259200; <==??租?? 3 天
    max-lease-time 518400; <==最大租?? 6 天
    option routers 192.168.1.254; <==?就是??路由
    option broadcast-address 192.168.1.255; <==?是?播位址啊
    option domain-name-servers 168.95.1.1, 139.175.10.20;
    # 上面是 DNS 的 IP ?定,???定值?修改用?端的 /etc/resolv.conf ?案?容!
    # 此外,你可以?定多部 DNS 主?,不?必?要以逗?『 , 』分隔?才行。

    # 2. ?於??分配的 IP
    # Network_IP↓ Netmask_IP↓
    subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.21 192.168.1.100; <==分配的 IP ??
    option subnet-mask 255.255.255.0; <==可重??定 netmask 位址
    option nis-domain "vbird.tsai"; <==?外?的 NIS 相???
    option domain-name "vbird.tsai"; <==在 /etc/resolv.conf ?一?搜??域

    # 3. ?於??的 IP 啊!
    # 主?名?↓
    host vbird-inside {
    hardware ethernet 00:40:95:30:43:B4; <==用?端?卡 MAC
    fixed-address 192.168.1.5; <==?予固定的 IP
    }
    }
    # 相?的?定??意?,?查?前一小?的介?,或者 man dhcpd.conf


    ???吧!??就?定好了!你可以??上?的?料然後修改一下,???的 IP ??符合你的?境, 就能??定好你的 DHCP 伺服器了。接下?理?上你就能??? dhcp 了。不?,在某些早期的 Linux distribution 上面, ?你的 Linux 主?具有多?介面?,你的一??定可能??多?介面同????,那就可能??生??了。

    ?例??,我??在的?定是 192.168.1.0/24 ??在 eth0 上?的?域,假?你?有一?介面 eth1 在 192.168.2.0/24 好了, 那?一你的 DHCP 同?????介面的?,想一想,如果 192.168.2.0/24 ?域的用?端?送出 dhcp 封包的要求?, 他?取得什? IP ?所以?,我?就得要?? dhcpd ???行??定他??的介面, 而不是??所有的介面都??啊!您?是吧!^_^!那如何?理呢?在 CentOS (Red Hat 系?) 可以??做:
    [root@linux ~]# vi /etc/sysconfig/dhcpd
    DHCPDARGS="eth0"


    ??做就好了,?是因??? dhcpd 的 script ?主?的呼叫?????案。如果是在其他版本的 Linux ?中, 你可以直接修改 /etc/init.d/dhcpd ?? script ?案?容,找到『 daemon /usr/sbin/dhcpd ... 』那一行, ?新增?路卡代?即可,例如:
    [root@linux ~]# vi /etc/init.d/dhcpd
    # ?在第 58 行左右?找到:
    daemon /usr/sbin/dhcpd ${DHCPDARGS} 2>/dev/null


    在上述的特殊字?部分,你可以持?加入想要增加的??介面啦!更多的功能可以?考『 man dhcpd 』的解?。 不????作在?新的版本上面已?不需要了,因?新版本的 dhcp ?主?的分析伺服器的?段???的 dhcpd.conf ?定, 如果?者?法吻合,就?有??提示,人性化多了。 ^_^! 接下?我?可以?始?? dhcp ?看看?!



    --------------------------------------------------------------------------------
    DHCP 伺服器的????察

    ?始??? dhcp 吧!另外你要注意的是:dhcpd 使用的埠口是 port 67 ,?且??的?果???在 /var/log/messages ?案?,你最好能去?察一下 /var/log/messages 所?示的 dhcpd 相???才好。
    1. 就??吧!
    [root@linux ~]# /etc/init.d/dhcpd start

    2. 看看埠口??的情?
    [root@linux ~]# netstat -tlunp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address PID/Program name
    udp 0 0 0.0.0.0:67 0.0.0.0:* 7294/dhcpd

    3. 看看登??的?出??
    [root@linux ~]# tail -n 30 /var/log/messages
    Dec 5 10:58 linux dhcpd: Internet Systems Consortium DHCP Server V3.0.1
    Dec 5 10:58 linux dhcpd: Copyright 2004 Internet Systems Consortium.
    Dec 5 10:58 linux dhcpd: All rights reserved.
    Dec 5 10:58 linux dhcpd: For info, please visit http://www.isc.org/sw/dhcp/
    Dec 5 10:58 linux dhcpd: Wrote 0 deleted host decls to leases file.
    Dec 5 10:58 linux dhcpd: Wrote 0 new dynamic host decls to leases file.
    Dec 5 10:58 linux dhcpd: Wrote 0 leases to leases file.
    Dec 5 10:58 linux dhcpd: Listening on LPF/eth0/00:40:fa:25:2a:db/192.168.1/24
    Dec 5 10:58 linux dhcpd: dhcpd startup succeeded


    看到?些就是成功的象徵啦!恭喜你啊!真是『福?啦!』不?,?一你看到的登??是?似底下的模?呢?
    Dec 5 11:11 linux dhcpd: /etc/dhcpd.conf line 10: semicolon expected.
    Dec 5 11:11 linux dhcpd: subnet
    Dec 5 11:11 linux dhcpd: ^
    Dec 5 11:11 linux dhcpd: Configuration file errors encountered -- exiting


    ?表示??是第 10 行左右有???,?????是?有分? (semicolon) 而已。而分???是在指?符? (^) 指的地方, 也就是 subnet 附近而已,很容易分辨吧!那如果是出?如下的模?呢?
    ** You must add a ddns-update-style statement to /etc/dhcpd.conf.
    To get the same behaviour as in 3.0b2pl11 and previous
    versions, add a line that says "ddns-update-style ad-hoc;"
    Please read the dhcpd.conf manual page for more information. **


    ?表示你忘?在 /etc/dhcpd.conf ?面加入 ddns-update-style 的??宣告啦! 瞧一瞧???出??,就能??得你的?定??所在,根?????理你的 dhcp ?定?吧!



    --------------------------------------------------------------------------------
    ?部主?的 IP ??

    如果您有仔?的瞧?前?章的?路基?的?,那??????得那? /etc/hosts ?影??部??的??速度很大吧!那?我?在使用 DHCP 之後,糟糕!我怎?知道哪一部 PC ?上我的主?,那要怎?填? /etc/hosts 的?容呢??真是太??了!就?所有可能的?? IP 都加?去??案呀! ^_^ !以?哥?例,在??例子中,?哥的分配的 IP 至少有 192.168.1.5, 192.168.1.21 ~ 192.168.1.100 ,所以 /etc/hosts 可以?成:
    [root@linux ~]# vi /etc/hosts
    127.0.0.1   localhost.localdomain localhost
    192.168.1.254 vbird-server
    192.168.1.5  static-ip
    192.168.1.21  dynamic-021
    192.168.1.22  dynamic-022
    .....
    192.168.1.100 dynamic-100


    ??一?,所有可能???的 IP 都已?有??了,哈哈!?然?有什?大???! ^_^

    --------------------------------------------------------------------------------
    DHCP 用?端的?定

    DHCP 的 Client 端,可以是 Windows 也可以是 Linux 呢!由於?哥的?域??好有?部 Client 端的??,一部? Linux (CentOS 4.4) 另一部? Windows xp ,??就提一下,分?是怎??定的呢?


    --------------------------------------------------------------------------------
    Linux 用?端

    Linux 的?路???定??得吧?不?得的?就得要打屁股了!在?上 Internet 章??我???自?取得 IP 的方式,?定真的很??:
    [root@client ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    BOOTPROTO=dhcp <==就是他!指定?一?就?了!
    ONBOOT=yes

    [root@client ~]# /etc/init.d/network restart


    改完之後,就?我?的整??路重新??即可 (不要使用 ifdown ? ifup ,因??有??路由要?定!) 。?注意,如果您是在?端?行???作,您的??『肯定??掉!』,因??路卡被您?了嘛! 呵呵!所以?在本?前面才?行喔!如果?行的?果有找到正?的 DHCP 主?,那????案可能?被更?喔:
    1. DNS 的 IP ?被更?呢!查?一下 resolv.conf 先:
    [root@linux ~]# cat /etc/resolv.conf
    ; generated by /sbin/dhclient-script
    search vbird.tsai <==是否?得?定? domain-name 呢?
    nameserver 168.95.1.1 <==?就是我?原本的?定值。
    nameserver 139.175.10.20

    2. ?察一下路由啦!
    [root@linux ~]# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Iface
    192.168.1.0 0.0.0.0 255.255.255.0 U eth0
    169.254.0.0 0.0.0.0 255.255.0.0 U eth0
    0.0.0.0 192.168.1.254 0.0.0.0 UG eth0
    # 嗯!??!路由也被正?的捉到了!OK的啦!

    3. 察看一下用?端的指令吧!
    [root@linux ~]# netstat -tlunp
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    udp 0 0 0.0.0.0:68 0.0.0.0:* 3996/dhclient
    # 你?看?!??是有?小程式在?? DHCP 的?????!

    4. 看一看用?端租?所??的??吧!
    [root@linux ~]# cat /var/lib/dhcp/dhclient-eth0.leases
    lease {
    interface "eth0";
    fixed-address 192.168.1.100; <==?就是?啥我每次取得的 IP 是固定的。
    option subnet-mask 255.255.255.0;
    option routers 192.168.1.254;
    option dhcp-lease-time 259200;
    option dhcp-message-type 5;
    option domain-name-servers 168.95.1.1,139.175.10.20;
    option dhcp-server-identifier 192.168.1.254;
    option nis-domain "vbird.tsai";
    option broadcast-address 192.168.1.255;
    option domain-name "vbird.tsai";
    renew 3 2006/12/6 18:15:41; <==下一次??更新 (renew) 的???
    rebind 5 2006/12/8 05:26:26;
    expire 5 2006/12/8 14:26:26;
    }
    # ???案????介面卡所曾?要求?的 DHCP ??喔!重要!
    # 有?有看出?,他?乎就?你?定的 /etc/dhcpd.conf ?似? ^_^

    5. ?外看一下 NIS 的?域名?有?有?定妥?啊?
    [root@linux ~]# nisdomainname
    vbird.tsai <==因?我?有?定 nis-domain 的?目啊!


    有?有??其?你的用?端取得的?料都被??在 /var/lib/dhcp/dhclient-eth0.leases ??啊? 如果你有多??卡,那?每??卡自己的 DHCP 要求就?被?入到不同?名的?案?中去! ?察??案就知道你的?料是如何?!?可也是挺重要的呦!



    --------------------------------------------------------------------------------
    Windows 用?端

    在 Windows 底下?定 DHCP ?定以取得 IP ?在是很??喔!我?以目前最常用的 Windows XP ??明的?, 你可以依?『?始』-->『?定』-->『控制台』-->『?路和???路??』-->『?路??』-->『?域??』 ??始一步一步的?行下面的?作喔:

    在??了上面的?域?路後,你的桌面上???出?如下的?示:



    ?二、?域?路的 DHCP 取得方式之?定


    在上?二的地方按下箭?所指的『?容』?,就?出?如下?面?:



    ?三、?域?路的 DHCP 取得方式之?定

    在上面的?面?中,建?你可以在箭?所指的 1 ?勾?那???目,如此一?在桌面最底下的右?就?出?一??路符?, 以後你就可以????示??入???面了!比?方便啦。然後在箭? 2 的地方勾? Internet Protocol (TCP/IP) 的?目, ???『?容』後,就可能?入到?定的?面。


    接下?如下?所示,你只要勾?『自?取得 IP 位址』那??目,然後按下『?定』????定?面, 如此一? Windows 就??始自?取得 IP 的工作了。



    ?四、?域?路的 DHCP 取得方式之?定


    那你如何??你的 IP 已?被?利的取得呢?如果是在早期的 Windows 95 ,你可以使用一?名?『 winipcfg 』 ??察你的 IP ?定。不?在 windows 2000 以後,你可能需要使用命令提示字元??察才行。你可以使用: 『?始』-->『程式集』-->『附??用程式』-->『命令提示字元』?取出?端?,然後???理看看:
    C:\Documents and Settings\dmtsai> ipconfig /all
    ....前面省略....
    Ethernet adapter ?域??:

    Connection-specific DNS Suffix . : vbird.tsai
    Physical Address. . . . . . . . . : 00-D0-18-AF-6E-81
    Dhcp Enabled. . . . . . . . . . . : Yes
    Autoconfiguration Enabled . . . . : Yes
    IP Address. . . . . . . . . . . . : 192.168.1.99
    Subnet Mask . . . . . . . . . . . : 255.255.255.0
    Default Gateway . . . . . . . . . : 192.168.1.254
    DHCP Server . . . . . . . . . . . : 192.168.1.254 <==?一部 DHCP 主?
    DNS Servers . . . . . . . . . . . : 168.95.1.1
    139.175.10.20
    Lease Obtained. . . . . . . . . . : 2006年12月5日 下午 10:22:37
    Lease Expires . . . . . . . . . . : 2006年12月8日 下午 10:22:37

    C:\Documents and Settings\dmtsai> ipconfig /renew
    # ??可以立即要求更新 IP ??喔!


    ??就 OK 的啦!??吧!

    --------------------------------------------------------------------------------
    伺服器端?料查?


    --------------------------------------------------------------------------------
    ?查租??案

    用?端?主?的??租???,那主?端更不能忘????!主?端是??在??地方:
    [root@linux ~]# cat /var/lib/dhcp/dhcpd.leases
    lease 192.168.1.99 { <==就是那部 Windows 的??
    starts 2 2006/12/05 14:23:37;
    ends 5 2006/12/08 14:23:37;
    binding state active;
    next binding state free;
    hardware ethernet 00-d0-18-af-6e-81;
    uid "\001\000\340\030\257n\003";
    client-hostname "vbird_work";
    }
    lease 192.168.1.100 { <==就是那部 Linux 的??
    starts 2 2006/12/05 15:37:33;
    ends 5 2006/12/08 15:37:33;
    binding state active;
    next binding state free;
    hardware ethernet 00:30:20:1d:c3:6e;
    }


    ????案?面我?就知道有多少用?端已?向我?申?了 DHCP 的 IP 使用了呢! 很容易?解吧!



    --------------------------------------------------------------------------------
    使用 ether-wake ?行?端自??? (remote boot)

    既然已?知道用?端的 MAC 位址了,如果用?端的主?符合一些?源??, ?且?用?端主?所使用之?路卡暨主?板支援?路?醒的功能?,我?就可以透??路??用?端????了。 如果你有一部主?想要?他可以透??路????,你必?要在?部用?端??上?行:

    首先你得要在 BIOS ?面?定『?路?醒』的功能,否?是?有用的喔!
    再?你必?要??部主?接上?路?,?且?源也是接通的。
    ??部主?的 MAC 抄下?,然後??等待?路?醒。
    接下??到永??著的主? DHCP 主?上面 (其?只要任何一部 Linux 主?均可!) , 下? ether-wake.c ???案:

    ftp://ftp.scyld.com/pub/diag/
    然後?始??他:
    [root@linux ~]# gcc -O -Wall -o ether-wake ether-wake.c


    此?你的家目?下???有一?名? ehter-wake 的?案,假?用?端主?的 MAC ? 11:22:33:44:55:66 好了, 那?你想要??部主?被?醒,就??做吧:
    [root@linux ~]# ./ether-wake 11:22:33:44:55:66

    # 更多功能可以??查?喔:
    [root@linux ~]# ./ether-wake -u


    然後你就???,哈哈!那部用?端主?被??了!以後如果你要?到?域?路?的?, 只要能??上你的防火?主?,然後透??? ether-wake ??,就能??你?域?路?的主???了, 控管上面就更加方便的啦!您?是吧! ^_^

    --------------------------------------------------------------------------------
    重?回?

    DHCP (Dynamic Host Configuration Protocol) 可以提供?路???用?端??,使其自??定?路的功能;
    透? DHCP 的?一管理,在同一?域?中就比?不容易出? IP ?突的情??生;
    DHCP 可以透? MAC 的比??提供 Static IP (或???? IP),否?通常提供用?端 dynamic IP (或???? IP);
    DHCP 除了 Static IP ? Dynamic IP 之外,?可以提供租?行?之?定;
    在租?期限到期之前,用?端 dhcp ??即?主?的要求更新 (? 0.5, 0.85 倍租???左右);
    用?端??、不明原因的??、超?租?期限等??下,DHCP Server ?用?端的租?行???止!
    DHCP 可以提供的 MAC 比?、Dynamic IP 的 IP ??以及租?期限等等,都在 dhcpd.conf ???案?中?定的;
    一般的情?之下,使用者需要自行?定 dhcpd.leases ???案,不?,真正的租??案??是在 /var/lib/dhcp/dhcpd.leases ?面;
    新版的 DHCP ?定? dhcpd.conf 中,需含有『 ddns-update-style 』的???定;
    如果只是要??的 DHCP 服?,建?可以???似 IP 分享器的??即可提供?定且低耗?的?路服?。

  27. baizx 于 2009-08-10 10:44:47发表:

    NIS 伺服器

    本章的行前??工作

    NIS 最大的用途在於提供用?端的使用者相???查?,?例??,使用者的??、密?、UID、家目?、shell 等等的,都可以透? NIS 伺服器?查?的。但 NIS 所能提供的也就是??了,他??有?法提供使用者家目?的空?, 因此,一般在高效能?算???中,如果想要?所有的?器都?有相同的??密?, 通常使用 NIS 提供身份??,配合 NFS 提供所需要的磁碟空?的?! 因此在?一章?始前,你最好知道:

    ?解?路基?,防火???? SELinux 模?等等。
    一定要?? NFS 伺服器;
    需要?解 RPC ??玩意?;
    需要?解使用者??相?知?,可以?考基?篇的使用者??管理章?。
    建立 NIS ?料??使用到 make/Makefile 功能,??考基?篇原始?? tarball章?。

    --------------------------------------------------------------------------------
    NIS 的由??功能

    在一?大型的?域?中,如果有多部 Linux 主?,?一要每部主?都需要?定相同的???密??,?真是?唆。 此?,如果能?有一部主控伺服器 (master server) ?管理?域中所有主?的??, ?其他的主?有使用者登入的需求?,才到?部主控伺服器上面要求相?的??、密?等使用者???料, 如此一?,如果想要增加、修改、?除使用者?料,只要到?部主控伺服器上面?理即可, ??就能?降低重??定使用者??的步?了。

    ??的功能有很多的伺服器??可以?成,??我?要介?的?是 Network Information Services (NIS server) ??伺服器??喔!底下就先??一??? NIS 的相?功能吧!


    --------------------------------------------------------------------------------
    NIS 的主要功能

    通常我?都?建?,一部 Linux 主?的功能越??越好,也就是?,一部 Linux 就???行一?服?。??有?多的好?,?包含功能??所以系??源得以完整?用, ?且在?生入侵或者是系??生??的?候,也比?容易追查??所在。因此,一?公司?部常常?有好?部 Linux 主?,有的???? WWW 、有的???? Mail 、有的???? SAMBA 等等的服?。

    不?,???然有分散??、容易追???的好?,但是,由於是同一?公司?的多部主?,所以事?上所有的 Linux 主?的???密?都是一?的!哇!那如果公司?面有 100 的人的?, 我?就需要????多部的主?去?定??密?了!而且,如果未??有新??工的?, 那?光是?定密?就?使系?管理?抓狂了!

    ???候,?我??一?角度?思考:如果我??了一部??管理???密?的主?,而其他的 Linux 主??有用?端要登入的?候,就必?要到?部管理密?的主??查?使用者的???密?, 如此一?,我要管理所有的 Linux 主?的???密?,只要到那部主要主?上面去?行?定即可! 包括新?人?的?定,反正其他的 Linux 主?都是向他查?的嘛!??!真是好~??就是 Network Information Service, NIS 主?的主要功能啦!

    事?上,Network Information Service 最早??是?? Sun Yellow Pages (?? yp),也就是 Sun ?家公司出的一?名? Yellow Pages 的伺服器??,?注意, NIS ? YP 是一模一?的咚咚喔!?? Yellow Pages 名字取的真是好!怎??呢?知道?? (Yellow Pages) 是什???就是我?家?的??簿啦! 今天如果你要查?一家?商的????,通常就是直接去查??上面的???取得????啊!而?? NIS 也一?,?使用者要登入?, Linux 系?就?到 NIS 主?上面去找???使用的???密????加以比?, 以提供使用者登入之用的??啊!很棒吧! ^_^

    那? NIS 主?提供了哪些??呢???得???密?放置在哪?吧?NIS 就是提供那些?料啦! 主要有底下?些基本的?料提供?有登入需求的主?喔:

    伺服器端?案名? ?案?容
    /etc/passwd 提供使用者??、UID、GID、家目?所在、Shell 等等
    /etc/group 提供群??料以及 GID 的??,?有?群?的加入人?
    /etc/hosts 主?名?? IP 的??,常用於 private IP 的主?名???
    /etc/services 每一?服? (daemons) 所??的埠口 (port number)
    /etc/protocols 基?的 TCP/IP 封包?定,如 TCP, UDP, ICMP 等
    /etc/netgroup ?路群?的定??使用 (NIS 可能?需要)
    /etc/rpc 每? RPC 伺服器所??的程式??
    /var/yp/ypservers NIS 伺服器所提供的?料?

    至少可以提供上述?些功能,?然啦,?也可以自行定?哪些?料?需要,哪些?料?不需要!



    --------------------------------------------------------------------------------
    NIS 的?作流程\r

    由於 NIS 伺服器主要是提供使用者登入的???用?端主??查?之用,所以, NIS 伺服器所提供的?料?然就需要用到?????比?快速的 "?料?" ?案系?, 而不是??的?文字?料。?了要?到??目的,所以 NIS 伺服器就必?要?前一小?提到的那些?案?作成??料??案, 然後使用?路通??定?用?端主??查??。至於所使用的通??定?前一章的 NFS 相同,都使用?端程序呼叫 (RPC) ??玩意?喔!

    此外,如果在一?很大型的?域?面,?一所有的 Linux 主?都向同一部 NIS 伺服器要求使用者?料?, ?部 NIS 伺服器的?? (loading) 可能??大。甚至如果考?到?料使用的??, 要是??一的一部 NIS 伺服器???,那其他的 Linux 主??要不要? users 登入啊? 所以?,在??大型的企??境?中, NIS 伺服器可以使用 master/slave (主控/次要伺服器) 架?的。

    Master NIS 伺服器提供系?管理者?作的?料?, slave ?取得?自 master 的?料,?藉以提供其他用?端的查?。 用?端可以向整??域要求使用者?料的回?,master ? slave 皆可回答, 由於 slave 的?料?自於 master ,所以使用者???料本身是同步的! 如此一方面可以分散 NIS 伺服器的??, 而且也可以避免因 NIS 伺服器??而?致的?法登入的??。



    ?一、NIS 的?作流程\r

    整? NIS 的?作就如同上?,首先必?要有 NIS server 的存在,之後才?有 NIS Client 的存在。 那??使用者有登入的需求?,整? NIS 的?作程序是:\r

    ?於 NIS Server (master/slave) 的?作程序:
    NIS Master 先?本身的??密?相??案?作成??料??案;
    NIS Master 可以主?的告知 NIS slave server ?更新;
    NIS slave 亦可主?的前往 NIS master server 取得更新後的?料??案;
    若有??密?的???,需要重新?作 database ?重新同步化 master/slave。


    ?於? NIS Client 有任何登入查?的需求?:
    NIS client 若有登入需求?,?先查?其本?的 /etc/passwd, /etc/shadow 等?案;
    若在 NIS Client 本?找不到相?的???料,才?始向整? NIS ?域的主??播查?;
    每部 NIS server (不? master/slave) 都可以回?,基本上是『先回?者?先』。
    ?上面的流程?中,你??? NIS client ?是?先??本?的???料?行查?, 查不到才到 NIS server 上??找。因此,如果你的 NIS client 本身就有很多一般使用者的???, 那跟 NIS server 所提供的??就可能?生一定程度的差??! 所以,一般??,在??的?境下,NIS client 或 NIS slave server ?主?拿掉本?本身的一般使用者??,??保留系?所需要的 root 及系?所需??而已。 如此一?,一般使用者才都??由 NIS master server 所控管啊! ^_^

    根?上面?一的?明,我?的 NIS ?境大致上需要?定的基本元件就有:

    NIS Master server :??案建置成?料?,?提供 slave server ?更新;
    NIS Slave server :以 Master server 的?料?作?本身的?料??源;
    NIS client :向 master/server 要求登入者的???料。
    就?我??始?玩一玩?? NIS 的?定吧!


    --------------------------------------------------------------------------------
    NIS Server 端的?定

    NIS 伺服器端主要在於提供?料??用?端作???之用,?且伺服器端因??料?的?源又可分? master/slave ?大?。底下我???介????伺服器的安?方式哩!


    --------------------------------------------------------------------------------
    所需要的套件

    由於 NIS 伺服器需要使用 RPC ?定,且 NIS 伺服器同?也可以?成用?端, 因此他需要的套件就有底下???:

    yp-tools :提供 NIS 相?的查?指令功能
    ypbind :提供 NIS Client 端的?定套件
    ypserv :提供 NIS Server 端的?定套件
    portmap :就是 RPC 一定需要的?料啊!
    如果你是使用 Red Hat 的系?,例如我?的 CentOS 4.x 的?,那你可以利用『 rpm -qa | grep '^yp' 』 ??查是否有安?上述的套件。一般?? yp-tools, ypbind 都?主?的安?,不? ypserv 可能就不?安?了。 此?建?你直接使用『 yum install ypserv 』?安?吧!立刻就?好了。底下立刻??定?!



    --------------------------------------------------------------------------------
    NIS 的套件??

    在 NIS 伺服器上最重要的就是 ypserv ??套件了,而 ypserv 主要?是提供了底下?些重要?料:

    ?定?方面:
    /etc/ypserv.conf:?是最主要的?定?, 可以?? NIS 用?端是否可登入的?限。
    /etc/hosts:非常重要!每一部主?都需要??才行!!
    /etc/netgroup:?定信任的主???域;
    /var/yp/Makefile:?建立?料?有?的?作?定?;
    /etc/sysconfig/network:可以在???案?指定 NIS 的?域 (nisdomainname)。
    伺服器提供的主要服?方面:
    /usr/sbin/ypserv:就是 NIS 伺服器的主要提供服?;
    /usr/sbin/rpc.ypxfrd:用?作? master/slave 主?之????料?的服?;
    /usr/sbin/rpc.yppasswdd:提供?外的 NIS 用?端之使用者密?修改服?, 透???服?, NIS 用?端可以直接修改在 NIS 伺服器上的密?。相?的使用程式?是 yppasswd 指令;
    ??料?有?的指令方面:
    /usr/sbin/yppush:master 主???料?直接送至 slave 的指令;
    /usr/lib/yp/ypinit:建立?料?的指令,非常常用;
    /usr/lib/yp/ypxfr:?送?料?的指令,在?目?下尚有 ypxfr_1perday, ypxfr_1perhour, ypxfr_2perday 等等。

    --------------------------------------------------------------------------------
    一??作案例

    如果您有?察??一的?,你???到我?的 NIS 需要?定 Master/Slave 及 client 等, ?哥??提供一?案例,??就包括?三?元件啦!不?如果你的?域是比?小的?境, 那底下提供的 NIS slave server 你可以略?不看!?哥在??的假?是??的:

    NIS 的?域名?? vbirdnis
    整??部的信任?域? 192.168.1.0/24
    NIS master server 的 IP ? 192.168.1.2 ,主?名?? master.vbirdnis
    NIS slave server 的 IP ? 192.168.1.10,主?名?? slave.vbirdnis
    NIS client 的 IP ? 192.168.1.100,主?名?? client.vbirdnis
    底下我?就一?一???定吧!



    --------------------------------------------------------------------------------
    NIS master 的?定???

    NIS 的?定真是很??,首先,你必?要在 NIS master ?部伺服器上面搞定你的???密?相??料, ?包括 /etc/passwd, /etc/shadow, /etc/hosts, /etc/group .... 等等,都得要先搞定才行! ??的??相??料??考基?篇的??管理章?。 等到搞定之後你就可以?? NIS 伺服器的?定了:


    --------------------------------------------------------------------------------

    ?定 NIS 的?域名? (NIS domain name)
    因?所有的 NIS server/client 都需要?定 NIS ?域名?才行,所以就?定吧!?定的方式很??, 直接以 nisdomainname ??指令?下?即可。(其? nisdomainname ? ypdomainname 及 domainname 都是一模一?的指令啦!你只要?住一?指令名?即可。?自行 man domainname 吧!)
    [root@linux ~]# nisdomainname [NIS ?域名?]
    ??:
    若?有加上?域名?,???示出目前的 NIS ?域;

    [root@linux ~]# nisdomainname vbirdnis
    [root@linux ~]# nisdomainname
    vbirdnis <==瞧!已??定了 NIS ?域名??!


    如果?定每次???都需要???? NIS ?域名?的?,直接?到 /etc/rc.d/rc.local 去:
    [root@linux ~]# vi /etc/rc.d/rc.local
    # 加入底下?一行:
    /bin/nisdomainname vbirdnis


    若是想要在?? NIS ?就自??定好 NIS ?域的?,可以利用 /etc/sysconfig/network ???案,?成如下所示的模?:
    [root@linux ~]# vi /etc/sysconfig/network
    # 加入底下?一行:
    NISDOMAIN=vbirdnis


    如此一?,你的伺服器就?在???,或者是在?? NIS 相?服??,就能?自行?定好 NIS ?域?!



    --------------------------------------------------------------------------------

    主要?定? /etc/ypserv.conf
    ???定?就是 NIS 伺服器最主要的?定?啦!?容其?很??,你可以保留??值即可。 不?,也可以作一些更?啦!
    [root@linux ~]# vi /etc/ypserv.conf
    dns: no
    # NIS 伺服器的使用???大部分都是在?域?路?而已,所以不需要 DNS 系?,
    # 只要 /etc/hosts ?定正?即可!!

    files: 30
    # ???有 30 ??料?被?入????中,因?我?的???案其?不多,
    # 30 ?已?足?使用了!

    slp: no
    slp_timeout: 3600
    # ???? SLP 服?有?,因?我??使用??的 NIS ,所以不需要??。

    xfr_check_port: yes
    # ??? master/slave 有?,?同步更新的?料?比?所使用的埠口,
    # 放置於小於 1024 的埠口?。

    # 底下?是?定限制用?端或 slave server 查?的?限,利用冒?隔成四部分,分??:
    # [主?名?/IP] : [NIS?域名?] : [可用?料?名?] : [安全限制]
    # [主?名?/IP] :可以使用 network/netmask 如 192.168.1.0/255.255.255.0
    # [NIS?域名?] :例如本案例中的 vbirdnis
    # [可用?料?名?]:就是由 NIS ?作出?的?料?名?;
    # [安全限制] :包括?有限制 (none)、?能使用 <1024 (port) 及拒? (deny)
    # 一般??,你可以依照我?的?域??定成?底下的模?:
    127.0.0.0/255.255.255.0 : * : * : none
    192.168.1.0/255.255.255.0 : * : * : none
    * : * : * : deny
    # 星? (*) 代表任何?料都接受的意思。上面三行的意思是,?放 lo ?部介面、
    # ?放?部 LAN ?域,且杜?所有其他?源的 NIS 要求的意思。

    # ?一上面?三行?限相?的?定?法?你的 NIS ?利的生效?,
    # 你可以先?上面三行?解,然後加入底下?一行:
    * : * : * : none
    # ????就能?? NIS ?利的??了。




    --------------------------------------------------------------------------------

    ?定主?名? (/etc/hosts) ?建立信任群? (/etc/netgroup)
    在 /etc/ypserv.conf 的?定?中我??到 NIS 大部分是??域?路?的主?使用的, 所以?然就不需要 DNS 的?定了。不?,由於 NIS 使用到很多的主?名?, 所以你一定要?定好 /etc/hosts ??,否???法成功?? NIS ! ??很重要,?大部分的朋友?法?成 NIS server/client 的??都是??出??而已。 依?本案例的?定值,你????做:
    [root@linux ~]# vi /etc/hosts
    192.168.1.2 master.vbirdnis
    192.168.1.10 slave.vbirdnis
    192.168.1.100 client.vbirdnis


    注意!如果你的主?名?? NIS 的主?名?不一?,那?在???案?中?是需要?你的主?名??他?定??! 否?在後面?料?的?定?,肯定??生??。?然啦,你也可以直接在 /etc/sysconfig/network ?中直接重新?定主?名?,然後重新??,或者是利用 hostname ??指令重新?定你的主?名?也可以。

    除了???定之外,有?候你可能需要?定 /etc/netgroup ,?然比?新的 distributions 都可以略????案的?查了,不?建?您?是可以?解一下的啦!?? /etc/netgroup ?案可以??在我??域?面被信任的群,???案的?容?中,每一行都有三??位,分?以逗?『,』隔?,意??:
    ,,
    主?,使用者??,?域名?


    事?上,如果???案是『空的』的?,那?代表著『全部的主?、????域名?都接受』的意思,因?我?已?在 /etc/ypserv.conf ???定好了?於安全的?目了,所以???案只要建立即可(本?是不存在的!):
    [root@linux ~]# touch /etc/netgroup




    --------------------------------------------------------------------------------

    ??所有相?的服?
    接下??然是先??所有相?的服??,?包括 RPC, ypserv 以及 yppasswdd ?! 不?,如果你的 RPC 本?就已???的?,那就不要重新?? portmap 了!
    [root@linux ~]# /etc/init.d/portmap start
    [root@linux ~]# /etc/init.d/ypserv start
    [root@linux ~]# /etc/init.d/yppasswdd start


    注意,主要的 NIS 服?是 ypserv ,不?,如果要提供 NIS 用?端的密?修改功能的?, 最好?是得要?? yppasswdd ??服?才好。在??完?後,我?可以利用 rpcinfo ??查看看:
    [root@linux ~]# rpcinfo -p localhost
    program vers proto port
    100000 2 tcp 111 portmapper
    100000 2 udp 111 portmapper
    100004 2 udp 942 ypserv
    100004 1 udp 942 ypserv
    100004 2 tcp 945 ypserv
    100004 1 tcp 945 ypserv
    100009 1 udp 950 yppasswdd

    [root@linux ~]# rpcinfo -u localhost ypserv
    program 100004 version 1 ready and waiting
    program 100004 version 2 ready and waiting


    要出?上述的?面才表示正?的??了 ypserv 喔!若有需要??立即?? ypserv 的?,?使用 chkconfig ??理吧!



    --------------------------------------------------------------------------------

    建立?料?
    在完成了上面的所有步?後,接下?我?得要?始?主?上面的???案?成?料??案啦! ??的?作直接透? /usr/lib/yp/ypinit ??指令??理即可!整?步?是??做的:
    [root@linux ~]# /usr/lib/yp/ypinit -m
    At this point, we have to construct a list of the hosts which will run NIS
    servers. master.vbirdnis is in the list of NIS server hosts. Please continue
    to add the names for the other hosts, one per line. When you are done with the
    list, type a .
    next host to add: master.vbirdnis <==??地方系??主?捉到
    next host to add: <==按下 [ctrl]-d
    The current list of NIS servers looks like this:

    master.vbirdnis

    Is this correct? [y/n: y] y
    We need a few minutes to build the databases...
    Building /var/yp/vbirdnis/ypservers...
    Running /var/yp/Makefile...
    gmake[1]: Entering directory `/var/yp/vbirdnis'
    Updating passwd.byname...
    ....中?省略....
    gmake[1]: Leaving directory `/var/yp/vbirdnis'

    master.vbirdnis has been set up as a NIS master server.

    Now you can run ypinit -s master.vbirdnis on all slave server.


    要注意出?的???中,在告知你可以直接?入 [ctrl]-d 以?束的那?地方, 你的主?名??主?的被捉出?,注意!??主?名??必需要在 /etc/hosts 可以被找到 IP 的??, 否??出???。另外,?一在?行 ypinit -m ?,出?如下的??,那肯定就是有些?料?有被建立了!
    gmake[1]: *** No rule to make target `/etc/aliases', needed by
    `mail.aliases'. Stop.
    gmake[1]: Leaving directory `/var/yp/vbirdnis'
    make: *** [target] Error 2
    Error running Makefile.
    Please try it by hand.

    [root@linux ~]# touch /etc/aliases
    # 解?方法很???!缺少什??案,就 touch 他就是了!
    [root@linux ~]# /usr/lib/yp/ypinit -m
    # 然後再重新?行一次即可!


    如果是如下的??,那可能是因?:

    你的 ypserv ?有?利??,?利用 rpcinfo ?查看看;
    你的主?名??有??好,??查 /etc/hosts
    gmake[1]: Entering directory `/var/yp/vbirdnis'
    Updating passwd.byname...
    failed to send 'clear' to local ypserv: RPC: Program not
    registeredUpdating passwd.byuid...
    failed to send 'clear' to local ypserv: RPC: Program not
    registeredUpdating group.byname...
    ....


    建立了?料?後,你必需要通知 ypserv ? yppasswdd ??支服?,告知?料?已?被更改了, 所以你可以??做:
    [root@linux ~]# /etc/init.d/ypserv restart
    [root@linux ~]# /etc/init.d/yppasswdd restart


    要注意啊,如果你的使用者密?有???,那?你就得要重新?作?料?,重新?? ypserv 及 yppasswdd 喔! 注意注意啊!



    --------------------------------------------------------------------------------

    ? slave server 及?料?有?的一些?定 (optional)
    ?我??行了 ypinit -m 之後,所有的主?上面的??相??案?被?成?料??案, ?些?料??被放置到 /var/yp/"nisdomainname" ?中,我?的 nisdomainname 是 vbirdnis , 所以被建立的?料?通通被放置到 /var/yp/vbirdnis/ 目?中?!您可以自行去?查看看。

    事?上,我?的 ypinit 其?是透? /var/yp/Makefile ??行?料?的建立的呢! 所以,我??然也就可以藉由??案?的功能??理某些特定?案的更新?! ?例??,若??修改了一?使用者的????而已,所以?有 /etc/passwd 有被?更?, 那?如何??????案?行?料?的更新呢?你可以??做:
    [root@linux ~]# cd /var/yp
    [root@linux yp]# make passwd
    Updating passwd.byname...
    Updating passwd.byuid...


    ??做就能?更新了,只不?更新後的?料??被放置到 /var/yp ?中,而不是 /var/yp/vbirdnis ?中, 或???得需要手?移?一下??案就是了。

    再者,如果你有 slave 伺服器的?,?是需要?行 master/slave 的同步化吧? 那如何告知我?的 master 伺服器??料?提供? slave 呢????候就得要修改 /var/yp/Makefile ?! 您可以自行?入??案?查?一些?料,不?,基本上你只要改一?地方就好了:
    [root@linux ~]# vi /var/yp/Makefile
    # 找到底下?一行:
    NOPUSH=true
    # ?他改成??:
    NOPUSH=false


    ???定值可以??料??他『推 (push)』到其他的 slave 伺服器上?!接下?,你必需要告知 master 要推出去的?料?是?哪部伺服器?所以,你?得要修改??:
    [root@linux ~]# vi /var/yp/ypservers
    master.vbirdnis
    slave.vbirdnis
    # 增加上??一行!


    你可以?所有的 slave 伺服器都加到 /var/yp/ypservers ?案?中,只要?得?伺服器的 IP 必需要在 /etc/hosts ?可以找到??才行喔!如果你要提供 master/slave 伺服器的?料??案???, 那??需要?? ypxfrd ??服?才行!??服?可以? slave 伺服器主???上 ypxfrd ?更新?料?, 可以免除系?管理原自己手?更新啦!??方式太??了吧!
    [root@linux ~]# /etc/init.d/ypxfrd start


    做到??就 OK 啦!您的 NIS Master 伺服器已?搞定?!接下?,您就可以???理 slave 伺服器,或是直接?理 NIS client 端?!此外,如果您的 master ?器想要直接?某些特定的?料?直接?? slave 主?的?, 那?可以使用 yppush ??指令喔!例如下列?例:
    [root@linux ~]# yppush -h slave.vbirdnis passwd.*


    如果 master/slave 的?料?不符合的?,那?? passwd.byname 及 passwd.byuid 就?同步更新了! 很??吧! ^_^!也就是?,您得先要?作?料?,然後再利用 yppush ??理?料?的同步啊! 亦即是:

    先以 useradd username 或 passwd username 等?作出 master 上面的??用?;
    再以 make 或者直接以 /usr/lib/yp/ypinit -m ??作出最新的?料?;
    利用 yppush ??指令功能??行?料?的??。
    如此一?,您就不需要?行 slave 上面的其他?料??理啦!方便又??!

    --------------------------------------------------------------------------------
    NIS slave 的?定??? (optional)

    ?考?一的 NIS ?作流程?中,我?知道由於 NIS 伺服器???是?先搜?自己的 /etc/passwd, /etc/shadow 等??,因此你最好先? NIS slave 的???密??料作???的修?,?他保留在比?乾?的???料,例如?有系??? (UID 小於 500 ?的系???) 就是一?不?的?境。??可以避免 UID 重?出?的?? (在 /etc/passwd 及 NIS 的?境中都出?相同的 UID ,但其相?????相同?,可能有困?)。

    NIS slave 的?定要比 NIS master ??多了,事?上,很多?定都一?!你甚至可以?? NIS master 的很多?定?哩!在你?理完 NIS slave 伺服器的??密?相??案後,接下?你可以???定喔:


    --------------------------------------------------------------------------------

    ?定?域
    同?的, NIS slave 也需要?定相同的?域,?定方式可以?考前一小?的介?,我???很快的介?一遍:
    1. 直接建立?域名?
    [root@linux ~]# nisdomainname vbirdnis

    2. ??立即??此一?域名?
    [root@linux ~]# vi /etc/rc.d/rc.local
    # 加入底下?一行:
    /bin/nisdomainname vbirdnis

    3. ??在?? ypserv ?,?定 NIS ?域名
    [root@linux ~]# vi /etc/sysconfig/network
    # 加入底下?一行:
    NISDOMAIN=vbirdnis




    --------------------------------------------------------------------------------

    主要?定? /etc/ypserv.conf
    ???定?也是很??的啦!可以?前面的 NIS master 相同即可。在?哥的??例子?中, 我是直接在??案加入?三行而已喔!
    [root@linux ~]# vi /etc/ypserv.conf
    127.0.0.0/255.255.255.0 : * : * : none
    192.168.1.0/255.255.255.0 : * : * : none
    * : * : * : deny




    --------------------------------------------------------------------------------

    /etc/hosts 及 /etc/netgroup
    ????案不陌生吧?直接?定他吧!
    [root@linux ~]# touch /etc/netgroup
    [root@linux ~]# vi /etc/hosts
    192.168.1.2 master.vbirdnis
    192.168.1.10 slave.vbirdnis
    192.168.1.100 client.vbirdnis




    --------------------------------------------------------------------------------

    ??所有服?及建立?料?
    ??得吧?我?需要 portmap ? ypserv 喔!至於 yppasswdd ??功能主要是在修改主控伺服器 (master) 上面的??密?,而 slave 只是在取得 master 的?料?而已,本身?不具?修改?料?的能力的, 所以 slave ?然就不需要???西啦!所以你可以???定:
    [root@linux ~]# /etc/init.d/portmap start
    [root@linux ~]# /etc/init.d/ypserv start


    那如何取得?自 master 伺服器的?料??案呢??是一?得要透? /usr/lib/yp/ypinit ?支程式啦! 只是他的指令下???成??喔:
    [root@linux ~]# /usr/lib/yp/ypinit -s master.vbirdnis
    ??:
    -s :後面接??取得的 master 主?名?!
    We will need a few minutes to copy the data from master.vbirdnis.
    Transferring hosts.byname...
    Trying ypxfrd ... not running

    Transferring services.byname...
    Trying ypxfrd ... not running
    ....中?省略....


    ?然使用上?的指令事?上?出?有??的??,就是那?『Trying ypxfrd ... not running』的??, 但事?上?料?的?移?是成功的!不相信的?,你可以使用底下??指令???一下?料?是否正?:
    [root@linux ~]# ypcat -h localhost passwd.byname


    如果有正?的?出??/密??料的?,呵呵!那就是 OK 的啦!如此一?,您的 NIS slave 就?? OK 啦! 不?,由於您的 master 伺服器可能??都?有??/密?的改?,所以你其?是可以使用 ypxfrd ??服???助?料?在 master/slave ??移的!如果你有在 master 伺服器?? ypxfrd 的?, 那?你可以在 slave 的工作排程上???理的:
    [root@linux ~]# vi /etc/crontab
    # 在最後加入以 ypxfr ???料的 script 喔!
    20 * * * * root /usr/lib/yp/ypxfr_1perhour
    40 6 * * * root /usr/lib/yp/ypxfr_2perday
    55 6,18 * * * root /usr/lib/yp/ypxfr_2perday
    # 事?上,?三支程式只是利用 /usr/lib/yp/ypxfr ??行?料?的更新,
    # 不??哥???行?,似乎有?小??,或?需要修改一下上述三??案,
    # 我?以 /usr/lib/yp/ypxfr_1perhour ?例??明好了:

    [root@linux ~]# vi /usr/lib/yp/ypxfr_1perhour
    # 找到?一行:
    $YPBINDIR/ypxfr $map
    # ?他改成??:
    $YPBINDIR/ypxfr $map -h master.vbirdnis



    Tips:
    事?上,如果 master 伺服器有?? ypxfrd 的?,那?下? ypinit -s master.vbirdnis ?, 就不?有???息?! ^_^

    如此一?,系?????不同的?料??? master 伺服器?行比?,若?? master 的?料?新?,???行更新!很方便吧!?然啦,您也可以直接透?系?管理??行 ypinit -s master.vbirdnis ??理就是了。此外,直接利用 master ?器上的 yppush 也是?不?的思考方向!



    --------------------------------------------------------------------------------

    ?? ypbind ,? slave 也可以查???/密?
    如果你的 slave ??有?? ypbind 的?,那? slave ??法以 master 所提供的???登入的! 所以接下?,?必?要?? ypbind ??查?的功能,好?我?的 slave 伺服器也可以??我?自己的 NIS ?域 (vbirdnis) ?行查?。 至於 ypbind 的??方式???考下一小?的 NIS client ?定方式吧!

    至此?止,你就已?具有一部 NIS master 及多部 NIS slave 的伺服器?!接下?就?玩玩 NIS client 吧!


    --------------------------------------------------------------------------------
    防火??置

    又?到了防火?的??了!要注意的是,我?的 NIS ? NFS 都是使用 RPC Server 的,所以?,都可以直接管制 111 ?? port 即可!能?直接以 iptables 管理 111 ?? port ,例如?允? 192.168.1.0/24 ???域??的?,可以在你的防火???上面加上:
    /sbin/iptables -A -s 192.168.1.0/24 --dport 111 -j ACCEPT
    /sbin/iptables -A --dport 111 -j DROP




    --------------------------------------------------------------------------------
    NIS Client 端的?定

    我?知道?路??是?向的,所以 NIS server 提供?料??案,NIS client ?然也需要提供一些??的???! ????的??就是 ypbind 啦!此外,如同?一的介?,在 NIS client 端有登入需求?, NIS client 基本上?是先搜?自己的 /etc/passwd, /etc/group 等?料後才再去找 NIS server 的?料?啊! 所以 NIS client 最好能??本身的??密??除到?剩下系???,亦即 UID, GID 均小於 500 以下的??即可, 如此一?既可?系??行??,也能??登入者的??完全?自 NIS server ,比???啦!

    Tips:
    事?上,你想要? NIS 伺服器?入的各????料都在 NIS server 的 /var/yp/Makefile 那??案?定的! 您可以?入??案搜?一下 UID 就知道了! ^_^


    --------------------------------------------------------------------------------
    NIS client 所需套件?套件??

    NIS client 端所需要的套件?有:

    ypbind
    yp-tools
    即可,yp-tools 提供查?的??,至於 ypbind ?是? ypserv 互相?通的用?端????啦! 另外,在 CentOS ?中我??有很多?定?是???有?的,包含 ypbind 的?定??, 在?定 NIS client 你可能需要?到底下的?案:

    /etc/sysconfig/network :??主要?定了 NIS ?域名?,? ypbind ???可以?定好;
    /etc/hosts :很重要吧!至少需要有各? NIS 伺服器的 IP ?主?名??;
    /etc/yp.conf :???是 ypbind 的主要?定?,?面主要?? NIS server ;
    /etc/sysconfig/authconfig :????登入?的允????制;
    /etc/pam.d/system-auth :??最容易忘?!因???通常由 PAM 模?所管理, 所以你必?要在 PAM 模??加入 NIS 的支援才行!
    /etc/nsswitch.conf :???案重要到不行!可以????密??相???的查??序,??是 /etc/passwd 再 NIS 等等;
    另外, NIS ?提供了??有趣的程式? NIS 用?端??行??相???的修改,例如密?、shell 等等, 主要有底下???指令:

    /usr/bin/yppasswd :更改你在 NIS database (NIS Server 所?作的?料?) 的密?
    /usr/bin/ypchsh :同上,但是是更改 shell
    /usr/bin/ypchfn :同上,但是是更改一些使用者的?息!
    OK!那?底下就?我??始??定 NIS 用?端吧!^_^



    --------------------------------------------------------------------------------
    NIS client 的?定???

    ?? NIS client 的?定就??多了!最主要是加入 NIS domain ?中,然後再?? ypbind 即可。 整??定?程是??的:


    --------------------------------------------------------------------------------

    ?定好 NIS domain 以及 /etc/hosts 主?名??
    ?定 NIS domain 就利用 nisdomainname ??理即可啊:
    1. 直接建立?域名?
    [root@linux ~]# nisdomainname vbirdnis

    2. ??立即??此一?域名?
    [root@linux ~]# vi /etc/rc.d/rc.local
    # 加入底下?一行:
    /bin/nisdomainname vbirdnis

    3. ??在?? ypbind ?,?定 NIS ?域名
    [root@linux ~]# vi /etc/sysconfig/network
    # 加入底下?一行:
    NISDOMAIN=vbirdnis


    然後?是主?名?? IP 的???定?,重要的很!
    [root@linux ~]# vi /etc/hosts
    192.168.1.2 master.vbirdnis
    192.168.1.10 slave.vbirdnis
    192.168.1.100 client.vbirdnis


    ??就好了!??下一步!



    --------------------------------------------------------------------------------

    ?? ypbind ???至 NIS server
    要?? ypbind 必?要?定很多的?案,?在很麻?~不?不打?, CentOS 提供?我?一?工具『authconfig』, 透???工具我?可以很快的? ypbind ?定起?。?只要在?端??境下下? authconfig 就能??定了。?定的方式如下所示:



    ?二、authconfig 的使用?明

    系?原本就?有 MD5 及 Shadow 的加密??,您只要??上?的 NIS ?目,然後按下 OK 便?入到如下所示?面:



    ?三、authconfig 的使用?明(?)

    在你?入了正?的 NIS ?域名? (Domain) 以及正?的主?名? (就是主控主?) , ?且按下 OK 後,你的 CentOS 就?自?的?你?? portmap 以及 ypbind ??支程式, 同???自?的使用 chkconfig 的功能?您在???自??? portmap 及 ypbind 喔! 真的是很方便吧!??你就??了 ypbind 了!很??吧!

    如果?真的想要手??理的?,那??必?要手?的修改底下?些?案:

    /etc/nsswitch.conf (修改?多主???功能的?序)
    /etc/sysconfig/authconfig (CentOS 的???制)
    /etc/pam.d/system-auth (?多登入所需要的 PAM ???程)
    /etc/yp.conf (亦即是 ypbind 的?定?)
    事?上, authconfig 指令也是在?理?些?案而已。 我?就??一???小??吧!
    1. /etc/nsswitch.conf
    [root@linux ~]# vi /etc/nsswitch.conf
    # ???案的?容有相?多,不?如果你只想要?行登入??,可以??:
    passwd: files nis
    shadow: files nis
    group: files nis
    hosts: files nis dns
    # 亦即只要加入 nis 即可!????定的意?是:
    # 1. passwd: 就是使用者相???查?,分?? /etc/passwd, nis
    # 2. shadow: 就是使用者密?的查?, /etc/shadow, nis
    # 3. group: 就是使用者的群???查?, /etc/group, nis
    # 4. hosts: 就是主?名??IP??的查?,/etc/hosts, nis 及 /etc/resolv.conf

    2. /etc/sysconfig/authconfig
    [root@linux ~]# vi /etc/sysconfig/authconfig
    USENIS=no
    # ???案的?容很好修改!只要?上面 NIS 部分改成 yes 即可:
    USENIS=yes

    3. /etc/pam.d/system-auth
    [root@linux ~]# vi /etc/pam.d/system-auth
    # ??部分也很重要!很容易忘?啦!修改 PAM 的?定?找到如下一行:
    password sufficient /lib/security/$ISA/pam_unix.so nullok
    use_authtok md5 shadow
    # 上面可是同一行喔!?他改成:
    password sufficient /lib/security/$ISA/pam_unix.so nullok
    use_authtok md5 shadow nis

    4. /etc/yp.conf
    [root@linux ~]# vi /etc/yp.conf
    # ??是 ypbind 的主要?定?,主要?法是??的:
    # domain [NIS?域] server [主?名?]
    # 或者是透??播,?合用於大?域有多部 NIS 伺服器?:
    # domain [NIS?域] broadcast
    domain vbirdnis broadcast


    ???定完成後,再?他?? ypbind 即可:
    [root@linux ~]# /etc/init.d/portmap start
    [root@linux ~]# /etc/init.d/ypbind start


    你可以手??理,也可以直接使用 authconfig 啦! ?哥??倒是建?您可以直接使用 authconfig 比???啊! ^_^!

    另外,那些手??理的?案?中, /etc/nsswitch.conf 是很重要的,因?他??了 Linux 本?要使用某些服??,例如??/密?的?料、 主?名?的???料、port number ??服?名?的?料等等,?些?料的搜??序! 更多的?料?自行?入??案?查?,我?也?在 DNS 伺服器章?再次提到???案的。

    至於其他???定?, /etc/sysconfig/authconfig, /etc/pam.d/system-auth ?是?使用者??的??有?, ?是 CentOS (Red Hat 系?) 所?用的?定?,如果?有修改?定的?,那??利?? ypbind 也是?法登入的啦! ???,可以?解吧! ^_^

    --------------------------------------------------------------------------------
    NIS client 端的??: yptest, ypwhich, ypcat

    如何?定 NIS client 已??上 NIS server 呢???的要命啊!你可以利用 id ??指令直接?查 NIS server 有的,但是 NIS client ?有的??,如果有出????的相? UID/GID ???,那表示有?接上啊! 除此之外,我??可以透? NIS 提供的相???功能??查喔!底下分??瞧一瞧:


    --------------------------------------------------------------------------------

    利用 yptest ???料?之??:
    直接?入 yptest 即可?查相?的???料,如下所示:
    [root@linux ~]# yptest
    Test 1: domainname
    Configured domainname is "vbirdnis"

    Test 2: ypbind
    Used NIS server: master.vbirdnis

    Test 3: yp_match
    WARNING: No such key in map (Map passwd.byname, key nobody)
    ....中?省略....

    Test 8: yp_maplist
    hosts.byname
    group.byname
    passwd.byuid
    group.bygid
    passwd.byname
    hosts.byaddr
    ....中?省略....

    Test 9: yp_all
    ....中?省略....
    1 tests failed


    ??????中我?可以??一些??,重?在第九?步? yp_all 必?要有列出您 NIS server 上?的所有????,如果有出???相??料的?,那???就算??成功了!比?有??的是第三步?, 他?出?在 passwd.byname ?中找不到 nobody 的字?。?是因?早期的 nobody 之 UID 都?定在 65534 ,但 CentOS ?? nobody ?定?系???的 99 ,所以?然不?被??, 也就出??一?警告。不?,????是可忽略的啦! ^_^



    --------------------------------------------------------------------------------

    利用 ypwhich ???料??量
    ??使用 ypwhich 的?候?示的是『NIS Client 的 domain』名?,而?加入 -x ?????, ?是?示『NIS Client ? Server 之??通的?料?有哪些?』你可以????哩!
    [root@linux ~]# ypwhich -x
    Use "hosts" for map "hosts.byname"
    Use "group" for map "group.byname"
    Use "passwd" for map "passwd.byname"
    ....以下省略....


    由上面我?可以很清楚的就看到相?的?案啦!?些?料??案?是放置在我的 NIS Server 的 /var/yp/vbirdnis/* ?面?!



    --------------------------------------------------------------------------------

    利用 ypcat ?取?料??容
    除了 yptest 之外,你?可以直接利用 ypcat ?取?料?的?容喔!一般作法是??:
    [root@linux ~]# ypcat [-h nisserver] [?料?名?]
    ??:
    -h nisserver :如果有?定的?,指向某一部特定的 NIS 伺服器,
    如果?有指定的?,就以 ypbind 之?定?主;
    ?料?名?:亦即在 /var/yp/vbirdnis/ ?的?名啊!例如 passwd.byname

    ?例:?出 passwd.byname 的?料??容
    [root@linux ~]# ypcat passwd.byname



    ?三?指令在?行 NIS Client 端的???,是相?有用的喔!不要忽略了他的存在啊!尤其是?架?好 NIS Client ?,一定要使用 yptest 去?查看看有?有?定??喔!根??幕?示的?息去一?一?校正??才行啊!



    --------------------------------------------------------------------------------
    使用者??修改: yppasswd, ypchfn, ypchsh

    好了,完成了上述的?定後,你的 NIS server/client 的??已?同步了!真是高?不是?? 不?,?有?挺大的??,那就是.... 使用者如何在 NIS client 修改他自己的登入??,例如密?、shell 等等? 因? NIS client 是藉由?料??取得使用者的??密?,那如何在 NIS 用?端?理??密?的?正?

    ?的好!?也是?何我?需要在 NIS server ?? yppasswdd ?支服?的主要用意! 因? yppasswdd 可以接收 NIS client 端??的密?修改,藉此而?理 NIS server 的 /etc/passwd, /etc/shadow , 然後 yppasswdd ?能?重建密??料?,? NIS server 同步更新?料?!真是很不?啊! ^_^

    那?如何下?指令呢?很??啊!透? yppasswd, ypchsh, ypchfn ??理即可。?三?指令的??是:

    yppasswd :? passwd 指令相同功能;
    ypchfn :? chfn 相同功能;
    ypchsh :? chsh 相同功能。
    因?功能相?,所以?哥????明一下 yppasswd 而已。假?你已?登入 NIS client 那部主?, ?且是以 nistest ??使用者登入的,?住,??使用者相??料?在 NIS server 上。 接下?,??使用者可以下? yppasswd ,如下所示:
    [nistest@linux ~]$ yppasswd
    Changing NIS account information for nistest on master.vbirdnis.
    Please enter old password: <==???入?密?
    Changing NIS password for nistest on master.vbirdnis.
    Please enter new password: <==???入新密?
    Please retype new password: <==再?入一遍

    The NIS password has been changed on master.vbirdnis.


    嘿嘿!如何,??就更新了 NIS server 上?的 /etc/shadow 以及 /var/yp/vbirdnis/passwd.by* 的?料?, ??吧!一下子就同步化了。不?,如果要教育使用者使用 yppasswd 的?,他可能不太能??, 不要?,你可以透?修改 alias 或者是置?掉 /usr/bin/passwd ?支程式即可!



    --------------------------------------------------------------------------------
    NIS ? NFS 的?定??集???用\r

    不?得您有?有??一件事情啊!那就是:我?的 NIS Server ?定的使用者家目?是在 /home 底下,例如 nistest ??人的家目?在 /home/nistest (??目?在 master.vbirdnis ?部主?上面才有)。??是,?我?登入 NIS Client 主??,那?我?取得的家目??料?是在 /home/nistest ,不?事?上 NIS Client 主???有 /home/test ??目?啊,也就是?:

    nistest ??使用者是在 NIS server 上面建立的,所以有 /home/nistest ??目?;
    在 NIS Client 上面?有真正的 nistest ????,因?他是由 NIS server 上面取得的,所以自然也就?有 /home/nistest ??目?在 NIS client 上面。
    ???造成什???呢?呵呵!就是你的 nistest ??使用者,登入 NIS client 的?候,『?找不到自己的家目?』! 真是糟糕~而且,因?我?的 NIS client 可能有很多部,要是每次登入 NIS Clients 主?的?候, 所?有的家目?都是?? NIS client 上面的目?,那?就?有?到 NIS 的功能啦!您?是吧!所以, 如果你需要『同一???登入的每? NIS Client 所?有的家目?都是相同的!』 的一?情?,呵呵!就可以使用 NFS ?加以?定啦!??的 NFS ?定我?之前已?提?了, ??不在?言,???一下??的?定技巧:

    在 NIS Server 上面?放 /home ??目?出?;
    在 NIS Client 上面, mount NIS 主?的 /home 到自己的 /home ?面去!
    如此一?,不?登入哪一部 NIS Server 或 client ,使用者都是?入到 NIS Server 的 /home ?面的家目??!
    事?上,使用者的??除了 /home 之外,像是 /var/spool/mail 以及 /var/spool/cron 也都是可能?有?料存放的目?,你的 NFS 主???也要提供???目?才好。 ?定的方法也不?,我?就??的?一?吧!
    1. ?定 NIS server 主?的 NFS ?放目?:
    [root@linux ~]# vi /etc/exports
    /home 192.168.1.0/24(rw,async)

    [root@linux ~]# exportfs -rv
    exporting 192.168.1.0/24:/home

    [root@linux ~]# /etc/init.d/nfs start
    [root@linux ~]# chkconfig --level 35 nfs on

    2. ?定 NIS Client 的 mount ?料!
    [root@linux ~]# mount -t nfs -o bg,soft 192.168.1.2:/home /home
    # 如果??指令?有??,可以?他加入 /etc/rc.d/rc.local ?中啊!


    ??一?,您的 NIS Clients 就具有和 NIS Server 主?一模一?的家目?了!?在您可以立刻登入看看喔!

    事?上,??段由於?人??的相???不但便宜,而且?算效能?不比一般大型??慢, 因此很多人就在想:『那我可否??多?人??透??路串接起?,?好?部?人??同步?作一?程式, 那??程式就能?在很短的????算出?果?!』呵呵!?就是所?的?集式?人?? (PC cluster) 啦!

    要?作 PC cluster 需要很多元件的配合,作?系?也是一?很重要的??!目前?常使用的?然就是 Linux 啦! 不?我?知道 Linux 系?的?作需要用到使用者的相???,例如 UID, GID 等等,所以?, 在 PC cluster ?中的每一部 Linux 的??密?以及『?案系? (filesystem) 』都需要相同才行! ?何?案系?需要相同呢?因?你得要?每部主?都使用到相同的一支程式吧?所以?, ?就需要 NIS ? NFS 的同步配合了!

    由於『??』??玩意?越?越重要,比如??象??、空?品???等等, 而??需要一?很?大的模式??行模?的工作,???大的模?工作需要大量的?算, 在?校?位要?一部很?的大型主??在很不容易!不?,如果能?串接十部?核心的?人??的?, 那?可能只需要不到 20 ?便能??成相?於具有 20 ? CPU 的大型主?的?算能力了! 所以?,在未? PC cluster 是一?可以?展的??喔!

    ?哥也有??一篇不是很成熟的 PC cluster ?易架?,有?趣的??自行?考:

    http://linux.vbird.org/linux_server/0600cluster.php

    --------------------------------------------------------------------------------
    指令???料

    咱?前面?共?到 NIS master server, NIS slave server, NIS client ?三?元件, 偏偏每?元件所需要??的服?以及可使用的指令都不相同, 所以???哥?大家?整一下??常?的指令吧! ^_^

    相?的?作 NIS Master NIS slave NIS client
    所需要??的服? ypserv ypserv
    ypbind ypbind
    使用者能?修改密? yppasswdd   yppasswd
    ypchfn
    ypchsh
    ?料???服? ypxfrd
    yppush ypxfr  
    ?料????取   yptest
    ypwhich
    ypcat yptest
    ypwhich
    ypcat
    ?料?的建立 ypinit -m ypinit -s server  


    --------------------------------------------------------------------------------
    重?回?

    Network Information Service (NIS) 也可以?? Sun Yellow Pages (yp),主要是??在?域?中?忙 NIS Client 端查????密?以及其他相??路??的服?;
    NIS server 其?就是提供本身的 /etc/passwd, /etc/shadow, /etc/group, /etc/hosts 等??密??料,以及相?的?路??等,以提供?域?中 NIS Client 的搜?之用;
    NIS ? server/client 架?,? NIS client 有??登入需求?,?主?? (1)先找自己的 /etc/passwd, (2)再前往 NIS server 搜?相????料。
    NIS 使用的套件就是 yp ??套件,主要分??部份, ypserv 用在 NIS Server,至於 ypbind ? yp-tools ?用在 NIS Client 上面。
    ?加快 NIS 查?的速度,因此 NIS server ??本?的???料?成???快的?料??案, ?放置於 /var/yp/(nisdomainname)/ 目??中;
    不?是 NIS 或者是 NFS 都是藉由 RPC Server 所?用的,因此都可以使用 rpcinfo ?查? NIS 是否已???,以及? daemon 是否已?向 portmapper (RPC server) ??了!
    在 NIS Server 的?定?中,最重要的一?步?就是???、密?、?路??等 ASCII 格式?案?成?料??案 (database file),以提供 NIS client 的查?!而?? ASCII ?成 database 的程式可以使用 /usr/lib/yp/ypinit -m 或者到 /var/yp 底下?行 make 均可。
    NIS client 端的?定?中,最重要的? /etc/nsswitch.conf 及 /etc/sysconfig/authconfig ?面的?定,另外, CentOS 的 /etc/pam.d/system-auth 也很重要!;
    由於 NIS 通常使用於?部?域?中,因此 /etc/hosts ???案的?定相?重要!
    在 NIS master/slave server ?中,建立?料?的方法? ypinit -m 及 ypinit -s;
    在 NIS master/slave server ?中,可以藉由 ypxfrd/ypxfr 以及 yppush ??行主?的更新?料?;
    若想?使用者在任一部 NIS 管?的主?登入都可以使用同一份家目?,?需?? NFS 提供 /home ?所有的主???使用;

  28. baizx 于 2009-08-10 10:43:39发表:

    NFS 伺服器

    本章的行前??工作

    NFS ??藉由?路分享?案系?的服?在架?的?候是很??的,不?,他最大的??在於『?限』方面的概念! 因?在用?端?伺服器端可能必?要具?相同的??才能?存取某些目?或?案。 另外,NFS 的??需要透?所?的?端程序呼叫 (RPC),也就是?,我??不是只要?? NFS 就好了, ?需要?? RPC ??服?才行啊!因此,你必?要?有的基?知?有:

    必?要?解?案系?的?限概念,可以?考 基?篇的 Linux ?案?性?目?配置
    ?解?路基?,防火???? SELinux 模?等等。

    --------------------------------------------------------------------------------
    NFS 的由??其功能

    在?始?行 NFS 的?定之前,我?得先??解一下,什?是 NFS 呢?不然?了一堆也?有用,?吧! ^_^! 底下就??一?什?是 NFS ,且 NFS 的???需要什??的?定啊!


    --------------------------------------------------------------------------------
    什?是 NFS (Network FileSystem)

    NFS 就是 Network FileSystem 的??,最早之前是由 Sun ?家公司所?展出?的。 他最大的功能就是可以透??路,?不同的?器、不同的作?系?、可以彼此分享??的?案 (share files)。所以,您也可以??的?他看做是一??案伺服器 (file server) 呢!?? NFS 伺服器可以?您的 PC ???路?端的 NFS 主?分享的目?,??到本地端的?器?中, 在本地端的?器看起?,那??端主?的目?就好像是自己的一?磁碟分割槽一? (partition)!使用上面相?的便利!



    ?一、NFS 主?分享目?? Client ??示意?

    就如同上面的?示一般,?我?的 NFS Server ?定好了分享出?的 /home/sharefile ??目?後,其他的 NFS Client 端就可以???目???到自己系?上面的某???? (???可以自?),例如前面?示中的 NFS client 1 ? NFS client 2 ??的目?就不相同。我只要在 NFS client 1 系?中?入 /home/data/sharefile ?,就可以看到 NFS Server 系??的 /home/sharefile 目?下的所有?料了 (?然,?限要足?啊!^_^)!?? /home/data/sharefile 就好像 NFS client 1 自己?器?面的一? partition 喔!只要?限?了,那?您可以使用 cp, cd, mv, rm... 等等磁碟或?案相?的指令!真是他X的方便?!

    好的,既然 NFS 是透??路??行?料的??,那??由 socket pair 的概念你?知道 NFS ???使用一些 port 吧?那? NFS 使用哪? port??行??呢?答案是....不知道! @_@ ! 因? NFS 用???的 port 是????小於 1024 以下的埠口?使用的。 咦!那用?端怎?知道你伺服器端使用那? port 啊?此?就得要 ?端程序呼叫 (Remote Procedure Call, RPC) 的?定??助啦!底下我?就???什?是 RPC?



    --------------------------------------------------------------------------------
    什?是 RPC (Remote Procedure Call)

    因? NFS 支援的功能相?的多,而不同的功能都?使用不同的程式???, 每??一?功能就??用一些 port ????料,因此, NFS 的功能所??的 port 才?有固定住, 而是?用??取用一些未被使用的小於 1024 的埠口?作???之用。但如此一?又造成用?端想要?上伺服器?的困?, 因?用?端得要知道伺服器端的相?埠口才能???吧!

    此?我?就得需要?端程序呼叫 (RPC) 的服?啦!RPC 最主要的功能就是在指定每? NFS 功能所??的 port number ,?且回??用?端,?用?端可以??到正?的埠口上去。 那 RPC 又是如何知道每? NFS 的埠口呢??是因??伺服器在?? NFS ????取用??埠口,?主?的向 RPC ??,因此 RPC 可以知道每?埠口??的 NFS 功能,然後 RPC 又是固定使用 port 111 ???用?端的需求?回?用?端正?的埠口, 所以?然可以? NFS 的??更???愉快了!

    Tips:
    所以你要注意,要?? NFS 之前,RPC 就要先??了,否? NFS ??法向 RPC ??。 另外,RPC 若重新???,原本??的?料?不?,因此 RPC 重新??後,他管理的所有程式都需要重新??以重新向 RPC ??。


    ?二、NFS ? RPC 服?及?案系?操作的相?性

    如上?所示,?用?端有 NFS ?案存取需求?,他?如何向伺服器端要求?料呢?

    用?端?向伺服器端的 RPC (port 111) ?出 NFS ?案存取功能的??要求;
    伺服器端找到??的已??的 NFS daemon 埠口後,?回??用?端;
    用?端?解正?的埠口後,就可以直接? NFS daemon ???。
    由於 NFS 的各?功能都必?要向 RPC ???,如此一? RPC 才能?解 NFS ??服?的各?功能之 port number, PID, NFS 在主?所??的 IP 等等,而用?端才能?透? RPC 的??找到正???的埠口。 也就是?,NFS 必?要有 RPC 存在?才能成功的提供服?, 因此我?? NFS ? RPC server 的一?。事?上,有很多??的伺服器都是向 RPC ??的, ?例??,NIS (Network Information Service) 也是 RPC server 的一?呢。 此外,由?二你也?知道,不?是用?端?是伺服器端,要使用 NFS ?,?者都需要?? RPC 才行喔!

    更多的 NFS 相??定??你可以?考底下??:

    http://www.faqs.org/rfcs/rfc1094.html
    http://www.tldp.org/HOWTO/NFS-HOWTO/index.html

    --------------------------------------------------------------------------------
    NFS ??的 RPC daemons

    我??在知道 NFS 伺服器在??的?候就得要向 RPC ??,所以 NFS 伺服器也被?? RPC server 之一。 那? NFS 伺服器主要的任?是?行?案系?的分享,?案系?的分享???限有?。 所以 NFS 伺服器???至少需要?? daemons ,一?管理 client 端是否能?登入的??, 一?管理 client 端能?取得的?限。如果你?想要管理 quota 的?,那? NFS ?得要再?入其他的 RPC 程式就是了。我?以???的 NFS 主???:

    rpc.nfsd:
    ?? daemon 主要的功能就是在管理 Client 是否能?登入主?的?限啦,其中?包含??登入者的 ID 的判?喔!

    rpc.mountd
    ?? daemon 主要的功能,?是在管理 NFS 的?案系?哩!? Client 端?利的通? rpc.nfsd 而登入主?之後,在他可以使用 NFS 伺服器提供的?案之前,?????案使用?限 (就是那? -rwxrwxrwx ? owner, group 那???限啦) 的??程序!他?去? NFS 的?定? /etc/exports ?比? Client 的?限,?通??一?之後 Client 就可以取得使用 NFS ?案的?限啦! (?:??也是我?用?管理 NFS 分享之目?的使用?限?安全?定的地方哩!)

    rpc.lockd (非必要)
    ??玩意?可以用在管理?案的?定 (lock) 用途。?何?案需要『?定』呢? 因?既然分享的 NFS ?案可以?用?端使用,那??多?用?端同????入某??案?, 就可能?於??案造成一些??啦!?? rpc.lockd ?可以用?克服????。 但 rpc.lockd 必?要同?在用?端?伺服器端都??才行喔!此外, rpc.lockd 也常? rpc.statd 同??用。

    rpc.statd (非必要)
    可以用??查?案的一致性,? rpc.lockd 有?!若?生因?用?端同?使用同一?案造成?案可能有所???, rpc.statd 可以用??????回???案。? rpc.lockd 同?的,??功能必?要在伺服器端?用?端都??才?生效。

    --------------------------------------------------------------------------------
    NFS 的?案存取?限

    不知道你有?有想?????,在?一的?境下,假如我在 NFS client 1 上面以 dmtsai ??使用者身份想要去存取 /home/data/sharefile/ ???自 NFS server 所提供的?案系??, ?? NFS server 所提供的?案系???我以什?身份去存取?是 dmtsai ?是?

    ?什?????呢??是因? NFS 本身的服???有?行身份登入的??, 所以?,?你在用?端以 dmtsai 的身份想要存取伺服器端的?案系??, 伺服器端?以用?端的使用者 UID ? GID 等身份????取伺服器端的?案系?。??有?有趣的??就?生啦! 那就是如果用?端?伺服器端的使用者身份?不一致怎???

    我?以底下???示??明一下好了:



    ?三、NFS 的伺服器端?用?端的使用者身份???制

    ?我以 dmtsai ??一般身份使用者要去存取?自伺服器端的?案?,你要先注意到的是: ?案系?的 inode 所??的?性? UID, GID 而非???群?名。 那一般 Linux 主??主?的以自己的 /etc/passwd, /etc/group ?查???的使用者、群?名?。 所以? dmtsai ?入到?目?後,??照 NFS client 1 的使用者?群?名?。 但是由於?目?的?案主要?自 NFS server ,所以可能就?????情?:

    NFS server/NFS client ?好有相同的???群?
    ?此?使用者可以直接以 dmtsai 的身份?行伺服器所提供的?案系?之存取。


    NFS server 的 501 ?? UID ????? vbird
    若 NFS 伺服器上的 /etc/passwd ?面 UID 501 的使用者名?? vbird ?, ?用?端的 dmtsai 可以存取伺服器端的 vbird ??使用者的?案喔!只因??者具有相同的 UID 而已。?就造成很大的??了!因??有人可以保?用?端的 UID 所??的????伺服器端相同, 那伺服器所提供的?料不就可能?被??的使用者?改?


    NFS server ??有 501 ?? UID
    另一??端的情?是,在伺服器端??有 501 ?? UID 的存在,?此? dmtsai 的身份在?目?下?被??成匿名者, 一般 NFS 的匿名者?以 UID ? 65534 ?其使用者,早期的 Linux distributions ?? 65534 的??名?通常是 nobody ,我?的 CentOS ?取名? nfsnobody 。


    如果使用者身份是 root ?
    有?比?特殊的使用者,那就是每? Linux 主?都有的 UID ? 0 的 root 。 想一想,如果用?端可以用 root 的身份去存取伺服器端的?案系??,那伺服器端的?料哪有什?保?性? 所以在??的情?下, root 的身份?被主?的??成?匿名者。
    ?之,用?端使用者能做的事情是? UID 及其 GID 有?的,那?用?端?伺服器端的 UID 及??的??不一致?, 可能就?造成?案系?使用上的困?,??就是 NFS ?案系?在使用上面的一?很重要的地方! 而在?解使用者??? UID 及?案系?的??之後,要??在用?端以 NFS 取用伺服器端的?案系??, 你?得需要具有:

    NFS 伺服器有?放可?入的?限 (? /etc/exports ?定有?);
    ??的?案?限具有可?入 (w) 的?限。
    ?你?足了 (1)使用者??,亦即 UID 的相?身份; (2)NFS 伺服器允?有?入的?限; (3)?案系???具有 w 的?限?,你才具有??案的可?入?限喔! 尤其是身份 (UID) ??的??部分,最容易搞?啦!也因?如此, 所以 NFS 通常需要? NIS ?一?可以??用?端?伺服器端身份一致的服?搭配使用,以避免身份的??啊! ^_^


    --------------------------------------------------------------------------------
    NFS Server 端的?定

    既然要使用 NFS 的?,就得要安? NFS 所需要的套件了!底下?我?查?一下系?有?安?所需要的套件, NFS 套件的架?以及如何?定 NFS 主?吧! ^_^


    --------------------------------------------------------------------------------
    所需要的套件

    以 CentOS 4.x ?例的?,要?定好 NFS 伺服器我?必?要有??套件才行,分?是:

    NFS 主程式:nfs-utils
    RPC 主程式:portmap
    portmap

    就如同??提的到,我?的 NFS 其?可以被??一? RPC 程式,而要??任何一? RPC 程式之前,我?都需要做好 port 的?? (mapping) 的工作才行,??工作其?就是『 portmap 』??服?所??的!也就是?, 在??任何一? RPC server 之前,我?都需要?? portmap 才行!


    nfs-utils

    就是提供 rpc.nfsd 及 rpc.mountd ??? NFS daemons ?其他相? documents ??明文件、?行?等的套件!??就是 NFS 的主要套件啦!一定要有喔!


    好了,知道我?需要???套件之後,?在?嘛??快去您的系?先用 RPM 看一下有?有???套件啦! ?有的??快用 RPM 或 yum 去安?喔!不然就玩不下去了!

    例?:
    ??我的主?是以 RPM ?套件管理的 Linux distribution ,例如 Red Hat, CentOS ? SuSE 等版本,那?我要如何知道我的主??面是否已?安?了 portmap ? nfs 相?的套件呢?
    答:
    ??的使用 rpm -qa | grep nfs ? rpm -qa | grep portmap 即可知道啦!如果?有安?的?,在 CentOS ?可以使用『 yum install nfs-utils 』?安?!



    --------------------------------------------------------------------------------
    NFS 的套件??

    NFS ??咚咚真的是很??,上面我?提到的 NFS 套件中,?定?只有一?,?行?也不多, ???也三三??而已?!??先?看一看吧! ^_^

    /etc/exports
    ???案就是 NFS 的主要?定?了!不?,系???有??值,所以???案『 不一定?存在』,您可能必?要使用 vi 主?的建立起???案喔!我?等一下要?的?定也?只是???案而已?!

    /usr/sbin/exportfs
    ??是?? NFS 分享?源的指令,我?可以利用??指令重新分享 /etc/exports ?更的目??源、? NFS Server 分享的目?卸?或重新分享等等,??指令是 NFS 系??面相?重要的一?喔!至於指令的用法我?在底下?再介?。

    /usr/sbin/showmount
    ?是另一?重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount ?主要用在 Client 端。?? showmount 可以用?察看 NFS 分享出?的目??源喔!

    /var/lib/nfs/*tab
    在 NFS 伺服器的登??都放置到 /var/lib/nfs/ 目??面,在?目?下有??比?重要的登??, 一?是 etab ,主要??了 NFS 所分享出?的目?的完整?限?定值;另一? xtab ???曾???到此 NFS 主?的相?用?端?料。
    就?不?吧!主要就是????!



    --------------------------------------------------------------------------------
    /etc/exports ?定?的?法???

    在?始 NFS 伺服器的?定之前,您必?要?解的是,NFS ?直接使用到核心功能,所以你的核心必?要有支援 NFS 才行。 ?一如果你的核心版本小於 2.2 版,或者重新自行???核心的?,那?就得要很注意啦! 因?你可能?忘??? NFS 的核心支援啊!

    ?好,我? CentOS 或者是其他版本的 Linux ,??核心通常是支援 NFS 功能的, 所以你只要??你的核心版本是目前新的 2.6.x 版,?且使用你的 distribution 所提供的核心, 那??就不?有??啦!

    至於 NFS 伺服器的架??在很??,你只要??好主要?定? /etc/exports 之後, 先?? portmap ,然後再?? nfs ,你的 NFS 就成功了! 不???的?定能否?用?端生效?那就得要考?你?限方面的?定能力了。 ??少?,我?就直接?看看那? /etc/exports ??如何?定吧! 某些 distributions ?不?主?提供 /etc/exports ?案,所以?您自行手?建立他吧。
    [root@linux ~]# vi /etc/exports
    /tmp 192.168.1.0/24(ro) localhost(rw) *.ev.ncku.edu.tw(ro,sync)
    # [分享目?] [第一部主?(?限)] [可用主?名] [可用?用字元]


    您看看,???定?有???吧!每一行最前面是要分享出?的目?,注意喔!是以目???位啊! 然後??目?可以依照不同的?限分享?不同的主?,像?哥上面的例子?明是: 要? /tmp 分?分享?三?不同的主?或?域的意思。?得主?後面以小括? () ???限??, 若?限??不止一??,?以逗? (,) 分?。且主?名?小括?是?在一起的喔! 在???案?也可以利用 # ??解呢。

    至於主?名?的?定主要有??方式:

    可以使用完整的 IP 或者是?域,例如 192.168.1.10 或 192.168.1.0/24 ,或 192.168.1.0/255.255.255.0 都可以接受!


    可以使用主?名?,??主?名?要在 /etc/hosts ?或使用 DNS 可以被找到才行啊!重?是可找到 IP 就是了。如果是主?名?的?,那?他可以支援?用字元,例如 * 或 ? 均可接受。
    至於?限方面 (就是小括??的??) 常?的???有:

    rw:read-write,可??的?限;


    ro:read-only,唯?的?限;


    sync:?料同步?入到????硬碟?中;


    async:?料?先?存於????中,而非直接?入硬碟!


    no_root_squash:
    登入 NFS 主?使用分享目?的使用者,如果是 root 的?,那??於??分享的目???,他就具有 root 的?限! ???目『?不安全』,不建?使用!


    root_squash:
    在登入 NFS 主?使用分享之目?的使用者如果是 root ?,那???使用者的?限?被??成?匿名使用者,通常他的 UID ? GID 都??成 nobody(nfsnobody) 那?系???的身份;


    all_squash:
    不?登入 NFS 的使用者身份?何, 他的身份都?被??成?匿名使用者,通常也就是 nobody(nfsnobody) 啦!


    anonuid:
    anon 意指 anonymous (匿名者) 前面?於 *_squash 提到的匿名使用者的 UID ?定值,通常? nobody(nfsnobody),但是您可以自行?定?? UID 的值!?然,?? UID 必需要存在於您的 /etc/passwd ?中!


    anongid:同 anonuid ,但是?成 group ID 就是了!
    ?是??比?常?的?限??,如果你有?趣玩其他的???,?自行 man exports 可以??很多有趣的?料。 接下?我?利用上述的???????思考一下??有趣的小??:


    思考一:? root 保有 root 的?限

    我想? /tmp 分享出去?大家使用,由於??目?本?就是大家都可以??的,因此想?所有的人都可以存取。 此外,我要? root ?入的?案?是具有 root 的?限,那如何???定??
    [root@linux ~]# vi /etc/exports
    # 任何人都可以用我的 /tmp ,用?用字元??理主?名?,重?在 no_root_squash
    /tmp *(rw,no_root_squash)


    ?考前面的主?名??定?明,我?可以利用?用字元的。?表示???自哪?都可以使用我的 /tmp ??目?。 再次提醒,『 *(rw,no_root_squash) 』?一串?定值中?是?有空白字元的喔!而 /tmp ? *(rw,no_root_squash) ?是有空白字元?隔?的!特?注意到那? no_root_squash 的功能!在??例子中,如果你是用?端,而且您是以 root 的身份登入您的 Linux 主?,那??您 mount 上我?部主?的 /tmp 之後,您在? mount 的目??中,?具有『root 的?限!』


    思考二:同一目???不同???放不同?限

    我要?一?公共的目? /home/public 公?出去,但是只有限定我的?域?路? 192.168.0.0/24 ???域可以??,其他人?只能?取:
    [root@linux ~]# vi /etc/exports
    /tmp *(rw,no_root_squash)
    /home/public 192.168.0.0/24(rw) *(ro)
    # ??累加在後面,注意,我有?主???域分??段 (用空白隔?) 喔!


    上面的例子?的是,?我的 IP 是在 192.168.0.0/24 ???段的?候,那??我在 Client 端??了 Server 端的 /home/public 後,????被我??的目?我就具有可以??的?限~ 至於如果我不是在???段之?,那???目?的?料我就?能?取而已,亦即?唯?的?性啦!

    需要注意的是,之前?哥?主?名?的?用字元? IP ?段搞?了! ?用字元?能用在主?名?的分辨上面,IP 或?段就只能用 192.168.0.0/24 的??, 不可以使用 192.168.0.* 喔!


    思考三:??某??一主?使用的目??定

    我要?一?私人的目? /home/test ?放? 192.168.0.100 ?? Client 端的?器?使用,那?我就必需???:
    [root@linux ~]# vi /etc/exports
    /tmp *(rw,no_root_squash)
    /home/public 192.168.0.0/24(rw) *(ro)
    /home/test 192.168.0.100(rw)
    # 只要?定 IP 正?即可!


    ??就?定完成了!而且,只有 192.168.0.100 ?部?器才能? /home/test ??目??行存取喔!


    思考四:?放匿名登入的情?

    我要? *.linux.org ?域的主?,登入我的 NFS 主??,可以存取 /home/linux ,但是他?存?料的?候,我希望他?的 UID ? GID 都?成 40 ??身份的使用者, 假?我 NFS 伺服器上的 UID 40 已?有?定妥?:
    [root@linux ~]# vi /etc/exports
    /tmp *(rw,no_root_squash)
    /home/public 192.168.0.0/24(rw) *(ro)
    /home/test 192.168.0.100(rw)
    /home/linux *.linux.org(rw,all_squash,anonuid=40,anongid=40)
    # 如果要?放匿名,那?重?是 all_squash,?且要配合 anonuid 喔!


    特?注意到那? all_squash ? anonuid, anongid 的功能!如此一?,? test.linux.org 登入?部 NFS 主?,?且在 /home/linux ?入?案?,??案的所有人?所有群?,就??成 /etc/passwd ?面??的 UID ? 40 的那?身份的使用者了!


    上面四?案例的?限如果依照前一小?的存取?定?限?思考的?, 那??限?是什?情?呢??我???查一下:


    用?端?主?端具有相同的 UID ???:

    假?我在 192.168.0.100 登入?部 NFS (IP 假?? 192.168.0.2) 主?,?且我在 192.168.0.100 的??? dmtsai ??身份,同?,在?部 NFS 上面也有 dmtsai ????, ?具有相同的 UID ,果真如此的?,那?:

    由於 192.168.0.2 ?部 NFS 主?的 /tmp ?限? -rwxrwxrwt ,所以我 (dmtsai 在 192.168.0.100 上面) 在 /tmp 底下具有存取的?限,?且?入的?案所有人? dmtsai ;
    在 /home/public ?中,由於我有??的?限,所以如果在 /home/public ??目?的?限?於 dmtsai 有?放?入的?,那?我就可以??,?且我?入的?案所有人是 dmtsai 。但是?一 /home/public ?於 dmtsai ??使用者??有?放可以?入的?限?, 那?我?是?有?法?入?案喔!???特?留意!
    在 /home/test ?中,我的?限? /home/public 相同的??!?需要 NFS 主?的 /home/test ?於 dmtsai 有?放?限;
    在 /home/linux ?中就比?麻?!因?不?您是何? user ,您的身份一定?被?成 UID=40 ????!所以,??目?就必需要?? UID = 40 的那???名?,修改他的?限才行!
    用?端?主?端的???未相同?:

    假如我在 192.168.0.100 的身份? vbird ,但是 192.168.0.2 ?部 NFS 主???有 vbird ?????,情???成怎?呢?

    我在 /tmp 底下?是可以?入,但是?入的?案所有人?成 nobody 了;
    我在 /home/public ?面是否可以?入,?需要? /home/public 的?限而定,不?,反正我的身份就被?成 nobody 了就是;
    /home/test 的??? /home/public 相同!
    /home/linux 底下,我的身份就被?成 UID = 40 那?使用者就是了!
    ?用?端的身份? root ?:

    假如我在 192.168.0.100 的身份? root 呢? root ????每?系?都?有呀!?限?成怎?呢?

    我在 /tmp ?面可以?入,?且由於 no_root_squash 的??,改?了??的 root_squash ?定值,所以在 /tmp ?入的?案所有人? root 喔!
    我在 /home/public 底下的身份?是被??成? nobody 了!因????性?面都具有 root_squash 呢!所以,如果 /home/public 有?? nobody ?放?入?限?,那?我就可以?入,但是?案所有人?成 nobody 就是了!
    /home/test ? /home/public 相同;
    /home/linux 的情?中,我 root 的身份也被??成? UID = 40 的那?使用者了!
    ??的?限?解之後,您可以?解了????是最重要的地方,如果?一?通?了,底下的咚咚就?有??啦! ^_^! ?然啦,您?是得要回到前一小?NFS 的?案存取?限好好的瞧一瞧, 才能解? NFS 的??喔!


    --------------------------------------------------------------------------------
    ?? NFS

    ?定?搞定後,?然要?始???才行啊!而前面我?也提到?,NFS 的???需要 portmap 的?助才行啊! 所以?????吧!
    [root@linux ~]# /etc/init.d/portmap start
    # 如果 portmap 本?就已?在?行了,那就不需要??啊!

    [root@linux ~]# /etc/init.d/nfs start
    # 有?候可能?出?如下的警告?息:
    exportfs: /etc/exports [3]: No 'sync' or 'async' option specified
    for export "192.168.0.100:/home/test".
    Assuming default behaviour ('sync').
    # 上面的警告?息?是在告知因?我??有指定 sync 或 async 的??,
    # ? NFS ????使用 sync 的??而已。?可以不理他,也可以加入 /etc/exports。

    [root@linux ~]# vi /etc/exports
    /tmp *(rw,no_root_squash,sync)
    /home/public 192.168.0.0/24(rw,sync) *(ro,sync)
    /home/test 192.168.0.100(rw,sync)
    /home/linux *.linux.org(rw,all_squash,anonuid=40,anongid=40,sync)

    [root@linux ~]# /etc/init.d/nfs restart


    那? portmap 根本就不需要?定!只要直接??他就可以啦!??之後,?出?一? port 111 的 sunrpc 的服?,那就是 portmap 啦!至於 nfs ????至少??以上的 daemon 出?!然後就?始在?? Client 端的需求啦!你必?要很注意?幕上面的?出??, 因?如果?定???的?,?幕上??示出??的地方喔!

    此外,如果?想要增加一些 NFS 伺服器的?料一致性功能?,可能需要用到 rpc.lockd 及 rpc.statd 等 RPC 服?, 那?或??可以增加一?服?,那就是 nfslock
    [root@linux ~]# /etc/init.d/nfslock start


    ??之後,??快到 /var/log/messages ?面看看有?有被正?的??呢?
    [root@linux ~]# vi /var/log/messages
    Sep 22 00:01:37 linux nfs: Starting NFS services: succeeded
    Sep 22 00:01:37 linux nfs: rpc.rquotad startup succeeded
    Sep 22 00:01:37 linux nfsd[1050]: nfssvc_versbits: +2 +3 +4
    Sep 22 00:01:37 linux nfs: rpc.nfsd startup succeeded
    Sep 22 00:01:37 linux nfs: rpc.mountd startup succeeded
    Sep 22 00:01:37 linux rpcidmapd: rpc.idmapd -SIGHUP succeeded


    在???有??之後,接下?我??瞧一瞧那? NFS 到底?了哪些埠口?
    [root@linux ~]# netstat -ultn
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
    tcp 0 0 0.0.0.0:803 0.0.0.0:* LISTEN 1047/rpc.rquotad
    tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 32503/portmap
    tcp 0 0 0.0.0.0:819 0.0.0.0:* LISTEN 1064/rpc.mountd
    udp 0 0 0.0.0.0:2049 0.0.0.0:* -
    udp 0 0 0.0.0.0:800 0.0.0.0:* 1047/rpc.rquotad
    udp 0 0 0.0.0.0:816 0.0.0.0:* 1064/rpc.mountd
    udp 0 0 0.0.0.0:111 0.0.0.0:* 32503/portmap


    注意看到上面喔!?共?生了好多的 port 喔!真是可怕!不?主要的埠口是:

    portmap ??的 port 在 111;
    NFS ??的 port 在 2049;
    其他 rpc.daemons ??的 port ?是???生的,因此需向 port 111 ??。
    好了,那我怎?知道每? RPC 服?的????????,?可以使用 rpcinfo ??理的。
    [root@linux ~]# rpcinfo [-p] [IP|hostname]
    ??:
    -p :?示出所有的 port ? porgram 的??;

    ?例一:?示出目前?部主?的 RPC ??
    [root@linux ~]# rpcinfo -p localhost
    program vers proto port
    100000 2 tcp 111 portmapper
    100000 2 udp 111 portmapper
    100011 1 udp 800 rquotad
    100011 2 udp 800 rquotad
    100011 1 tcp 803 rquotad
    100011 2 tcp 803 rquotad
    100003 2 udp 2049 nfs
    100003 3 udp 2049 nfs
    100003 2 tcp 2049 nfs
    100003 3 tcp 2049 nfs
    100005 1 udp 816 mountd
    100005 1 tcp 819 mountd
    100005 2 udp 816 mountd
    100005 2 tcp 819 mountd
    100005 3 udp 816 mountd
    100005 3 tcp 819 mountd
    # NFS版本 埠口 服?名?


    仔?瞧瞧,上面出?的???中除了程式名??埠口的??可以? netstat -tlunp ?出的?果作比?之外,?需要注意到 NFS 的版本支援!新的 NFS 版本??速度?快, 由上表看起?,我?的 NFS 至少支援到第 3 版,???算合理啦! ^_^! 如果?的 rpcinfo ?法?出,那就表示??的?料有??啦!可能需要重新?? portmap ? nfs 喔!



    --------------------------------------------------------------------------------
    NFS 的???察

    在?的 NFS 伺服器?定妥?之後,我?可以先自我??一下是否可以??喔! 就是利用 showmount ??指令?查?!
    [root@linux ~]# showmount [-ae] [hostname|IP]
    ??:
    -a :?示目前主??用?端的 NFS ??分享的??;
    -e :?示某部主?的 /etc/exports 所分享的目??料。

    ?例一:??示出??我?所?定好的相? exports ??
    [root@linux ~]# showmount -e localhost
    Export list for localhost:
    /tmp *
    /home/linux *.linux.org
    /home/public (everyone)
    /home/test 192.168.0.100


    很??吧!所以,?您要?瞄某一部主?他提供的 NFS 分享的目??,就使用 showmount -e IP (或hostname) 即可!非常的方便吧!?也是 NFS client 端最常用的指令喔!

    事?上 NFS ?於目??限?定的?料非常之多!我?可以?查一下 /var/lib/nfs/etab 就知道了!
    [root@linux ~]# tail /var/lib/nfs/etab
    /home/public *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,
    subtree_check,secure_locks,mapping=identity,anonuid=-2,anongid=-2)
    # 上面是同一行,可以看出除了 ro, sync, root_squash 等等,
    # 其??有 anonuid 及 anongid 等等的?定!

    /tmp *(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,subtr
    ee_check,secure_locks,mapping=identity,anonuid=-2,anongid=-2)
    # 同?的,在 /tmp 也有很多的?限相?的??喔!


    上面??是一?小?例,只是....怎? anonuid ?是 -2 啊? 其?那??值是 65536-2 啦!所以得到 65534 ,比? /etc/passwd , ??? CentOS 出?的是 nfsnobody 啦!????在不同的版本都可能?不一?的! 另外,如果有其他用?端??了?的 NFS ?案系??, 那??用?端??案系???就?被??到 /var/lib/nfs/xtab ??去的!

    另外,如果?想要重新?理 /etc/exports ?案,?重新?定完 /etc/exports 後需不需要重新?? nfs ? 不需要啦!如果重新?? nfs 的?,要得要向 RPC ??!很麻?~ ???候我?可以透? exportfs ??指令??忙喔!
    [root@linux ~]# exportfs [-aruv]
    ??:
    -a :全部??(或卸?) /etc/exports ?案?的?定
    -r :重新?? /etc/exports ?面的?定,此外,亦同步更新 /etc/exports
    及 /var/lib/nfs/xtab 的?容!
    -u :卸?某一目?
    -v :在 export 的?候,?分享的目??示到?幕上!

    ?例一:重新??一次 /etc/exports 的?定
    [root@linux ~]# exportfs -arv
    exporting 192.168.0.100:/home/test
    exporting 192.168.0.0/24:/home/public
    exporting *.linux.org:/home/linux
    exporting *:/home/public
    exporting *:/tmp

    ?例二:全部都卸?
    [root@linux ~]# exportfs -auv


    要熟悉一下??指令的用法喔!??一?,就可以直接重新 exportfs 我?的??在 /etc/exports 的目??料?!



    --------------------------------------------------------------------------------
    NFS 的安全性

    在 NFS 的安全性上面,有些地方是你必?要知道的喔!底下我?分???一?:


    利用 iptables 做大????的限制:

    假?我?的 NFS 主要是???部?路?放而已,而?於外部?路只有?成大的???路?放,亦即是 140.116.0.0/16 ,那??可以在?哥於防火?? NAT 那?章?提供的 iptables.allow ?增加如下的?法:
    [root@linux ~]# vi /usr/local/virus/iptables/iptables.allow
    iptables -A INPUT -i $EXTIF -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT
    iptables -A INPUT -i $EXTIF -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT
    iptables -A INPUT -i $EXTIF -p TCP -s 140.116.0.0/16 --dport 111 -j ACCEPT
    iptables -A INPUT -i $EXTIF -p UDP -s 140.116.0.0/16 --dport 111 -j ACCEPT


    ??大致上就可以? 192.168.0.0/24 ?? C Class 的?域? 140.116.0.0/16 ?? B Class 的?域到您的主??面?,而其他的??就?您的原本的 iptables 的??而定喔!

    那?什?是限制 port 111 而不是每? RPC server 所??的埠口呢? 因? RPC server 所??的埠口都是???生的,要?他?放?在是... 而且用?端想要?上 NFS 伺服器之前,都是透? port 111 ?向 NFS 伺服器????的埠口的, 所以?然先就 port 111 ??行限制?!^_^


    利用 TCP Wrappers 限制

    但是不同的 RPC ?竟提供的服?不一?,如果?想要??某些服??抵?的?, 那可以透? TCP Wrappers ??根? program name ?抵??路封包的咚咚?! ??得我???使用? rpcinfo ??指令吧? 不是??出很多的 RPC program name ????!?可以??做:
    [root@linux ~]# vi /etc/hosts.allow
    # ??自 140.116.44.0/255.255.255.0 的主?可以使用 mountd
    mountd: 140.116.44.0/255.255.255.0

    [root@linux ~]# vi /etc/hosts.deny
    # ?所有人都不能使用 mountd
    mountd: ALL


    ?什?使用的是 mountd 呢?去到前一小?的 rpcinfo 指令?瞧一瞧, ?就?知道?何需要使用到 mountd ?!^_^


    使用 /etc/exports ?定更安全的?限

    ?就?涉到您的??思考了!怎??定都?有??,但是在『便利』?『安全』之?,要找到您的平衡??!善用 root_squash 及 all_squash 等功能,再利用 anonuid 等等的?定???登入您主?的使用者身份!???是有?法提供一???安全的 NFS 主?的!

    另外,?然啦,?的 NFS 伺服器的?案系?之?限?定也需要很留意! 不要?便?定成? -rwxrwxrwx ,???造成你的系?『很大的困?』的啊!


    更安全的 partition ??:

    如果您的工作?境中,具有多部的 Linux 主?,?且??彼此分享出目??,那?在安? Linux 的?候,最好就可以??出一? partition 作??留之用。因?『 NFS 可以??目??分享』,因此,您可以??留的 partition ??在任何一????,再????? (就是目?啦!)由 /etc/exports 的?定中分享出去,那?整?工作?境中的其他 Linux 主?就可以使用? NFS 主?的那??留的 partition 了!所以,在主?的??上面,主要需要留意的只有 partition 而已。此外,由於分享的 partition 可能?容易被入侵,最好可以??? partition ?定比??格的??在 /etc/fstab ?中喔!


    NFS 伺服器??前的注意事?:

    需要注意的是,由於 NFS 使用的?? RPC 在 client 端?上伺服器?,那?您的伺服器想要??, 那可就?成?『不可能的任?』!如果您的 Server 上面?有 Client 在??,那?您要??, 可能得要等到????才能?正常的??成功!嗄!真的假的!不相信??不然您自????看!^_^!

    所以?,建?您的 NFS Server 想要??之前,能先『?掉 portmap ? nfs 』????西! 如果?法正?的???? daemons ?掉,那?先以 netstat -utlp 找出 PID ,然後以 kill ?他?掉先!??才有?法正常的??成功喔!???特?特?的注意呢!

    ?然啦,?也可以利用 showmount -a localhost ?查出?那?用?端?在??? 或者是查? /var/lib/nfs/rmtab 或 xtab 等?案??查亦可。找到?些用?端後, 可以直接 call 他?啊!?他?能???忙先! ^_^

    事?上,用?端以 NFS ??到伺服器端?,如果他?可以下?一些比?不那?『硬』的?????, 就能??少?方面的??喔!相?的安全性可以?考下一小?的 用?端可?理的?????????。

    --------------------------------------------------------------------------------
    NFS 用?端的?定

    既然 NFS 伺服器最主要的工作就是分享?案系???路上其他的用?端,所以用?端?然得要????玩意??! 此外,主?端可以加?防火??保?自己的?案系?,那?用?端????案系?後,?道不需要保?自己? 呵呵!所以底下我?要??一??? NFS 用?端的??。


    --------------------------------------------------------------------------------
    ?端 NFS 伺服器的??

    你要如何?? NFS 伺服器所提供的?案系?呢?基本上,可以??做:

    ??本地端已???了 portmap 服?!
    ?瞄 NFS 伺服器分享的目?有哪些,??解我?是否可以使用 (showmount);
    在本地端建立??要??的???目? (mkdir);
    利用 mount ??端主?直接??到相?目?。
    好,?在假?用?端在 192.168.0.100 ?部?器上,而伺服器是 192.168.0.2 , 那?????查一下我?是否已?有 portmap 的??,另外?端主?有什?可用的目?呢!
    [root@linux ~]# /etc/init.d/portmap start
    [root@linux ~]# /etc/init.d/nfslock start
    # 一般??,系?????? portmap ,不??哥之前???,所以要??。
    # 另外,如果伺服器端有?? nfslock 的?,用?端也要??才能生效!

    [root@linux ~]# showmount -e 192.168.0.2
    Export list for 192.168.0.2:
    /tmp *
    /home/linux *.linux.org
    /home/public (everyone) <==?是等一下我?要??的目?
    /home/test 192.168.0.100


    接下?我想要??端主?的 /home/public ??到本地端主?的 /home/nfs/public , 所以我就得要在本地端主?先建立起?????目?才行啊!然後就可以用 mount ??指令直接?? NFS 的?案系??!
    [root@linux ~]# mkdir -p /home/nfs/public

    [root@linux ~]# mount -t nfs 192.168.0.2:/home/public /home/nfs/public
    # 注意一下??的?法!『 -t nfs 』指定?案系??型,
    # IP:/dir ?是指定某一部主?的某?提供的目?!

    [root@linux ~]# df
    Filesystem 1K-blocks Used Available Use% Mounted on
    ....中?省略....
    192.168.0.2:/home/public
    10080512 2135072 7433344 23% /home/nfs/public


    先注意一下?? NFS ?案的格式?例喔!呵呵!??就可以??料????啦!?注意喔! 以後,只要您?入您的目? /home/nfs/public 就等於到了 192.168.0.2 那部?端主?的 /home/public 那?目?中?!很不?吧!至於你在?目?下有什??限? 那就?您回去前一小?查一查?限的思考吧! ^_^ !那?如何???的 NFS 目?卸?呢?就使用 umount 啊!
    [root@linux ~]# umount /home/nfs/public




    --------------------------------------------------------------------------------
    用?端可?理的?????????

    瞧!用?端的??工作很??吧!不?不?得你有?有想?,如果你????到本? /home/nfs/public 的?案系??中,含有一支 script ,且?支 script 的?容?『 rm -rf / 』且??案?限? 555 , 夭?~如果你因?好奇?他?行下去,可有的你受的了~因?整?系?都?被?光光!真可?!

    所以?,除了 NFS 伺服器需要保?之外,我?取用人家的 NFS ?案系?也需要自我保?才行啊! 那要如何自我保?啊?可以透? mount 的指令??喔!包括底下?些主要的??可以??加入:

    ?? ??代表意? 系???值
    suid
    nosuid ?得啥是 SUID 吧?如果??的 partition 上面有任何 SUID 的 binary 程式?, 你只要使用 nosuid 就能?取消 SUID 的功能了!嗄?不知道什?是 SUID ?那就不要?人家架站嘛!@_@! ??回去基???篇??一下程序??源管理啦! suid
    rw
    ro 你可以指定? partition 是唯? (ro) 或可??喔! rw
    dev
    nodev 是否可以保留?置?案的特殊功能?一般??只有 /dev 才?有特殊的?置,因此你可以?? nodev 喔! dev
    exec
    noexec 是否具有?行 binary file 的?限? 如果你想要??的?是?料? (例如 /home),那?可以?? noexec 啊! exec
    user
    nouser 是否允?使用者?行?案的???卸?功能? 如果要保??案系?,最好不要提供使用者?行???卸?吧! nouser
    auto
    noauto ?? auto 指的是『mount -a』?,?不?被??的?目。 如果你不需要?? partition ??被??,可以?定? noauto。 auto

    一般??,如果你的 NFS 伺服器所提供的只是?似 /home 底下的?人?料, ??不需要可?行、SUID ??置?案,因此?你在??的?候,可以??下?指令喔:
    [root@linux ~]# mount -t nfs -o nosuid,noexec,nodev,rw \
    > 192.168.0.2:/home/public /home/nfs/public

    [root@linux ~]# mount
    192.168.0.2:/home/public on /home/nfs/public type nfs
    (rw,noexec,nosuid,nodev,addr=192.168.0.2)


    ??一?你所??的???案系?就只能作??料存取之用,相???,?於用?端是比?安全一些的。 所以?,?? nosuid, noexec, nodev 等等的??可得?得啊!


    ?於 NFS 特殊的????

    除了上述的 mount ??之外,其??? NFS 伺服器,咱?的 Linux ?提供不少有用的?外??喔! 因? NFS 使用的是 RPC 服?,?? RPC 必?要用?端?伺服器端?者都有?? RPC 才能?作。 在一般的模式底下,你想要在用?端??伺服器端的 NFS ?案系??,一次指令只能??一次, 如果?次??由於某些?? (例如伺服器未??、RPC忘??等等) ?致?法?利???, 你只能等到??逾? (time out) 後,才能???工作。

    另外,?建立??後,RPC ?不?的在用?端?伺服器?者之??行呼叫, 此?如果有一部主?失去??,那? RPC ??持?不?的呼叫,直到伺服器或用?端恢????止。 此一行???致 RPC 服?出?延???, ?果常常就造成你在?行 df 或者是 mount 等指令?,出?『等等等等』的情?~ ?....真是要命!

    ?了避免?些困?,我??有一些?外的 NFS ????可用!例如:

    ?? ??功能 ????
    fg
    bg ??行???,???的行??在前景 (fg) ?是在背景 (bg) ?行? 若在前景?行?,? mount ?持?????,直到成功或 time out ?止,若?背景?行, ? mount ?在背景持?多次?行 mount ,而不?影?到前景的程序操作。 如果你的?路??有?不?定,或是伺服器常常需要???,那建?使用 bg 比?妥?。 fg
    soft
    hard 上?不是?到????使用 RPC 呼叫?? 如果是 hard 的情?,???者之?有任何一部主???,? RPC ?持?的呼叫,直到?方恢????止。 如果是 soft 的?,那 RPC ?在 time out 後『重?』呼叫,而非『持?』呼叫, 因此系?的延??比?不??明?。同上,如果你的伺服器可能????,建?用 soft 喔! hard
    intr ?你使用上?提到的 hard 方式???,若加上 intr ????, ?? RPC 持?呼叫中,?次的呼叫是可以被中?的 (interrupted)。 ?有
    rsize
    wsize ?出(rsize)??入(wsize)的??大小 (block size)。 ???定值可以影?用?端?伺服器端???料的????容量。一般??, 如果在?域?路? (LAN) ,?且用?端?伺服器端都具有足?的???,那??值可以?定大一?, 比如? 32768 (bytes) 等,提升???????可提升 NFS ?案系?的??能力! 但要注意?定的值也不要太大,最好是?到?路能???的最大值?限。 rsize=1024
    wsize=1024

    更多的??可以?考 man nfs 的?出?料喔! 通常如果你的 NFS 是用在高速?作的?境?中的?,那?可以建?加上?些??的?:
    [root@linux ~]# mount -t nfs -o nosuid,noexec,nodev,rw \
    > bg,soft,rsize=32768,wsize=32768 \
    > 192.168.0.2:/home/public /home/nfs/public


    ??你的 192.168.0.2 ?部伺服器因?某些因素而???,你的 NFS 可以??在背景?中重?的呼叫! 直到 NFS 伺服器再度上??止。??於系?的持?操作?是有?助的啦! ?然啦,那? rsize ? wsize 的大小?需要依?你的???路?境而定喔!


    ? NFS ??即??

    要? NFS 在??的?候就??,?如何是好?就修改 /etc/fstab 即可啊! ????不用多?吧!你??要?解的!?例??,像上述的??方式的?,你就得要??做:
    [root@linux ~]# vi /etc/fstab
    192.168.0.2:/home/public /home/nfs/public nfs nosuid,noexec,nodev,rw,
    bg,soft,rsize=32768,wsize=32768 0 0
    # 注意!上面的?定是同一行喔!不要搞??! ^_^




    --------------------------------------------------------------------------------
    ?法??的原因分析

    如果用?端就是?法??伺服器端所分享的目??,到底是?生什????你可以??分析看看:

    使用者或用?端身份?限不符:
    以上面的例子??明,我的 /home/test 只能提供 192.168.0.0/24 ???域,所以如果我在 192.168.0.2 ?部伺服器中,以 localhost (127.0.0.1) ????,就??法??上,???限概念???吧! 那?您可以??看:
    [root@linux ~]# mount -t nfs localhost:/home/test /home/nfs
    mount: localhost:/home/test failed, reason given by server: Permission denied


    看到 Permission denied 了吧???啦~?限不符啦!如果?定您的 IP ?有??,那??通知伺服器端, ?管理??你的 IP 加入 /etc/exports ???案中。


    伺服器或用?端某些服?未??:
    ??最容易被忘?了!就是忘?了?? portmap ??服?啦!如果您??您的 mount 的?息是??:
    [root@linux ~]# mount -t nfs localhost:/home/test /home/nfs
    mount: RPC: Port mapper failure - RPC: Unable to receive

    [root@linux ~]# mount -t nfs localhost:/home/test /home/nfs
    mount: RPC: Program not registered


    要嘛就是 portmap 忘??,要嘛就是伺服器端的 nfs 忘??!解?的方法就是去?????咚咚啦!


    被防火??掉了:
    ??也很容易忘?了!那就是重新?定一下您的防火?,?包含了?部份,包括 iptables ? TCP_Wrappers !因?我???了 portmap ,???西有???料需要分享出?,一?是 port 111 需要提供出去,因此您的 iptables ???中,需要?放?? port 喔!

    --------------------------------------------------------------------------------
    自??? autofs 的使用

    在??的 NFS ?案系?的使用?中,如果用?端要使用伺服器端所提供的 NFS ?案系??, 要嘛就是得在 /etc/fstab ?中?定?????,要嘛就得要手?利用 mount ???。 此外,用?端得要?先手?的建立好???目?,然後??上?。

    不?有?小??,我?知道 NFS 伺服器?用?端的??或?可能不?永?存在, 而 RPC ??服?又挺??的,如果??了 NFS 伺服器後,任何一方??都可能造成另外一方老是在等待逾?~ 而且,??的 NFS ?案系?可能又不是常常被使用,但若不??的?,有?候要使用又得通知系?管理?, ?又很不方便....啊!好??的感?啊~@_@

    ??思考的角度:

    可不可以?用?端在有使用到 NFS ?案系?的需求?才???
    ?且不需要事先建立????
    另外,? NFS ?案系?使用完?後,可不可以? NFS 自?卸?,以避免可能的 RPC ???
    呵呵!好主意!在?在的 Linux ?境下?是可以?成的理想!用的就是 autofs ??服?啦!

    autofs 可以?先定?好用?端『?????自伺服器端的上?目?』,以及其相?的?? NFS 伺服器分享目?。 至於在?目?底下的??目??可以不需要?外?定。???或??有?模糊,?我?拿底下???示?看看:



    ?四、自???的?定??容

    如上?所示,我?的 autofs 主要?定?? /etc/auto.master,???案的?容很??, 如上所示,我只要定?出最上?目? (/home/nfs) 即可,至於後?的?案?是?目?底下各次目?的??。 在 /etc/auto.nfs (???案的?名可自?) ?面?可以定?出每?次目?所欲??的?端伺服器目?! 然後:『?我?在用?端要使用 /home/nfs/public 的?料?,此? autofs 才?去 192.168.0.2 ?? /home/public !』且『?隔了 5 分??有使用?目?下的?料後, ? /home/nfs/public ??主?的卸?』。

    很不?用的一?工具吧!那就?我?在用?端?玩一玩吧!


    建立主要?定? /etc/auto.master

    ??主要?定?的?容很??,只要有??目?及『?料???』即可。 那??料???的?名是可以自行?定的,在?哥??例子?中我使用 /etc/auto.nfs ?命名。
    [root@linux ~]# vi /etc/auto.master
    /home/nfs /etc/auto.nfs

    [root@linux ~]# mkdir /home/nfs
    # 注意!此? /home/nfs ???有其他的目?存在喔!




    建立?料????的????

    ??我?所指定的 /etc/auto.nfs 是自行?定的,所以???案是不存在的。 那????案的格式是如何呢??可以??看:
    [本地端目?] [-????] [伺服器所提供的目?]
    ??:
    [本地端目?] :指的就是在 /etc/auto.master ?指定的目?之次目?
    [-????] :就是前一小?提到的 rw,bg,soft 等等的??啦!可有可?;
    [伺服器所提供的目?] :例如 192.168.0.2:/home/public 等

    [root@linux ~]# vi /etc/auto.nfs
    public -rw,bg,soft,rsize=32768,wsize=32768 192.168.0.2:/home/public
    testing -rw,bg,soft,rsize=32768,wsize=32768 192.168.0.2:/home/test
    temp -rw,bg,soft,rsize=32768,wsize=32768 192.168.0.2:/tmp
    # ??部分,只要最前面加? - 符?即可!


    ??就可以建立??了!要注意的是,那些 /home/nfs/public 是不需要事先建立的! 咱?的 autofs ?事情???理喔!好了,接下??我?看看如何???作吧!\r


    ???作??察

    ?定??定妥?後,?然就是要?? autofs 啦!
    [root@linux ~]# /etc/init.d/autofs start


    假??目前??有??任何?自 192.168.0.2 ?部 NFS 伺服器的目?,好了, ?我?????察看看,如果我要?入 /home/nfs/public ?,?案系??如何?化呢?
    [root@linux ~]# mount; df
    # ?不?看到任何跟 192.168.0.2 ?部主?有?的 NFS ????喔!

    [root@linux ~]# cd /home/nfs/public

    [root@linux public]# mount; df
    192.168.0.2:/home/public on /home/nfs/public type nfs (rw,bg,soft,
    rsize=32768,wsize=32768,addr=140.116.44.179)
    # 上面的?出是同一行!瞧!突然出???玩意?!

    Filesystem 1K-blocks Used Available Use% Mounted on
    192.168.0.2:/home/public
    10080488 2144288 7424136 23% /home/nfs/public
    # ?案的??也出???!

    [root@linux public]# pwd
    /home/nfs/public
    # ??目?突然被生出?了! ^_^


    呵呵!真是好啊!如此一?,如果真的有需要用到?目??,系?才?去相?的伺服器上面??! 若是一?子?有使用,那??目?就?被卸?呢!??就?少了很多不必要的使用??啦! ?不?用吧! ^_^

    --------------------------------------------------------------------------------
    案例演?

    假??境:
    假?我的 Linux 主?? 192.168.0.100 ?一部;
    ??? /tmp 以可??,?且不限制使用者身份的方式分享?所有 192.168.0.0/24 ???域中的所有 Linux 工作站;
    ???放 /home/nfs ??目?,使用的?性?唯?,可提供除了?域?的工作站外,向外亦提供?料?容;
    ???放 /home/upload 做? 192.168.0.0/24 ???域的?料上?目?,其中,?? /home/upload 的使用者及所?群?? nfs-upload ??名字,他的 UID ? GID 均? 210;
    ??? /home/andy ??目??分享? 192.168.0.50 ?部 Linux 主?,以提供?主?上面 andy ??使用者?使用,也就是?, andy 在 192.168.0.50 及 192.168.0.100 均有??,且??均? andy ,所以???放 /home/andy ? andy 使用他的家目?啦!
    ?地演?:

    好了,那??您先不要看底下的答案,先自己??或者直接在自己的?器上面?手作作看,等到得到您要的答案之後, 再看底下的?明吧!

    首先,就是要建立 /etc/exports ???案的?容?,您可以???吧!
    [root@linux ~]# vi /etc/exports
    /tmp 192.168.0.0/24(rw,no_root_squash)
    /home/nfs 192.168.0.0/24(ro) *(ro,all_squash)
    /home/upload 192.168.0.0/24(rw,all_squash,anonuid=210,anongid=210)
    /home/andy 192.168.0.50(rw)




    再?,就是要建立每???的目?的?? Linux ?限了!我?一?一??看:
    1. /tmp
    [root@linux ~]# ll -d /tmp
    drwxrwxrwt 5 root root 20480 Sep 22 22:52 /tmp

    2. /home/nfs
    [root@linux ~]# mkdir -p /home/nfs
    [root@linux ~]# chmod 755 -R /home/nfs
    # 修改???格的?案?限?目???案?定成唯?!不能?入的??,?更保?一?!

    3. /home/upload
    [root@linux ~]# groupadd -g 210 nfs-upload
    [root@linux ~]# useradd -g 210 -u 210 -M nfs-upload
    # 先建立??的???群?名?及 UID 喔!
    [root@linux ~]# mkdir -p /home/upload
    [root@linux ~]# chown -R nfs-upload:nfs-upload /home/upload
    # 修改?有者!如此,?使用者?目?的?限都?定妥??!

    4. /home/andy
    [root@linux ~]# ll -d /home/andy
    drwx------ 3 andy andy 4096 Oct 28 13:37 andy


    ??子一?,?限的??大概就可以解??!


    ?? portmap ? nfs 服?:
    [root@linux ~]# /etc/init.d/portmap start
    [root@linux ~]# /etc/init.d/nfs start
    [root@linux ~]# /etc/init.d/nfslock start




    在 192.168.0.50 ?部?器上面演?一下:
    1. ???端伺服器的可用目?:
    [root@linux ~]# /etc/init.d/portmap start
    [root@linux ~]# /etc/init.d/nfslock start
    [root@linux ~]# showmount -e 192.168.0.100
    Export list for 192.168.0.100:
    /tmp 192.168.0.*
    /home/nfs (everyone)
    /home/upload 192.168.0.*
    /home/andy 192.168.0.50

    2. 建立???:
    [root@linux ~]# mkdir -p /home/zzz/tmp
    [root@linux ~]# mkdir -p /home/zzz/nfs
    [root@linux ~]# mkdir -p /home/zzz/upload
    [root@linux ~]# mkdir -p /home/zzz/andy

    3. ????:
    [root@linux ~]# mount -t nfs 192.168.0.100:/tmp /home/zzz/tmp
    [root@linux ~]# mount -t nfs 192.168.0.100:/home/nfs /home/zzz/nfs
    [root@linux ~]# mount -t nfs 192.168.0.100:/home/upload /home/zzz/upload
    [root@linux ~]# mount -t nfs 192.168.0.100:/home/andy /home/zzz/andy



    整?步?大致上就是???!加油喔!


    --------------------------------------------------------------------------------
    重?回?

    Network FileSystem (NFS) 可以?主?之?透??路分享彼此的?案?目?;
    NFS 主要是透? RPC ??行 file share 的目的,所以 Server ? Client 的 RPC 一定要??才行!
    NFS 主?可以控制??的 Client 端的登入??限;
    NFS 的?定?就是 /etc/exports ???案;
    NFS 的?限可以?察 /var/lib/nfs/etab,至於的重要登??可以?考 /var/lib/nfs/xtab ???案,?包含相?多有用的??在其中!
    NFS 伺服器?用?端的使用者??名?、UID 最好要一致,可以避免?限??:
    NFS 伺服器???用?端的 root ?行?限??,通常??其成? nfsnobody 或 nobody。
    NFS 主?要??之前,??必先?? portmap ? nfs server ,否????法?利成功;
    NFS 主?在更? /etc/exports ???案之後,可以透? exportfs ??指令?重新??分享的目?!
    可以使用 rpcinfo ??察 RPC program 之?的??!!!
    NFS 主?在?定之初,就必?要考?到 client 端登入的?限??,很多?候?法?入或者?法?行分享,主要是 Linux ???案的?限?定??所致!
    NFS 的防火??定可以透?控制 RPC 的主要 port ,亦即是 111 ?? port ?管理!此外,亦可透? TCP_Wrappers ?管理!
    NFS 用?端只要成功 mount NFS 主?分享的目?之後,使用上面就好像自己的 partition 一般;
    NFS 用?端可以透?使用 showmount, mount ? umount ?使用 NFS 主?提供的分享的目?!
    NFS 亦可以使用????,如 bg, soft, rsize, wsize, nosuid, noexec, nodev 等??, ??到保?自己?案系?的目?!
    自???的 autofs 服?可以在用?端需要 NFS 伺服器提供的?源?才??。
    本章? LPI 之?的??:
    在 LPI ?站 http://www.lpi.org ?面提到的,?於 NFS 的考???的地方,只有在 LPI level 1 的 102 ,?面的 topic 113 Networking Services ,第四??中,?易的 NFS ?定。??的是『??者需?解 NFS 的?定、?????的??』至於?考的?案?指令可能有?些:
    /etc/exports
    /etc/fstab
    mount
    umount

  29. baizx 于 2009-08-10 10:42:36发表:

    ?端??伺服器 Telnet / SSH / VNC / XDMCP / RSH


    本章的行前??工作

    在??章??中我??使用用?端的??????到主?端?操作主?,所以你必?要?解到你的主?防火?必?要?放, ?且要取消 SELinux 才行!另外,登入??分析到的 PAM 模?也需要?行?解?! 本章後半部?介? X Window 的?端登入,所以你也必??於 X Server/client 的架?有??解才行。

    ?解?路基?,尤其?路是?向的;
    ???路安全?中的取消 SELinux ,以及防火?的基本概念;
    ?解使用者???的相?概念;
    ?? X Window System;
    由於很多?端??伺服器??系????不安?,因此你必?要?解 RPM 及 yum 的使用。

    --------------------------------------------------------------------------------
    ?端??伺服器

    ?端??伺服器?我???,可是一?很有用的工具啊!他可以?我?更方便的管理主?。 不?,方便是方便,安全性其?不很好的~所以,才要特???一下??玩意?啊!


    --------------------------------------------------------------------------------
    什?是?端??伺服器

    首先,我?要先??解一下,什?是『?端??伺服器』? ???西的功能?何?我想,您??已???,一?良好的?路?境?中,一部?放到 Internet 上面的伺服器,基本上,他可以不需要?幕、??、滑鼠等等的配?, 只要有基本的主?板、CPU、RAM、硬碟再加上一?好一?的?路卡,?且?上 Internet !哈哈!那?您要操控?部主?的?候,只要透??路????,然後?行任何修改即可! 嘿!所以?,???候主?自然不需要周???啦!

    以?哥?人?例,目前?哥管理大?七、八部左右的 Unix-Like 主?, ?些主?都不在同一?地方,分?在南台?各?!那??有新的套件的漏洞被??, 或者是需要?行一些?外的?定的?候,是否?哥本人一定要到?????然不需要, 只要透??路??到?主?上面,就可以?行任何工作了!真的就好像在主?前面工作一般的??愉快! ^_^!?就是?端??伺服器啦!

    ?端??伺服器的功能?然?不只如此!??例子??:?您的工作需要使用到 Linux 的?大的??功能?,那?您一定需要 Linux ?吧!而且最好是?算速度快一?的主?, ???候您可以?您研究室最快的那一部主??放出?,?定一下?端??伺服器,?您的?生啦, 或者是研究室的同仁啦,可以透??部?器?他??行研究的工作,???候,您的主?就可以?多人?行分享 Linux ?算的功能啦!\r

    在早期的?路世界?,由於只有 Unix ?器,而且?人???不流行的?候, 想要使用大型主???行?值程式的?算?(在我?工程界,比?常使用 Fortran ?一?的程式?言,至於 C ?言??少碰~),就需要向?校?位申? Unix 工作站的??, ?且以?端??程式??主?,以使用 Unix 的?源??行我?的?值模式?算!所以啦,那??端??伺服器的?定, ?於系?管理?是很重要的!尤其?於大型工作站?型的 Unix-Like 主?,由於很多人都需要使用到他的?算功能,或者是他的??程式( compiler )??行?算,??的?端??就更形重要啦!

    那?是否每一部?上 Internet 上面的主?都??要?放?端??的功能呢?其??不?然, ?是需要??您的主???行??的,我?底下分伺服器?工作站??明:


    伺服器?型( Server )的??程式:
    在一般?放???路服?的伺服器中,由於?放的服?可能?有??重要的??, 而?端??程式??主?之後,可以?行的工作又太多了(?乎就像在主?前面工作一般!), 因此???路的?端??程式通常???少部分系???者?放而已! 除非必要,否? Server ?型的主??真的不建??放??的服?呢! 以?哥?例,我的主?提供了我?研究室使用 Mail ? Internet 上面的 WWW 服?,如果?主?提供?端??的?, 那??一不小心被入侵,那可就??筋了!因此,?哥??放『很小部分的?域』?系?管理????, 其他?源的 IP 一律抵?!不?使用?端??的功能呢!


    工作站?型( Workstation )的??程式:
    至於工作站的情?就跟伺服器不太一?了!工作站常常????部的??使用者?放而已, 通常是不希望?上 Internet 的啦!而且所?的工作站自然就是用?做工的! 例如?哥的其中一部 Linux 就是??用??行大型的?值模式?算模?之用! ???候的?端??伺服器可能就得要?多人??了! 因?工作站的?大?算功能可以?很多人一同使用他的?算能力!而且也可以免除每部??都得要安? compiler 的窘境!要知道,某些工程用的 compiler 是粉?的~


    --------------------------------------------------------------------------------
    有哪些可供登入的?型?

    那?目前?端??伺服器的主要?型有哪些?如果以?示的?型?分?, 基本上有文字介面??形介面??。

    在文字?型登入方面的伺服器,主要有以『明?』?送?料的 telnet 伺服器,及以加密技??行封包加密??送的 SSH 伺服器!?然 telnet 可以支援的 client 端??比?多,不?由於他是使用明???送?料, 您的?料很容易遭到有心人士的?取!所以近?我?都呼?大家多使用 SSH ?一???方式,而??掉 telnet ??比?不安全的咚咚?!

    至於?形介面的伺服器,比???的有 Xdmcp ,架? Xdmcp 很??, 不? client 端的??比?少。另外一款目前很常?的伺服器,就是 VNC (Virtual Network Computing), 透? VNC server/client ????行?接。?形介面最大的??是『?形』啊! 不?,因?是透??形??送,??的?料量相?的大,所以速度?安全性都有待考量。 因此,我??建?您??形介面的?端登入伺服器?放在?部?域 (LAN) 就好了!

    那?什?是『明?』?『加密』的?料封包?送模式呢? ?什? telnet 使用明?就比?不安全?所?的明?就是: 『?我?的?料封包在?路上流??,??料封包的?容??料的原始格式』, ??得我?在?路常用指令章??中介?的 tcpdump 吧? 我?在 telnet 下?的指令?密?等等,都?以?似 ASCII 的格式?送到主?端, 而主?端就藉由?些?料?下?指令。如果?些?料封包在??某些 broadcast 或者是 Router ?,被有心人士捉去,那?他??完整的取得您的?料喔! 所以啦,?一您的?料封包?面含有信用卡?料、密?、身份??等重要???,是否很危???! 因此,目前我?通常都希望使用可以??些在?路上面跑的?料加密的技?,以增加?料在 Internet 上面?送的安全性啊!


    --------------------------------------------------------------------------------
    Telnet 伺服器

    知道 telnet 是什???咦!不就是?接 BBS 的工具????!他??也是 BBS ???的一?伺服器啦!不???我??不玩弄 BBS ! telnet 可以?是?史相?悠久的?端??伺服器哩!而且支援他的??也相?的多!例如知名的 netterm 就直接支援他啦!??之後的界面也漂亮,在 client 端的中文????入也?有??! 相?的不?用!不?,他最麻?的地方就是.....比?不安全而已啦~

    底下我??一?怎????使用 telnet 伺服器吧!


    --------------------------------------------------------------------------------
    安?、?????服?

    安?:
    近年?由於 telnet 是以明?在??的??,所以在新的 Linux 版本上面,已?都? telnet ??伺服器排除在『先?名?』之外啦,也就是?,很多 Linux distributions ??是不安? telnet 的,不?,在每?主要的 Linux distributions ?是有提供 telnet 套件在光碟?中啦!所以您要拿出原版光碟,?且安?好他就可以用啦!如何??是否已?安?了 telnet 呢?最??的方法就是使用最?泛被使用的 RPM 啦!
    [root@linux ~]# rpm -qa | grep telnet
    telnet-0.17-31.EL4.3
    telnet-server-0.17-31.EL4.3
    # 上面是 CentOS 4.x ??的套件版本。如果是其他的 distribution,
    # ?名可能?不太一?~可利用 yum 或 apt 等方式?安?喔!


    需要特?留意的是,如果要提供 telnet ??服?,通常需要安??? RPM 喔:
    一?是 telnet,??套件提供的是 telnet 用?端的??程式;
    另一?是 telnet-server 套件,??才是真正的 Telnet server ??喔!
    如果找不到 telnet-server 的?,?拿出原版光碟?安?,或者直接使用 yum 吧! 否?就?法?行下一步的?定啦!^_^


    ?????:
    ??得『?哥的 Linux 私房菜 -- 基???篇』?面的 『??服?( daemon )』那?章?吧? 要?得 super daemon 呦!因?我?的 telnet 就是?在 super daemon 底下的一支服?而已!那?咚咚就是有名的 xinetd ?!

    Tips:
    在某些?版的套件上面也有使用 inetd 的,??的方式有?不太一?,不?差?不大啦! 只要懂得基本的常?,那?就不?有???!所以?哥才?要大家先?完 Linux 基?篇 啦!

    ??的方式就是:
    ? xinetd ?面?於 telnet 的?目??,然後
    重新??一次 xinetd 就成功啦!
    那?如何?? telnet 的?目呢?很??,有??方式:
    使用 ntsysv 或 chkconfig: ??得 Red Hat 系列(含 CentOS)的套件?面的 ntsysv ??好用的?西???了,在 CentOS 底下有??一?好用的?定工具,您可以使用 ntsysv 出?的?窗之中,? telnet 勾?起?,然後按下 OK ??即可?!


    使用 vi 修改 /etc/xinetd.d/telnet ???案: 那?如果不是 Red Hat 系列的 Linux 系?呢?基本上, ntsysv 也只是修改 /etc/xinetd.d ??目?下的?料而已,所以我??然可以手?自己修改他啦!
    [root@linux ~]# vi /etc/xinetd.d/telnet
    service telnet
    {
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/in.telnetd
    log_on_failure += USERID
    # disable = yes
    disable = no
    # 基本上,改上面??行就?了!? disable ?定成 no 表示要??!
    }



    ?定完??之後,自然就是要??啦,??提到 telnet 是?在 xinetd 底下的,所以自然只要重新?? xinetd 就能?? /etc/xinetd.d/ ??的?定重新???, 所以???定??的 telnet 自然也就可以被??啦!而??的方式也有??方式,其中 service ??指令?支援在 CentOS ? Mandriva 底下,所以通常?哥?是以 /etc/init.d 底下的 scripts ???的主要方法啦!
    ??合 Red Hat 系列 / Mandriva 系列的主???方式
    [root@linux ~]# service xinetd restart
    Stopping xinetd: [ OK ]
    Starting xinetd: [ OK ]

    ?合各版本的主???方式
    [root@linux ~]# /etc/init.d/xinetd restart
    Stopping xinetd: [ OK ]
    Starting xinetd: [ OK ]
    # 某些版本??有 restart 的??,???候就需要:stop 再 start ?!


    那?要看有?有??服?呢?怎?看?其?也很??啦,??得我?在前?章提到的『 限制 Linux port 的?? 』那一章??使用 netstat 就可以啦!
    [root@linux ~]# netstat -tlup
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 *:telnet *:* LISTEN 23817/xinetd


    看到了????,那? telnet 就是??的?目啦!那?要如何??呢?呵呵! 那就真的是太??啦!就???的步?再做一次,而??定值??一下即可!步?如下啦!

    Tips:
    ??考一???,那? port ??的服?名?在哪一??案?面查?到的呢? 在每一? Linux 系?都有的?案呦!忘?了呀!?再回到前面看看 限制 Linux port 的?? , 然後用 vi 去看看那一??案的?容吧! ^_^

    Step 1: 修改?定?
    [root@linux ~]# vi /etc/xinetd.d/telnet
    service telnet
    {
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/in.telnetd
    log_on_failure += USERID
    disable = yes <== 就是??啦!?他改成 yes 就是??!
    }

    Step 2: 重新?? xinetd ?? super daemon
    [root@linux ~]# /etc/init.d/xinetd restart




    --------------------------------------------------------------------------------
    好用的????

    ??上面提到的都是在伺服器端的?定而已!那?在客?端有什?好用的??可以?上 Server 的呢?最常?到的??就是 netterm ??鼎鼎大名的????了吧! 我想,只要玩? BBS 的大概都?得????才?!所以??就不提了! 另外,目前?乎所有的作?系?都提供了 telnet ??程式,??程式可以直接?易的就?上 telnet server 呢!例如您要在 Linux 上面?上自己的 telnet 伺服器,可以??做:
    [root@linux ~]# telnet localhost
    Trying 127.0.0.1...
    Connected to localhost.localdomain (127.0.0.1).
    Escape character is '^]'.
    CentOS release 4.4 (Final)
    Kernel 2.6.9-42.0.2.EL on an i686
    login: dmtsai <== 就是??啦!??入『一般』??,不能用 root 喔!
    Password: <== ???入???的密?!?注意,?入?,?幕不?有任何??!
    Last login: Fri Jul 1 09:31:21 from 127.0.0.1 <== 上次登入的???何?
    [dmtsai@linux ~]$ <== ??就是已?登入的地方!亦即?端主?了!
    [dmtsai@linux ~]$ exit <== ??就能??? telnet ??端主?咯!


    ??就????啦!很??吧!那?在 Windows 的?境底下呢?同?的,也是可以使用 telnet 的程式??到 Linux 的 telnet server ?面?!?有??的啦!可以依序??做:
    按下 Windows ?的 『?始』
    ?? 『?行』
    在出?的?窗中?入 『telnet your.IP.or.hostname』
    ??就可以?入 Linux 的?境中了!很方便吧!?然啦!您也可以使用?似 netterm ??很棒的???????的,??我?就不示?啦!

    Tips:
    在 Linux tty1 ~ tty6 的?端???模式下,我?是?有?法看到中文的! 除非安?某些特殊的中文介面才行!比如 JMCCE 之?的咚咚! 因?不是很重要,所以?哥??就不加介?了。 ^_^

    另外,需要先留意的是,?了系?安全的考量,??的 telnet 是『不允?』使用 root ????登入的~ ??很重要喔!您不要使用 root ??登入 telnet 啊! ^_^

    --------------------------------------------------------------------------------
    iptables, TCP_Wrappers, ?建?

    telnet ??伺服器方便?方便,但?是一?不太好的??解?方案, 因??竟他是一?以『明?』??的?定,所以很不?合在 Internet 上面使用啦! 你?不希望你的??密?在 Internet 上面被?取吧?不?,如果 telnet 是??在?部?境?中那就?好啦! 尤其有些朋友因????的??,?是需要使用到 telnet ???。那?我?就提一些基本的注意事?好了!


    以比?限制的?定??????的 IP :
    事?上, xinetd 就已?提供些?的保?措施了, 您可以??您主?的多重介面(有??以及?外喔!)?提供不同保?等?的措施! 底下列出一??例,不?,更多的???再回到『?哥的 Linux 私房菜 -- 基???篇』?中去查?一下 『??服? 』那一章?面的???定?明,或者直接 man xinetd.conf 吧!
    [root@linux ~]# vi /etc/xinetd.d/telnet
    # This file had been modified by VBird 2002/11/04
    # 首先??部?路的???定
    service telnet
    {
    disable = no
    bind = 192.168.1.2
    only_from = 192.168.1.0/24
    # 上面??行?明?提供?部?域!
    instance = UNLIMITED
    nice = 0
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/telnetd
    server_args = -a none
    log_on_failure += USERID
    }

    # 再??是??外部?域的?定
    service telnet
    {
    disable = no
    bind = 140.116.142.196
    only_from = 140.116.0.0/16
    no_access = 140.116.32.{10,26}
    # 上面?三行?定外部???格的限制
    instance = 10 <==最多允?同? 10 ???
    umask = 022
    nice = 10
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/telnetd
    server_args = -a none
    log_on_failure += USERID
    }



    root 不能直接以 telnet ?接上主?:
    既然 telnet 不是很安全,自然??的情?之下就是?法允? root 以 telnet 登入 Linux 主?的!但事?上, telnet 只是利用一些??安全的?制 (其?就是 PAM 模?啦) ?防止 root 登入而已~所以?,假如您?定您的?境?安全(例如您的主???有?上 Internet ),?且想要?放 root 以 telnet 登入 Linux 主?的?,?直接? /etc/securetty 更改?名即可!
    [root@linux ~]# mv /etc/securetty /etc/securetty.bak


    ??一?,root 就可以登入啦!不?,相?的不建???做喔!?竟不是很安全啦!此外,您也可以藉由修改 pam 模???成同?的功能!修改 /etc/pam.d/login ???案的第二行?定即可: [root@linux ~]# vi /etc/pam.d/login
    #%PAM-1.0
    #auth required pam_securetty.so <== 就是??一行,?他?解即可!
    auth required pam_stack.so service=system-auth
    auth required pam_nologin.so
    account required pam_stack.so service=system-auth
    password required pam_stack.so service=system-auth
    # pam_selinux.so close should be the first session rule
    session required pam_selinux.so close
    session required pam_stack.so service=system-auth
    session required pam_loginuid.so
    session optional pam_console.so
    # pam_selinux.so open should be the last session rule
    session required pam_selinux.so multiple open


    如此一?, root ?可以直接?入 Linux 主?了!不?,既然我?可以透? su 或 sudo ?切?身份, 那??嘛?需要?放 root 用 telnet 登入主?呢?真是?必要~所以, ?是不建?如此做的!


    加上防火? iptables:
    ?? telnet 加?防火? iptables 是一?好主意!如果您已??考了前面章?提到的『 ?易防火?架? 』一文,?且使用?面的 scripts 的?,那?不用?心 telnet 啦!基本上,他原本就???部?放 telnet ,外部是?法?上您的 telnet 的!但是,若是您自己?定了自己的防火??制之後,那?想要?? 192.168.0.0/24 ???域,及 61.xxx.xxx.xxx ?? IP ?行 telnet 的?放呢?可以增加??行在您的 iptables ??之?(?注意:防火?的???序是很重要的!所以再回?看看 ?易防火?架? 一文是有必要的!)
    iptables -A INPUT -p tcp -i $INIF -s 192.168.0.0/24 --dport 23 -j ACCEPT
    iptables -A INPUT -p tcp -i $EXTIF -s 61.xxx.xxx.xxx --dport 23 -j ACCEPT
    iptables -A INPUT -p tcp -i $EXTIF --dport 23 -j DROP


    上面的??中,$EXTIF 指的是?外的??介面,$INIF ?是??的介面。 第一、二行是???源的 IP ??放 port 23 亦即是 telnet 的?定啦! 而最後一行?是?其他的所有?源的,想要?上 telnet 的??封包都?掉的意思!怎??!很??吧!


    加上防火? /etc/hosts.allow(deny) ?制:
    防火?的?制是越多越好!永?也不嫌多的啦!??也可以使用 TCP_Wrappers 的?制呢!??是?放了 192.168.0.0/24 ???段,但是如果您只想要其中的 192.168.0.1 ~ 192.168.0.5 ?入呢?而其他的 IP 只要一???,就?被??? IP ,以提供 root 查?呢?可以??做:
    [root@linux ~]# vi /etc/hosts.allow
    in.telnetd: 192.168.0.1, 192.168.0.2, 192.168.0.3, 192.168.0.4
    in.telnetd: 192.168.0.5

    [root@linux ~]# vi /etc/hosts.deny
    in.telnetd : ALL : spawn (/bin/echo Security notice from `/bin/hostname`; \
    /bin/echo; /usr/sbin/safe_finger @%h ) | \
    /bin/mail -s "%d -%h security" root@localhost & \
    : twist ( /bin/echo -e "\n\nWARNING connectin not allowed. \n\n\n" )



    建?事?:
    事?上, telnet 最大的不安全在於?料是以明???,所以在 Internet ??大家都能??上的地方????料?,?在很不安全!所以:
    非必要?,不要?? telnet ,如果真的需要?? telnet ,那?也?在???且使用完?之後,立即?他?掉!
    如果?定真的要?? telnet ?,??定好限制的????,使用 iptables ??定??的限制?域;
    加上 TCP_Wrappers 的?助,加?防火?的功能!
    ??注意登??案?面?於 login 的事?!?且不要? root 能以 telnet 登入 Linux 主?!

    --------------------------------------------------------------------------------
    SSH 伺服器

    既然 telnet 的?料在 Internet 上不是很安全,那?我又需要以?端??服??操控我的 Linux 主?,那???怎??呀?最好的方法?然就是以??安全的???制?解???的???! 那??如何解???的??呢??也不?啦,使用 SSH 即可。那? SSH 是什?呢?他有什?特?功能?

    ??的??,SSH 是 Secure SHell protocol 的??,他可以?由???的封包加密的技?, ??行?料的??,因此,?料?然就比?安全?!?? SSH 可以用?取代 Internet 上面?不安全的 finger, R Shell (rcp, rlogin, rsh 等指令), talk 及 telnet 等??模式。底下我??先?介一下 SSH 的??模式,??明?什? SSH ?比?安全呢!

    特?注意:?? SSH ?定,在??的??中,本身就提供??伺服器功能:
    一?就是?似 telnet 的?端??使用 shell 的伺服器,亦即是俗?的 ssh ;
    另一?就是?似 FTP 服?的 sftp-server !提供更安全的 FTP 服?。


    --------------------------------------------------------------------------------
    ??加密技??介:

    什?是『?料加密』呢???的?,就是?人?看的懂得?子?料,??一些?算, ??些?料?成?有意?的(至少?人???)咚咚,然後??咚咚可以在?路上面??, 而?使用者想要查????料?,再透?反向?算,??些咚咚反推出原始的?子?料。 由於?些?料已?被重新?理?,所以,即使?料在 Internet 上被 cracker ??而?取,他?也不容易就推算得出?原始?料?容的。

    ?路封包的加密技?通常是藉由所?的『一?公??私?』 亦即『Public and Private ?合成的 key pair』 ??行加密?解密的?作!如下?所示。主?端所要?? client 端的?料,?先?由公?加密後才到?路上??。 而到? client 端之後,再?由私??加密的?料解??~由於在 Internet 上面跑的?料是加密?後的, 所以你的?料?容?然就比?安全啦!



    ?一、公??私?在?行?料???的角色示意?


    Tips:
    ?料加密的技?真的相?的多,也各有其?缺?,有的?算速度快, 但是不?安全;有的?安全,但是加密/解密的速度?慢~ 目前在 SSH 使用上,主要是利用 RSA/DSA/Diffie-Hellman 等?制喔!

    那??些公??私?是如何?生的呢?底下我???一?目前 SSH 的??版本的??模式?!


    SSH protocol version 1:
    每一部 SSH 伺服器主?都可以使用 RSA 加密方式??生一? 1024-bit 的 RSA Key , ?? RSA 的加密方式,主要就是用??生公??私?的演算方法!?? version 1 的整???的加密步?可以??的??看:
    ?每次 SSH daemon (sshd) ???,就??生一支 768-bit 的公?(或?? server key)存放在 Server 中;
    若有 client 端的 ssh ??需求?送??,那? Server 就???一支公??? client ,此? client 也?比?一下?支公?的正?性。比?的方法?利用 /etc/ssh/ssh_known_hosts 或 ~/.ssh/known_hosts ?案?容。
    在 Client 接受?? 768-bit 的 server key 之後,Client 自己也????生一支 256-bit 的私?(host key),?且以加密的方式? server key ? host key 整合成一?完整的 Key pair,?且??? Key pair 也?送? server ;
    之後,Server ? Client 在?次的???中,就以?一? 1024-bit 的 Key pair ??行?料的??!
    也就是?,Public Key 是放在 Server 上的,而 Client 端的??必?要能接受 Public Key 以及?算出 Private Key 以?合成?一把?一?二的 key pair ,因? Client 端每次的 256-bit 的 Key 是??取的,所以您?次的???下次的??的 Key 可能就?不一?啦!此外在 Client 端的使用者家目?下的 ~/.ssh/known_hosts ???曾????的主?的 public key ,用以??每次?自?主?的??是正?的。 ?? ~/.ssh/known_hosts ?案的意?後???介?的。

    SSH protocol version 2:
    在 SSH version1 的???程?中,? server 端接受 client 端的 private key 後,就不再???次??的 key pair ?行??。此?若有?意的 cracker ??????予?意的程式??,由於主?端不?????的正?性, 因此可能?接受?程式?,?一步造成系?被黑掉的??。

    ?了改正??缺失,SSH version 2 多加了一?????正?性的 Diffie-Hellman ?制, 在每次?料的???中 server 端都?以??制?查?料的?源是否正?, 所以可以避免???程?中被插入?意程式?的??! 也就是?, ssh version 2 是比?安全的喔!


    由於 SSH version 1 本身存在著的一些??,因此,近?我?都希望大家使用 ssh version 2 的??模式, ?比?安全一?。而??版本的?定?需要在 ssh 主?端?客?端均?定好才行喔!



    --------------------------------------------------------------------------------
    ?? SSH 服?:

    事?上,在我?使用的 Linux 系??中,??就已?含有 SSH 的所有需要的套件了! ?包含了可以?生密?等?定的 OpenSSL 套件? OpenSSH 套件,所以呢,要?? SSH 真的是太??了!就直接?他??就是了!此外,在目前的 Linux Distributions ?中,都是???? SSH 的, 所以一?都不麻?,因?不用去?定,他就已???了!哇!真是爽快~??如何, 我??是得?一?????的方式吧!直接??就是以 SSH daemon ,??? sshd ???的,所以,手?可以????:
    [root@linux ~]# /etc/init.d/sshd restart
    [root@linux ~]# netstat -tlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 *:ssh *:* LISTEN 24266/sshd


    ??後,利用 netstat 查?一下 sshd ??程序是否正?的在 LISTEN 即可!?然,???候您的 SSH 伺服器?定值均是使用系???值, 能不能??用?安全的 version 2 ,?需要?一步的?定呢。 接下?,如果您想要在??就?? SSH 的?(??也是??的!),可以利用 chkconfig ??定????即可。

    ?然新的 Linux distributions 都???有 SSH 存在的,但是??的版本就?有 telnet 而已。 例如 Red Hat 6.x 之前的版本。那?如果您想要在?的 distributions ?中安? SSH ?如何是好? 嘿嘿!可以?考一下?哥之前??的一篇咚咚,有??的?明 tarball 的安?流程哩!
    使用 Tarbal 安? SSH 以及升? SSH 可能?遇到的???明
    (http://linux.vbird.org/linux_server/0310telnetssh/0310telnetssh-2.php)
    需要注意的是, SSH 不但提供了 shell ?我?使用,亦即是 ssh protocol 的主要目的,同?亦提供了一???安全的 FTP server ,亦即是 ssh-ftp server ?我??成是 FTP ?使用!所以,?? sshd 可以同?提供 shell ? ftp 喔!而且都是架?在 port 22 上面的呢!所以,底下我?就?提一提,那?怎??由 Client 端?接上 Server 端呢?同?,如何以 FTP 的服???接上 Server ?且使用 FTP 的功能呢?



    --------------------------------------------------------------------------------
    ssh 用?端??:

    由於 Linux ? Windows ???用?端 Client ????/指令?不一?,所以我?分??介?可以使用的指令:


    Linux Client: ssh
    SSH 在 client 端使用的是 ssh ??指令,??指令可以指定??的版本 (version1, version2), ?可以指定非正?的 ssh port (正? ssh port ? 22)。不?,一般的用法可以使用底下的方式:
    1. 直接登入到?方主?的方法:
    [root@linux ~]# ssh account@hostname
    # ?接到我?自己本?上面的 ssh 服?!更多?息,? man ssh 喔!
    [root@linux ~]# ssh dmtsai@localhost
    The authenticity of host 'localhost (127.0.0.1)' can't be established.
    RSA key fingerprint is f8:ae:67:0e:f0:e0:3e:bb:d9:88:1e:c9:2e:62:22:72.
    Are you sure you want to continue connecting (yes/no)? yes
    # 上面很重要喔!?必填入完整的 "yes" 而不是 Y 或 y 而已。
    Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
    dmtsai@localhost's password: <== 在??填入密?,同?的,?幕不?有?息的!
    Last login: Fri Jul 1 14:23:27 2005 from localhost.localdomain
    [dmtsai@linux ~]$ <== 瞧!已?登入?~
    [dmtsai@linux ~]$ exit <== ?入 exit 就能????方主??!

    2. 不登入?方主?,直接在?方主??行指令的方法:
    [root@linux ~]# ssh dmtsai@localhost date
    dmtsai@localhost's password:
    Tue Nov 22 11:57:27 CST 2005
    [root@linux ~]#
    # 看!身份?是 root 喔!只是以 dmtsai 的身份在?端主?上?行了一?指令而已!


    ???特?留意的是,如果直接以『 ssh hostname 』??指令??接?入 hostname ??主??,??入 hostname ??主?的『??名?』??是目前您所在的???境?中的使用者??! 以上面?例,因?我是以 root 的身份在?行,所以如果我?行了『 ssh host.domain.name 』?, 那??方 host.domain.name ?部主?,就?以 root 的身份??我?行密???的登入?作!

    因此,?了避免??的麻?,通常?哥都是以??的 e-mail 的?法?登入?方的主?, 例如『ssh user@hostname 』即表示, ?哥是以 user ????去登入 hostname ?部主?的意思。?然,也可以使用 -l username ??的形式???!登入?方主?之後,其他的所有?行行?都跟在 Linux 主???有??~所以,真的是很??吧! ^_^ ??就可以?到?端控管主?的目的了!

    此外,在??的情?下, SSH 是『允?您以 root 的身份登入』喔 !呵呵!更是爽快啦!要特?留意的是,?您要?接到?方的主??,如果是首次?接,那? Server ??您,您的??的 Key 尚未被建立,要不要接受 Server ??的 Key ,?建立起??呢?呵呵!???候?『?必要?入 yes 而不是 y 或 Y』,??程式才?接受喔!


    ?於 Server Keys 的???料: ~/.ssh/known_hosts
    如果您??有研究? SSH 的??流程的?,???到? client 端接受?自 server 端的 public key 之後,?主?的比??支 Key 的正?性。而比?的?案是 ~/.ssh/known_hosts 。 若是接受到的?支 public key ??有被??在??案?,那?上面表格的?息, 就是要您回答 yes/no 的那??息才?出?~而您回答 yes 之後,? public key ??就?被??起?,以留待下次登入同一部主??的?查之用啊! 如果 Server Key ? ~/.ssh/known_hosts 比?成功, 那?您就?直接?入等待密??入的?面, 那就不必每次都得要?入 (yes/no) ?~

    不?,您或?也???一件事情啊,我?知道 SSH server ?然使用 version 2 已?不?重??造 server key (public key) 了,但是如果?主?重新安??新的 linux distributions ?, 那把 server key 就?被改?啊!而 client 又?去比??? public key ? ~/.ssh/known_hosts , 此? Client 就????者不同了,於是乎?生如下的???息了:
    [root@linux ~]# ssh dmtsai@localhost
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
    Someone could be eavesdropping on you right now (man-in-the-middle attack)!
    It is also possible that the RSA host key has just been changed.
    The fingerprint for the RSA key sent by the remote host is
    f8:ae:67:0e:f0:a0:3e:aa:d9:77:19:c9:2e:62:22:72.
    Please contact your system administrator.
    Add correct host key in /root/.ssh/known_hosts to get rid of this message.
    Offending key in /root/.ssh/known_hosts:1
    RSA host key for localhost has changed and you have requested strict checking.
    Host key verification failed.


    ?????息在告?您,上次所登?的?端 SSH 主?的 Keys 已?被改?了(最可能的原因就是 Server 端重新??/重新安?/更新套件等等啦!), 所以?法??登入~呵呵!???候怎???很??啊!?入您的家目?的 ~/.ssh ?面,??一下 known_hosts ,?欲?接的主?名?的 Key ?他消除,就可以重新??啦!
    [root@linux ~]# vi ~/.ssh/known_hosts
    localhost ssh-rsa AAAAB3NzaC1yc2Euowireffodjoiwjefmoeiwhoqhwupoi
    t[egmlomowimvoiweo6VpTHTw2/tENp4U7Wn8J6nxYWP36YziFgxtWu4MPSKaRmr
    E4eUpR1G/zV3TkChRZY5hGUybAreupTVdxCZvJlYvNiejfijoejwiojfijeoiwx5
    eRkzvSj7a19vELZ5f8XhzH62E=


    上面表格的?容其?是同一行的~那一行代表『 localhost ?部主?,利用的是 ssh-rsa ???制, 而後?的?料?是那把 Server Key 的?容。』如果您?定?次的比??法成功是正常的, 那?您可以??一行?他?除,??下次要再登入?,就又?再次的出?? (yes/no) 的?面啊!


    Linux Client: sftp
    那?如何使用 SSH FTP 的功能呢?也是很容易啦!就是使用 sftp ?支程式即可!而登入的方式? ssh 相同,都是使用 sftp -l username hostname 或者直接以 sftp user@hosname ???!?行之後?有底下的模?:
    [root@linux ~]# sftp dmtsai@localhost
    Connecting to localhost...
    dmtsai@localhost's password: <== ????入密?啊!
    sftp> <== ??就是在等待您?入 ftp 相?指令的地方了!


    ?入到 sftp 之後,那就跟在一般 FTP 模式下的操作方法?有??了!底下我?就??一?, sftp ??介面下的使用指令吧!

    ???方主?(Server)之行?
    ??目?到 /etc/test 或其他目? cd /etc/test
    cd PATH
    列出目前所在目?下的?名 ls
    dir
    建立目? mkdir directory
    ?除目? rmdir directory
    ?示目前所在的目? pwd
    更改?案或目?群? chgrp groupname PATH
    更改?案或目??有者 chown username PATH
    更改?案或目?的?限 chmod 644 PATH
    其中,644 ??限有?!回去看基?篇!
    建立??? ln oldname newname
    ?除?案或目? rm PATH
    更改?案或目?名? rename oldname newname
    ???端主? exit (or) bye (or) quit
    ??本?(Client)之行?(都加上 l, L 的小? )
    ??目?到本?的 PATH ?中 lcd PATH
    列出目前本?所在目?下的?名 lls
    在本?建立目? lmkdir
    ?示目前所在的本?目? lpwd
    ???料上?/下?的行?
    ??案由本?上?到?端主? put [本?目?或?案] [?端]
    put [本?目?或?案]
    如果是??格式,??案?放置到目前?端主?的目?下!
    ??案由?端主?下?回? get [?端主?目?或?案] [本?]
    get [?端主?目?或?案]
    若是??格式,??案?放置在目前本?所在的目??中!可以使用?用字元,例如:
    get *
    get *.rpm
    亦是可以的格式!

    就整?而言, sftp 在 Linux 底下,如果不考??形介面,那?他已?可以取代 FTP 了呢!因?所有的功能都已?涵?啦!因此,在不考?到?形介面的 FTP ???,可以直接?掉 FTP 的服?,而改以 sftp-server ?提供 FTP 的服?吧! ^_^


    Linux Client: scp
    如果我要在??主?之????案的?,除了 sftp 之外,?有?有更??的方式? 有的,那就是利用 scp ??指令啦!??指令的用法? cp 很相像,不?, 在?端主?的目??法,比?需要注意就是了。?例如下:
    1. ??料由本?上?到?端主?上去
    [root@linux ~]# scp /etc/crontab dmtsai@localhost:/home/dmtsai/
    dmtsai@localhost's password: <== ????入密?啊!
    crontab 100% 620 0.6KB/s 00:00
    # ??例子在?明,我?本?目?的 /etc/crontab ???案?送? dmtsai
    # ??使用者,而??使用者是在 "localhost" 那部主?上面喔!
    # 仔?看一下,?有一????料的?息跑出?喔!

    2. ??料由?端主?下?到本?上!
    [root@linux ~]# scp dmtsai@localhost:~/.bashrc .
    # ??例子?是在?明,我要? localhost 那部?器上的 dmtsai ??人,
    # 他家目?下的 .bashrc ??到我的?器上!


    也就是?,?端主?上的?案或目?要???,是以『 hostname:PATH 』 方式???的~不要??了呦!而如果想要??目?的?,那?可以加上 -r 的??!


    Windows Client: putty
    在 Linux 底下想要?接 SSH 伺服器,可以直接利用 ssh ??指令 ,那?如果在 Windows 作?系?底下,又?如何?接到 SSH 伺服器呢?可以直接使用 putty 或 pietty ???型的????呢,他也是免?的自由??喔!取得的方式可以?考底下的?站:
    putty 官方?站:http://www.chiark.greenend.org.uk/~sgtatham/putty/
    pietty 官方?站:http://www.csie.ntu.edu.tw/~piaip/pietty/
    在 putty 的官方?站上有很多的 client ??可以使用的,包括 putty/pscp/psftp 等等。 他?分???了 ssh/scp/sftp ?三?指令就是了。而上述的三? putty/pscp/psftp 主要是在 Windows 上面?接到 Unix like ?器的 SSH 伺服器的 Client ??呢。?自行下????喔。

    事?上,?哥比?喜?林弘德先生的 pietty,因?????不但是完整支援 putty ,而且提供的文字????富, ?在很好用。在你下?了 pietty 後直接??他, ?有?似底下的?示出?。



    ?二、pietty 的?行?示之一

    在上? 1 的地方?填?相?的主?名?或者是 IP ,2 ?然?必?? SSH 那一?, 至於 3 的地方,?哥比?喜???出?的?式,所以我是????啦!若?有??,按下『??』後, 就?出?如下?式:



    ?三、pietty 的?行?示之一

    很像在主?前面工作吧!而且上??有??可以???整?似字形、字?、字元??等等。 尤其是字元??。有?候你??????案?,竟然?面?中?有??而不是正常的中文?示, 那就是??的??。要解??????,你必?要牢?:

    文字?案本身在存??所挑?的?系;
    Linux 主?本身所使用的?系 (可用 LANG ???整);
    pietty 所使用的?系。
    ?三?咚咚的?系要完全相同?才?正?的?示出中文!千要要牢?啊! 那如何?整 pietty 的中文??呢?



    ?四、pietty 的?行?示之一

    在『??』的『字元??』?面可以挑? big5 或者是 utf8 的中文??, ?他符合你的 Linux ??案所?存的?料格式,那就 OK 的啦! ^_^! 如果想要作更?部的?定?,可以???四上?最底下的那?『???定』?目, 就?出?如下?示。其中更?重要的是『??右?的?字?想要生效』?, 可以按照下?的指示????字?的功能:



    ?五、pietty 的?行?示之一

    如上?所示,在你?入『Apply』之後,就可以自?的生效了!?在你可以按??右?的按?了, 真方便。再?你可以?整 pietty ??的??行?,????料太多?,你依?可以?整???查?之前的?料。 ?定的方法如下:



    ?六、pietty 的?行?示之一

    ?整完了?幕的大小之後,再??是最重要的:『您要以哪一?版本的 SSH 演算法登入?!』前面??,我???是以 version2 ?登入的,所以??我?可以?整? 2 那??目!??每次登入都?以 version 2 的模式登入主?了!



    ?七、pietty 的?行?示之一

    整? pietty 大致上的流程就是??!如此一?,您就可以在 Windows 上面以 SSH 的?定,登入?端的 Linux 主??!粉方便吧! ^_^ ! 那?如果想要中文支援的?,目前 pietty 已?支援中文啦!您可以?入中文喔!不?需要修改一下字元集, ???四的『??』?的『字型』,?出?如下?示:



    ?八、pietty 的?行?示之一

    ?(1)字型?定??明? (2)字集?定?『Big5』,如此一?,您的 pietty 就支援中文的?入?! ^_^
    那?上面我?作的?些?定值都??在哪?啊?呵呵!都??在 Windows 的登???中啊! 您可以在 Windows 的系??中,在『?始』-->『?行』後,出?的框框??入『regedit』, 之後?出?一?大?窗。?在左?的?面?中??『 HKEY_CURRENT_USER --> Software --> SimonTatham --> PuTTY --> Sessions』, 就可以看到您的?定值?! ^_^! ??,也就可以?存您的?定值?~


    Windows Client: psftp
    在 putty 的官方?站上也提供 psftp ?支程式。?一支程式的重??是在於以 sftp ??上 Server 。??的方式可以直接?? psftp ???案,?他直接??,??出?下面的??:
    psftp: no hostname specified; use "open host.name" to connect
    psftp>


    ???候可以填入您要?接上去的主?名?,例如我的?域??路 linux.dmtsai.tw ??主?
    psftp: no hostname specified; use "open host.name" to connect
    psftp> open test.linux.org
    login as: dmtsai
    Using username "dmtsai".
    dmtsai@linux.dmtsai.tw's password:
    Remote working directory is /home/dmtsai
    psftp> <== ??就在等待您?入 FTP 的指令了!


    呵呵!??就登入主?啦!很??吧!然後其他的使用方式跟前面提到的 sftp 一?哩!加油的使用吧!


    Windows Client: Fliezilla
    那? SSH 所提供的 sftp 功能只能利用?文字介面的 psftp ?????有?有?形介面的??呢?呵呵!?然有! 那就是非常有用的 Filezilla ?!Filezilla 是?形介面的一? FTP 用?端??,使用上非常的方便, 至於??的安??使用流程??考 vsftpd 章?的?明喔!


    --------------------------------------------------------------------------------
    ???定 sshd 伺服器

    基本上,所有的 ssh 相??定都放在 /etc/ssh/sshd_config ?面!不?,每? Linux distribution 的???定都不太相同, 所以我?有必要??解一下整??定值的意??何才好!
    [root@linux ~]# vi /etc/ssh/sshd_config
    # 1. ?於 SSH Server 的整??定,包含使用的 port 啦,以及使用的密?演算方式
    # 先留意一下,在??的?案?,只要是被?解的?定值(#),即?『??值!』
    Port 22
    # SSH ??使用 22 ??port,也可以使用多?port,即重?使用 port ???定?目!
    # 例如想要?放 sshd 在 22 ? 443 ,?多加一行?容?:
    # Port 443
    # ??就好了!不?,不建?修改 port number 啦!

    Protocol 1,2
    # ??的 SSH ?定版本,可以是 1 也可以是 2 ,
    # 如果要同?支援?者,就必?要使用 2,1 ??分隔了(Protocol 1,2)!
    # 目前我??建?您,直接使用 Protocol 2 即可!

    #ListenAddress 0.0.0.0
    # ??的主?介面卡!??例子??,如果您有?? IP,
    # 分?是 192.168.0.100 及 192.168.2.20 ,那?只想要
    # ?放 192.168.0.100 ?,就可以?如同下面的?式:
    ListenAddress 192.168.0.100
    # 只???自 192.168.0.100 ?? IP 的SSH??。
    # 如果不使用?定的?,???所有介面均接受 SSH

    #PidFile /var/run/sshd.pid
    # 可以放置 SSHD ?? PID 的?案!左列???值

    #LoginGraceTime 2m
    # ?使用者?上 SSH server 之後,?出??入密?的?面,在??面中,
    # 在多久????有成功?上 SSH server ,就??!若??位??????秒!

    #Compression yes
    # 是否可以使用??指令??然可以?

    # 2. ?明主?的 Private Key 放置的?案,??使用下面的?案即可!
    #HostKey /etc/ssh/ssh_host_key # SSH version 1 使用的私?
    #HostKey /etc/ssh/ssh_host_rsa_key # SSH version 2 使用的 RSA 私?
    #HostKey /etc/ssh/ssh_host_dsa_key # SSH version 2 使用的 DSA 私?
    # ??得我?在主?的 SSH ??流程?面?到的,??就是 Host Key ~

    # 2.1 ?於 version 1 的一些?定!
    #KeyRegenerationInterval 1h
    # 由前面??的?明可以知道, version 1 ?使用 server 的 Public Key ,
    # 那?如果?? Public Key 被偷的?,?不完蛋?所以需要每隔一段??
    # ?重新建立一次!??的???秒!不?我?通常都?使用 version 2 ,
    # 所以???定可以被忽略喔!

    #ServerKeyBits 768
    # ??!??就是 Server key 的?度!用??值即可。

    # 3. ?於登??的?息?料放置? daemon 的名?!
    SyslogFacility AUTHPRIV
    # ?有人使用 SSH 登入系?的?候,SSH?????,????要??在什? daemon name
    # 底下???是以 AUTH ??定的,即是 /var/log/secure ?面!什??忘?了!
    # 回到 Linux 基? 去翻一下。其他可用的 daemon name ?:DAEMON,USER,AUTH,
    # LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,

    #LogLevel INFO
    # 登???的等?!嘿嘿!任何?息!同?的,忘?了就回去?考!

    # 4. 安全?定?目!?重要!
    # 4.1 登入?定部分
    PermitRootLogin no
    # 是否允? root 登入!??是允?的,但是建??定成 no!

    #UserLogin no
    # 在 SSH 底下本?就不接受 login ??程式的登入!

    #StrictModes yes
    # ?使用者的 host key 改?之後,Server 就不接受??,可以抵?部分的木?程式!

    #RSAAuthentication yes # 是否使用?的 RSA ??!???? version 1 !
    #PubkeyAuthentication yes # 是否允? Public Key ??然允?啦!??? version 2

    #AuthorizedKeysFile .ssh/authorized_keys
    # 上面??在?定若要使用不需要密?登入的???,那?那???的存放?案所在?名!
    # ???定值很重要喔!?名?他?一下!

    # 4.2 ??部分
    #RhostsAuthentication no
    # 本?系?不使用 .rhosts,因??使用 .rhosts太不安全了,所以??一定要?定? no

    #IgnoreRhosts yes
    # 是否取消使用 ~/.ssh/.rhosts ?做???!?然是!

    #RhostsRSAAuthentication no #
    # ????是??? version 1 用的,使用 rhosts ?案在 /etc/hosts.equiv
    # 配合 RSA 演算方式??行??!不要使用啊!

    #HostbasedAuthentication no
    # ???目?上面的?目?似,不?是? version 2 使用的!

    #IgnoreUserKnownHosts no
    # 是否忽略家目??的 ~/.ssh/known_hosts ???案所??的主??容?
    # ?然不要忽略,所以??就是 no 啦!

    PasswordAuthentication yes
    # 密????然是需要的!所以??? yes ?!

    #PermitEmptyPasswords no
    # 若上面那一?如果?定? yes 的?,?一?就最好?定? no ,
    # ???目在是否允?以空的密?登入!?然不?!

    ChallengeResponseAuthentication no
    # 允?任何的密???!所以,任何 login.conf ?定的??方式,均可?用!
    # 但目前我?比?喜?使用 PAM 模??忙管理??,因此????可以?定? no 喔!
    UsePAM yes
    # 利用 PAM 管理使用者??有很多好?,可以???管理。
    # 所以??我?建?您使用 UsePAM 且 ChallengeResponseAuthentication ?定? no
     
    # 4.3 ? Kerberos 有?的???定!因?我??有 Kerberos 主?,所以底下不用?定!
    #KerberosAuthentication no
    #KerberosOrLocalPasswd yes
    #KerberosTicketCleanup yes
    #KerberosTgtPassing no
     
    # 4.4 底下是有?在 X-Window 底下使用的相??定!
    X11Forwarding yes
    #X11DisplayOffset 10
    #X11UseLocalhost yes

    # 4.5 登入後的?目:
    PrintMotd no
    # 登入後是否?示出一些??呢?例如上次登入的??、地?等等,??是 yes
    # 亦即是列印出 /etc/motd ???案的?容。但是,如果?了安全,可以考?改? no !

    PrintLastLog yes
    # ?示上次登入的??!可以啊!??也是 yes !

    KeepAlive yes
    # 一般而言,如果?定??目的?,那? SSH Server ??送KeepAlive 的?息?
    # Client端,以?保?者的??正常!在??情?下,任何一端死掉後,SSH可以立刻知道!
    # 而不?有僵?程序的?生!

    UsePrivilegeSeparation yes
    # 使用者的?限?定?目!就?定? yes 吧!

    MaxStartups 10
    # 同?允???尚未登入的???面??我??上 SSH ,但是尚未?入密??,
    # ???候就是我?所?的???面啦!在?????面中,?了保?主?,
    # 所以需要?定最大值,??最多十????面,而已?建立??的不?算在?十??中

    # 4.6 ?於使用者抵?的?定?目:
    DenyUsers *
    # ?定受抵?的使用者名?,如果是全部的使用者,那就是全部?吧!
    # 若是部分使用者,可以????填入!例如下列!
    DenyUsers test

    DenyGroups test
    # ? DenyUsers 相同!?抵???群?而已!

    # 5. ?於 SFTP 服?的?定?目!
    Subsystem sftp /usr/lib/ssh/sftp-server


    基本上,CentOS ??的 sshd 服?已?算是挺安全的了,不??不?! 建?你 (1)? root 的登入?限取消; (2)? ssh 版本?定? 2 。 其他的?定值就?您依照自己的喜好??定了。通常不建??行?便修改啦! 另外,如果您修改?上面???案(/etc/ssh/sshd_config),那?就必需要重新??一次 sshd ?? daemon 才行!亦即是:
    /etc/init.d/sshd restart

    --------------------------------------------------------------------------------
    ?作不用密?可立即登入的 ssh 用?:

    咦!既然 SSH 可以使用 Key ?比??料,?且提供使用者?料的加密功能, 那?可不可能利用?? Key 就提供使用者自己?入主?,而不需要?入密?呢? 呵呵!好主意!我?可以? Client ?生的 Key ?他拷?到 Server ?中,所以, 以後 Client 登入 Server ?,由於?者在 SSH 要??的????中,就已?比?? Key 了, 因此,可以立即?入?料??介面中,而不需要再?入密?呢!在?作上的步?可以是:
    首先,先在 Client 上面建立 Public Key 跟 Private Key ??把?匙,利用的指令? ssh-keygen ??命令;
    再?,? Private Key 放在 Client 上面的家目?,亦即 $HOME/.ssh/ , ?且修改?限??有? User 可?的??;
    最後,?那把 Public Key 放在任何一?您想要用?登入的主?的 Server 端的某 User 的家目??之 .ssh/ ?面的???案即可完成整?程序。
    ?是好像很困?的?子,其?步?真的很??,我?依序??行作?好了!假?前提:
    Server 部分? linux.dmtsai.tw ?部 192.168.0.2 的主?,欲使用的 User ? test ????;
    Client 部分? test2.dmtsai.tw ?部 192.168.0.100 PC 的 test2 ????, 他要用?登入 192.168.0.2 ?部主?的 test ????。
    在 Client 端建立 Public ? Private Key :
    建立的方法真的是??到不行!直接在 192.168.0.100 ?? Client 上面,以 test2 ????,使用 ssh-keygen ??指令??行 Key 的?生即可!不?,需要注意的是, version 1 ? version 2 使用的密?演算方式不同,此外, version 2 提供??密?演算的方法,我?????? version 2 的 RSA ??演算方法?行?明!
    [test2@test2 ~]$ ssh-keygen -t rsa <==??步?在?生 Key pair
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/test2/.ssh/id_rsa): <==??按下Enter
    Enter passphrase (empty for no passphrase): <==??按 Enter
    Enter same passphrase again: <==再按一次 Enter
    Your identification has been saved in /home/test2/.ssh/id_rsa. <==?是私?
    Your public key has been saved in /home/test2/.ssh/id_rsa.pub. <==?是公?
    The key fingerprint is:
    c4:ae:d9:02:d1:ba:06:5d:07:e6:92:e6:6a:c8:14:ba test2@test2.linux.org
    # 注意: -t 指的是『使用何?密?演算方式?』由於我?使用 RSA ,
    # 所以直接?入 -t rsa 即可建立?支 Keys !
    # 此外,建立的?把 Keys 都放置在家目?下的 .ssh ??目?中!
    # 察看一下??把 Keys 吧!

    [test2@test2 ~]$ ll ~/.ssh
    total 12
    -rw------- 1 test2 test2 887 Nov 12 22:36 id_rsa
    -rw-r--r-- 1 test2 test2 233 Nov 12 22:36 id_rsa.pub
    -rw-r--r-- 1 test2 test2 222 Oct 31 11:20 known_hosts


    ?注意上面喔,我的身份是 test2 ,所以?我?行 ssh-keygen ?, 才?在我的家目?底下的 .ssh/ ??目??面?生所需要的?把 Keys ,分?是私?(id_rsa)?公?(id_rsa.pub)。另外一?要特?注意的就是那? id_rsa 的?案?限啦!他必?要是 -rw------- 才好!否??容被人家知道了,那?您的 Keys 不就有可能外?了?所以?特?留意他的?限喔! 那?那? id_rsa.pub ?是『公?!』???案必?要被放置到 Server 端才行!


    在 Client 端放置私?:
    在??的?件中,我?的私?必需要放置在家目?底下的 .ssh ?面,那?如果是 version 2 的 RSA 演算法,就需要放置在 $HOME/.ssh/id_rsa ?中!咦!?好使用 ssh-keygen 就是已??生在??目?下了,所以自然就不需要去?整他了!以我的 test2.dmtsai.tw ?看,那?我的?案就?放置在 /home/test2/.ssh/id_rsa ???案就是私?啦!


    在 Server 端放置可以登入的公?:
    既然我?要? test2 可以用 test ????登入 linux.dmtsai.tw ?部主?,那??部主?自然需要保有 test2 的 public key ?!?的!所以我?必需要? Client 端建立的 id_rsa.pub ?案?他拷?到 linux.dmtsai.tw ??的 test ??使用者的家目?之下!那?如果您??得上面的 sshd_config ???案的?定的?,那???就?得『 AuthorizedKeysFile 』???定吧!是的! 在被登入的主?的某???,他的公?放置的?案名???就是???目所??的!而他??的?名就是 authorized_keys ???案名?啦!那???怎?做呢?
    1. 先在 Client 端以 sftp ?公??到 test 上面去!
    [test2@test2 ~]$ cd ~/.ssh
    [test2@test2 .ssh]$ scp id_rsa.pub test@192.168.0.2:~/
    test@192.168.0.2's password:
    id_rsa.pub 100% 233 0.2KB/s 00:00

    2. 到 Server 上面,?公??存到 authorized_keys ?案中!
    [test@linux ~]$ cd ~/.ssh
    [test@linux .ssh]$ cat ../id_rsa.pub >> authorized_keys


    ?注意上面的?器!由於 authorized_keys 可以保存相?多的公??容,因此, 可以使用 >> 的方式?? Client 端的公?新增到??案?!呵呵!做完?一步一後,未? test2 就可以直接在 test2.dmtsai.tw 以
    [test2@test2 ~]$ ssh test@linux.dmtsai.tw


    ??就可以不需要?入密??!但是?注意, test 不能以 test2 登入 test2.linux.org 喔!
    很??的步?吧!??一?,就可以不需密?的手?了!??如何,您要?得的是:

    Client 必??作出 Public & Private ??把 keys,且 Private 需放到 ~/.ssh/ ?;
    Server 必?要有 Public Key ,且放置到使用者家目?下的 ~/.ssh/authorized_keys;
    未?,?您?想要登入其他的主??,只要?您的 public key (就是 id_rsa.pub ???案) ?他 copy 到其他主?上面去,?且新增到某??的 ~/.ssh/authorized_keys ???案中!哈哈!成功!



    --------------------------------------------------------------------------------
    安全?定:

    老??,大家都被『SSH 是?安全的服?』所欺?了!其? sshd ?不怎?安全的!翻? openssh 的?去?史?看,??有很多人是利用 ssh 的程式漏洞?取得?端主? root 的?限,?一步黑掉?方的主?!

    sshd 之所?的『安全』其?指的是『 sshd 的?料是加密?的,所以他的?料在 Internet 上面???是比?安全的。 至於 sshd ??服?本身就不是那?安全了!所以?:『非必要,不要? sshd ? Internet ?放可登入的?限,?量?限在??小???的 IP 或主?名?即可! ?很重要的喔!

    好了,那??於安全的?定方面,有?有什?值得注意的呢??然是有啦! 我?可以先建????目吧!分?可以由:
    /etc/ssh/sshd_config
    /etc/hosts.allow, /etc/hosts.deny
    iptables
    ?三方面?著手?行!底下我?就?一?吧!


    /etc/ssh/sshd_config
    一般而言,???案的???目就已?很完?了!所以,事?上是不太需要更?他的! 但是,如果您有些使用者方面的??,那?可以??修正一些??呢!
    禁止 root 的登入:
    任何?候,不? root 以?端??的方式登入,都?是一?好主意!所以???建?大家直接? root 的登入?限拿掉吧!所以,可以修改 /etc/ssh/sshd_config ???案的?容?:
    [root@linux ~]# vi /etc/ssh/sshd_config
    PermitRootLogin no <== ?他改成 no 吧!
    [root@linux ~]# /etc/init.d/sshd restart


    如此一?,以後 root 就不能以 ssh 登入?!???是比?好的啦! ^_^


    不?某?群?登入:
    有些特殊情?中,我?想要?使用者只能使用 sendmail, pop3, ftp 等,但是不希望他可以?端????,那?您可以??做:

    1. ??些使用者都??在某一?特殊群?之下,例如 nossh ??群?好了;
    2. 在 /etc/ssh/sshd_config ?中加入?一行:『 DenyGroups nossh 』
    3. 重新?? sshd : /etc/init.d/sshd restart

    ??就OK啦!


    不?某?使用者登入:
    跟 DenyGroups ?似,使用 DenyUsers 即可!?考 sshd_config 的?定喔!
    /etc/hosts.allow 及 /etc/hosts.deny
    ??的方法就是:
    [root@linux ~]# vi /etc/hosts.allow
    sshd: 192.168.0.1, 192.168.0.2, 192.168.0.3, 192.168.0.4, 192.168.0.5: allow

    [root@linux ~]# vi /etc/hosts.deny
    sshd : ALL : spawn (/bin/echo Security notice from host `/bin/hostname`; \
    /bin/echo; /usr/sbin/safe_finger @%h ) | \
    /bin/mail -s "%d -%h security" root@localhost & \
    : twist ( /bin/echo -e "\n\nWARNING connectin not allowed.". )



    iptables
    多??保?也很好的!所以也可以使用 iptables 喔!?考: ?易防火?架? 一文?!
    最後,『?哥呼?大家,不要?放 SSH 的登入?限?所有 Internet 上面的主?~』 ?很重要喔~因?如果?方可以 ssh ?入您的主?,那?......太危?了~

    --------------------------------------------------------------------------------
    XDMCP 伺服器

    考?一?情?,如果您的 Linux 主?上面主要是用?作??形?理?,而且同?有多人需要用到那?功能, 那?一部 Linux 是否一次?能提供一?人?理那???呢?嘿嘿!那可不一定喔!因? Linux 有相??秀的 X Window System 啊!


    --------------------------------------------------------------------------------
    X Window 的 Server/Client 架?

    X Window System 的架??於常常玩?路的朋友??(?也包括?哥啦! @_@)?在不太好理解~ 因? X Window System 在?作的?程中,同?包含了 X Server ? X Client ????西, 但是他的作用???路主?的 Server/Client 架?大?其趣喔~先??? X Server/Client 所??的?西:
    X Server: 他主要??的是?幕?面的????示。 X Server 可以接收?自 X client 的??, ??些????呈???面在?幕上。此外,我?移?滑鼠、???料、由???入?料等等, 也?透? X Server ???到 X Client 端,而由 X Client ?加以?算;\r

    X Client: 他主要??的是?料的?算。 X Client 在接受到 X Server ??的?料後,??由本身的?算,而得到滑鼠??要如何移?、 ??的?果??要出?什??的?料、???入的?果??要如何呈?等等, 然後??些?果告知 X Server ,?他自行去??到?幕上。
    ???可以理解??也就是?,我?移?滑鼠或敲打???, X server 可以接受到?些硬?所?入的?料, 但他不知道??要怎?作才好,就把?些?料告? X Client ,此?, X Client 就???些?料?算, 最後得到滑鼠??要如何移????的?料??要如何呈?,???些?果告知 X Server , 而 X Server 就??由 X Client 的告知,而?那些???料在?幕上面呈?出?。

    事?上, X Server ? X Client 通常是在同一部?器上面的, 例如我?在 Linux 上面?行有名的 KDE ??桌面一?。 但是 X Server/Client ?不必然一定要在同一部?器上的, 也就是?,我?可以透??路?接?部主?的 X 系?呢! ?也是最早 X 系????的概念。不?,???候的 X server 指的是哪一部呢?

    ??例子??,我?可以在 Windows 系?上面?行一套 X Win32 的??, 他可以?接到 Linux 的 X 上?而?使用者以?形介面登入 Linux 。 此?,因?『X Win 32』主要是在?幕上面?示,他的做用就是?幕??,因此他是 X Server 。 不信的?,等一下我???底下的?料?,您???,?? X win32 ?套??後, 在 Windows 系?上就?出? port 6000 ?? X server 的 port 呢~而???候 X Win 32 ??其?就是?接到 Linux 的某?程序,我?等一下要介?的 XDMCP 就是其中一?。 ?? XDMCP 可以? X Win32 ?送??的?料?算成可以??的??而回?? X win 32 那套??, 此?的 XDMCP 程序就是一? X Client ?~

    所以啦!如果您的 Windows 想要?接到 Linux 主?的?,那? Windows 就得要有可以?行的 X Server ??啦~ 而 Linux 主??必?要??一?可以接受 X Server ?料?算的 X Client 啦~ 就是???~

    但是,??做有什?好?呢?呵呵~最大的好?就是,在伺服器上的 X Client 不需要知道 X Server 的硬?是什?~因????示的是 X server 的事情,管理硬?的?作也是 X server 在做, 在主?上的 X Client 只是??些滑鼠移?????有??的?入等的?料在主?端?算後, 最後??果?送? X Server ?示而已。(?然啦, X Client 的?算?容?是?用到主?端的?定??函式?就是了。)



    ?九、X server/client 的架?

    那?什??候?出?多使用者?入 X 主?的情?呢?以?哥的例子??,我???室有一部 Linux 在?行?值模?, 他?出的?果是 NetCDF ?案,我?必?使用 PAVE ?一套??去?理?些?料, 以??等?度?等等的。但是我?有?三?人同?都?使用到那?功能, 偏偏 Linux 主?是放在?架??面的,要我??在那?小小的空?前面『站著』操作??, 可真是?人?啊~???候,我?就?架??形介面的?端登入伺服器, ?我?可以『多人同?以?形介面登入 Linux 主?』?操作我?自己的程序! 很棒,不是??!



    --------------------------------------------------------------------------------
    ?定 XDMCP

    XDM 是 X Display Manager 的??,他的功能是什?呢? ??的?,就是管理操控 X Server 的?示啦~他主要有??管理方式, 如果 X Server/Client 在同一部?器上,那??? xdm 之後,就??生一? X server 了; 而如果 X server/client 不在同一部主?上面,那??? xdm 後,他就?透??路去管理?端那部主?的 X server 了。而 XDMCP (X Display Manager Control Protocol) 就是?????自?路上面?於 xdm 的要求的啦~

    由 X11 (CentOS 使用的是 Xorg ????的 X11)提供的 display manager ? xdm ,?定?在 /etc/X11/xdm/xdm-config , 而著名的 KDE ? GNOME 也都有自己的 display manager 管理程序,分?是 kdm ? gdm , ?定??是 /etc/X11/xdm/kdmrc ? /etc/X11/gdm/gdm.conf (不同的 distribution ???案放置的目?不太一?)。我?可以透?三者中任何一者的 display manager 的?定???? xdmcp ???定呢~

    要?用 xdmcp 的功能真的很??,如果您要?用 xdm 的?,修改 /etc/X11/xdm/xdm-config ???案, 找到底下?一行(一般在最後一行):
    DisplayManager.requestPort: 0


    ?他修改成?:
    !DisplayManager.requestPort: 0


    亦即是?解掉,然後再重新?? xdm 就好了。而 kdm ? gdm 的?定也?似,底下?哥主要以 kdm ??行 xdmcp 的架?。不?要注意的是,即使在 Linux 主?端不?用 X Server (port 6000) 也是可以正???的提供 X 介面的登入的~就如同上面提到的概念一般~ 但是,如果要?得比?正?的?息,那??是建?您,?用 kdm ?一?正?的?? X , 只是安全性上面就要注意一些了!好了,多??益,??作吧!
    1. 先? kdm 支援 xdmcp 模式
    [root@linux ~]# cd /etc/X11/xdm
    [root@linux xdm]# vi kdmrc
    [Xdmcp]
    Enable=1
    # 大?是在 70 行左右。不要?疑!真的只要??就好了!

    2. ? client 可以透? X ?登入系?!??限有?的?定
    [root@linux xdm]# vi Xaccess
    *
    # ?了安全性上面的需要,想要登入 X 的?,得要通????案的??才行。
    # 找到上面?一行,如果?有?一行的?(整行只有一? * ),
    # 就自行加入。?表示『不??自哪?,我都接受 X 登入』的意思!

    3. ?? kdm 喔!
    [root@linux xdm]# /etc/init.d/xfs start
    # 就如同我?上面提到的, kdm ?行後,可能的?,?在本?端??一? X server 的,
    # 而我??一版的 Xorg 要?利的??,得要先?用 X font Server 才行,
    # 否?的?,您就得要到 /etc/X11/Xorg.conf ?面去?定好每?字型的路?才行。
    [root@linux xdm]# kdm
    [root@linux xdm]# netstat -tlunp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 5920/X
    tcp 0 0 :::6000 :::* LISTEN 5920/X
    udp 0 0 :::177 :::* 5918/kdm
    # 要看到有 177 的 udp port 出?才行~ 因?那是 xdmcp ?定的??埠口。
    # 不?,如果要看看是否有成功?? X 的?,就得要查? 6000 ?? port ?~
    # 如果?有看到 port 6000 的?,?查? /var/log/Xorg.0.log 喔!
    # 如果想要?定??就自??行的?,可以利用 chkconfig 加入 xfs ,
    # 也可以? kdm ??指令?到 /etc/rc.d/rc.local ???案中~


    ?然是非必?的,不??了避免困?,???是得要提醒大家。(因? CentOS 不需要?? X 就能?提供 xdmcp 登入) ?哥上面的??是在 run level ? 3 的?境下,且整?在?行的?候, /var/log/messages ? /var/log/Xorg.0.log ????案?容中??有 kdm 的相????息~ 很重要啊!因?某些套件如果?有成功的?? X ?,他就?法提供登入呢~



    --------------------------------------------------------------------------------
    用?端登入

    用?端是 Linux 主?:
    如果想要?行 XDMCP 提供的 X 介面的登入 Linux 主??,在 Linux 底下可是容易的很~ 底下的流程是在『用?端』?行的喔~不是??那部 XDMCP 所在的 Linux 主?啦!
    0. ??必要在 X Window ?中,?入 X Window 的方式有:
    [root@client ~]# startx
    # 或
    [root@client ~]# init 5
     
    1. 在 X Window 的?面?中,?用一? shell ,然後?入:
    [root@client ~]# xhost + 192.168.1.100
    192.168.1.100 being added to access control list
    # 假?我??那部 Linux 主?的 IP ? 192.168.1.100
    [root@client ~]# init 3 <== ?? X Server

    2. 在文字介面下?入:
    [root@client ~]# X -query 192.168.1.100
    # ?入 X Window ?!


    如果一切?利的?,您??就能?到 X Window 的?面底下去登入?端主??~


    用?端是 Windows 主?:
    如果想要?行 XDMCP 提供的 X 介面的登入 Linux 主??,在 Windows 底下就得要使用其他???支援了。例如:
    X-Win32 (http://www.starnet.com/evalkey/)
    Exceed (http://www.hummingbird.com/products/nc/exceed/index.html?cks=y)
    ???哥用 X-Win32 ??行??。正??作流程是??的:
    安? X-Win32 ,很??~就是直接?行下一步即可。比?可惜的是,????目前?有中文支援喔!

    直接在『?始』-->『程式集』-->『X Win 32』?行『X-Win32』?支程式~?出?如下?:



    ?十、X Win 32 ?行?例

    上面只是在告?我?,????需要??。但是我?只是?用而已,所以可以直接按下 Evaluation 即可。 不?,?用版有??三十分?的限制就是了~@_@


    在出?的?窗?中,?然要?? XDMCP ??模式?~



    ? 11 、X Win 32 ?行?例


    因?我?可以直接?予一? X server 的 IP,所以??我?可以??『Query』???目。 如果您是在 LAN ?境?中,而且 Client/Server 是在同一??段?,其?可以?? Broadcast 比?好用!??如何,???哥先以 Query ?介?。



    ? 12 、X Win 32 ?行?例


    接下?的?面可以填入 IP 或主?名?啊!建?直接?入 IP 啦!



    ? 13 、X Win 32 ?行?例


    接下?的?面只要填入一???的好?得名?即可!如果想要立即?行的?,那?『Launch this session now』 可以直接打勾喔!



    ? 14 、X Win 32 ?行?例


    理?上,????就可以立即的?行??到 X Window Server 才?。不?,如果?有成功呢? ???!我?可以重新?修改一下?定啊~如果?行了 X-Win32 之後,在工作列的右下角?出? X ?示, 如下所示:



    ? 15 、X Win 32 ?行?例

    ?滑鼠指?移?到 X 上?,按下右?,可以得到如下的??出?:



    ? 16 、X Win 32 ?行?例

    在上?上面按下『XConfig』就可以出?底下的?示:



    ? 17 、X Win 32 ?行?例

    然後??我????定好的那? session ,按下『Edit』,就可以?始修改??的?定值?~ 更多的???自行?考 X Win32 ?中的?明。此?,我?可以在工作列的 X 上面,按下左?, ???出?所有可以用的 session ,??? linux.dmtsai.tw 那? session ,如果一切?利, 就?出?如下的?面:



    ? 18 、X Win 32 ?行?例

    ?入??密?之後,嘿嘿!立刻就可以在 Windows 上面看到您 Linux 主?的 X Window ?面了~ 感?吧~ ^_^
    Tips:
    事?上,xdmcp 真的很容易?定的~?哥曾?以 gdm (?定?? gdm.conf) 及 kdm 分??定?, ?行上都?有??。不?,需要特?留意的是,因? X Window ?行的?料量?在是太大了, 所以,如果您在 Internet 上面使用 ADSL ??的?,想要玩??玩意?~ 奉?您:『?想了~』??西主要?是?用在?部?域?中的啦!


    --------------------------------------------------------------------------------
    ?? XDMCP

    如果想要?掉的?,就??做:
    [root@linux xdm]# killall -9 kdm
    [root@linux xdm]# /etc/init.d/xfs stop


    ??就可以? xdmcp ?他?掉?~ ^_^

    --------------------------------------------------------------------------------
    VNC 伺服器

    ?然 xdmcp 就已?很好用了,不?,就以??速度上??,他真的是慢啊~~ ???候,我?可以利用 VNC (Virtual Network Computing) ??好用的咚咚??一步?定我?的 X Window 登入系?喔。

    VNC 必?要透? VNC Server ? VNC client ??的呼相搭配,就可以?行比?快速一?的?料??。 而 VNC 如果想要漂亮的一?的?,也是需要搭配 xdmcp 的啦~因?如果是?粹使用 VNC ?接到 Xorg (或 XFree86) 那???的?面,真的是....有?不好用~

    其? VNC Server ?在主?多?一?程序在等待 Client 的登入要求, 等到 Client 登入之後,才去?行 Window manager 的??。而?? Window manager 的??方式有很多?, 最?春的就是利用 Xorg ??的 twm ???窗管理程式,他真的是不好看~ ?面有?像??:



    ? 19 、使用 twm ??? VNC Server 的?行?例

    真的不很好看喔~那怎???其?我?可以透?更改 VNC 的???定?: xstartup ??定不同的 Window manager , 另外,我?也可以透??用 kdm 或 gdm ???好用的 display manager ?代?管理 Window manager 呢~ ?哥比?喜?使用查? (Query) XDMCP 的方式??? VNC ,而不是直接?? startkde ??程式的?~ 所以,底下我?就直接??定可以?接到 xdmcp 上的 VNC Server 吧!
    1. 先? kdm 支援 xdmcp 模式
    [root@linux ~]# cd /etc/X11/xdm
    [root@linux xdm]# vi kdmrc
    [Xdmcp]
    Enable=1

    2. ? client 可以透? X ?登入系?!??限有?的?定
    [root@linux xdm]# vi Xaccess
    *

    3. ?? kdm 喔!
    [root@linux xdm]# /etc/init.d/xfs start
    [root@linux xdm]# kdm
    [root@linux xdm]# netstat -tlunp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 5920/X
    tcp 0 0 :::6000 :::* LISTEN 5920/X
    udp 0 0 :::177 :::* 5918/kdm
    # 要看到有 177 的 udp port ? port 6000 才行;
    # 如果?有看到的?,就得要查?底下???案的?容,看看???息了!
    # a. 必?查? netstat -tlunp
    # b. 必?查? /var/log/Xorg.log.0
    # c. 必?查? /var/log/messages
    # d. 必?查? /var/log/kdm.log

    4. 用某身份建立 passfile ? VNC ???使用
    # 因? VNC ?的每? port 都是?某特定使用者登入的,因此,
    # 每? VNC server 都??用自己的 port 呢~??最大可?放到 10 ?~
    # ?哥??假?利用 dmtsai ??使用者??行 VNC ,那?他就必?要有底下???作:
    4.1 建立??用密?
    [root@linux xdm]# su dmtsai
    [dmtsai@linux xdm]$ vncpasswd
    Password: <== ????入密?
    Verify: <== 再?入一次~
    # 特?注意,?了安全起?,密?的?度是有限制的!
    # 至少要大於六?字元,且不能???相同~
    # 密?建立後,?在 /home/dmtsai/.vnc/passwd ???案中??了你的密?~
    # 同?,在??目?下,?有?定? xstartup 可以利用喔! ^_^
    4.2 修改?定? xstartup
    [dmtsai@linux xdm]$ vi /home/dmtsai/.vnc/xstartup
    # ????案?的所有?料通通?他?解掉~不需要保留~
    4.3 ??此一身份使用者的?面
    [dmtsai@linux xdm]$ exit

    5. 修改 /etc/sysconfig/vncserver ?案?容
    # ???案是 FC4 ??的?? VNC 的?取?,所以我?可以修改他~
    [root@linux xdm]# vi /etc/sysconfig/vncservers
    # ?原本的?料改成??:
    VNCSERVERS="2:dmtsai"
    VNCSERVERARGS[2]="-geometry 800x600 -query localhost"
    # 意思是?,我?要??一? VNC 在 port 5900+2 即 5902 的意思,

    6. ?? VNC server
    [root@linux xdm]# /etc/init.d/vncserver start
    # 此?在 /home/dmtsai/.vnc/ ?面???有???案您??要注意的,
    # 最重要的就是 dmtasi.linux.dmtsai.tw:2.log ???案,?名的由?是:
    # username.hostname.domainname:[port number].log ,因?我?是?用 5902 ,
    # 所以就有 :2.log 的附?名啦~?必看到?面?有??才行喔~
    # 如果??找不到/usr/X11R6/lib/X11/xserver/SecurityPolicy 的??,先略?不要?~

    7. 查??定?果
    [root@linux xdm]# netstat -tulnp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:5802 0.0.0.0:* LISTEN 15287/Xvnc
    tcp 0 0 0.0.0.0:5902 0.0.0.0:* LISTEN 15287/Xvnc
    tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 15019/X
    tcp 0 0 0.0.0.0:6002 0.0.0.0:* LISTEN 15287/Xvnc
    tcp 0 0 :::6000 :::* LISTEN 15019/X
    tcp 0 0 :::6002 :::* LISTEN 15287/Xvnc
    udp 0 0 0.0.0.0:32924 0.0.0.0:* 15287/Xvnc
    udp 0 0 :::177 :::* 15017/kdm


    ?定好像也很??喔~那??哥?嘛???多原理? 原因?他,因?希望大家可以在不同的 Linux distributions 也能??利的架?好 XDMCP ? VNC ,如果您能?善用登??的?容??, 那????比?容易 debug 的啦~ ^_^

    另外,事?上?? VNC 的 script 是由 vncserver ??指令所?用的, 您也可以直接利用某?身份直接下?:
    [root@linux ~]# vncserver :3

    You will require a password to access your desktops.

    Password: <== 就?入密?吧!
    Verify: <== 再?入密?吧!

    New 'dmtsai.linux.dmtsai.tw:3 (dmtsai)' desktop is dmtsai.linux.dmtsai.tw:3

    Starting applications specified in /root/.vnc/xstartup
    Log file is /root/.vnc/dmtsai.linux.dmtsai.tw:3.log


    如此一?,就可以?用一? port ? 5903 的 VNC 服??~ 您可以再度的去到 logfile 查一查啊~至於??的?,可以用:
    [root@linux ~]# vncserver -kill :3


    ??就能????~呵呵!那?如果想要?接到 VNC Server 的?, 在 Linux 底下可以利用 KDE 的 krdc ?支?端??程式,如果是 Windows 的?, 就得需要 VNC Client ?~您可以前往底下的?站:
    http://www.realvnc.com/download.html
    直接下? Free Edition ???看看就好了。安??程我?就不提了~ 安?完?之後,直接?行『?始』-->『程式集』-->『RealVNC』-->『Run VNC viewer』後, 出?如下的?窗:



    ? 20 、VNC viewer ?行?例

    ?入了您的主? IP ?? VNC ??的 port 之後,?出?一?密??窗:



    ? 21 、VNC viewer ?行?例

    ?得啊~??的密?指的是『您利用 vncpasswd 所建立的密?』,而不是登入者的密?啊~ 按下 Enter 之後,如果?利的?,就?出?如下的?示?~



    ? 22 、VNC viewer ?行?例



    ? 23 、VNC viewer ?行?例

    很不?吧! ^_^ ??就能?在 Client 端登入 Linux 主??~ 而且?可以多人共用呢~真是棒~ ^_^。但是,如果您?定完?之後, 在登??老是出???咚咚: 『XDMCP fatal error: Manager unwilling Host unwilling』, 就是 /etc/X11/xdm/Xaccess ???案的?定需要?更了!

    另外,有些朋友一定??得奇怪,那就是,?甚?我的 VNC 伺服器的 server / client 端?面?不是同步的呢? ?是因? Linux 本身提供多? VNC server ,她?是各自?立的,所以?然就不?? tty7 的?面同步了。 但是如果您想要? Linux 的 tty7 同步的?,可以利用 VNC ?出的? X Server 使用的模??加以?定即可。 如果您是 CentOS 4.x ?? distribution 的?,恭喜您,系???已?? vnc.so ??模??出了,您可以查? /usr/X11R6/lib/modules/extensions/ ???案,即可知道有?有 vnc.so ??模?。如果您?有??模?的?, ??考 http://phorum.study-area.org/viewtopic.php?t=25713 ?一篇文章的?明, 依序??定吧!
    [root@linux ~]# vi /etc/X11/xorg.conf (或 XF86Config)
    Section "Module"
    ....
    Load "vnc"
    EndSection
    # 在 Module ?? section ?中加入 vnc ??模?即可
    Section "Screen"
    Identifier "Screen0"
    Device "Videocard0"
    Monitor "Monitor0"
    Option "passwordFile" "/etc/vnc/passwd"
    DefaultDepth 16
    ......
    EndSection
    # 假?您的 vnc 密??案放置在 /etc/vnc/passwd ??,
    # ???候就得要?密???容?到 Screen ?? section ?中了


    此??他重新??一下 kdm 或者是重新?入 run level 5 的?候,您就???多了一? port 5900 呢, 嘿嘿,??同步登入吧 ^_^



    --------------------------------------------------------------------------------
    RSH 伺服器

    什?是 RSH 伺服器呢?其?,?是早期的不同主?之?互相『直接操作』?方?源的一?方法。 其?就好像使用『 ssh dmtsai@localhost date 』之?的?行方法啦! 我?可以透? rsh ?操作?方主?啊。?? RSH 就是被?? R Shell 的咚咚?~

    目前 RSH 很少被使用到一般的伺服器上面,尤其是? Internet ?放的主?, ?是因? RSH 的危?性很高!他不但是明???,而且一??定不良,可能??所有人都能使用 RSH ?登入主?! 不?,RSH ?是操作?集?? (cluster) ?面最常?的服?之一!

    所?的?集??,??的?就是『?很多部主?透??路??在一起, 以其中一部主?作?主要操控?? (或者?? master) ,其他主?????自 master 的要求 (所以被?? slave);所有的??工作都是由 master 所掌控, slave ????算的部分。』 ?也就是?, slave 大概就?提供 CPU 的?算?元,其他的事都是 master ????作。 ?然,我?也是只要操控 master 那部主要??而已。在??的情?下, slave 接受 master 的指令, 最主要就是透? RSH 啊! (?然,也可以透? SSH 配合金???成??的工作!)。 ?於更多的 cluster 的介?,可以?考一下?哥之前?的一篇小文章:
    http://linux.vbird.org/linux_server/0600cluster.php
    至於 RSH server ? Client 的互?可以使用下面的?示?查?:



    ? 24 、RHS Server/Client 互?示意?

    上?中在 RSH server ?中的???定?是??的:

    /etc/hosts:主要?? RSH server/client 的主?名?? IP ??!
    /etc/hosts.equiv:??出哪一部 client 可以?上?部 RSH server;
    ~user/.rhosts:??出那?使用者可以不需要?入密?即可?行 RSH;
    /etc/pam.d/rsh:?? root 能否使用 RSH 的?定?。
    ?然 RSH 目前已?很少被使用,但是在?部主?的??上面?是有他的存在的?值啦! 因此,底下我?就??一?如何玩弄?? RSH 吧!


    --------------------------------------------------------------------------------
    RSH Server

    其? R Shell 有很多的工具???的 port ,常?的 R Shell 工具有 rexec, rlogin, rsh 等, 而?些工具都??到不同的 port 上面,你可以到 /etc/services 上查?一下 512, 513, 514 ?三? port 吧!


    --------------------------------------------------------------------------------

    RSH Server 的??:
    如? 24 所示,我?在 RSH Client ??上面想要使用 RSH Server 上?的?料?, 那? RSH server 自然就得要?? RSH ??服??!那?如何??呢???的很~ 就利用 super deamon ???, 我?需要有 rsh 及 rsh-server ??套件才行!?自行安?吧! 另外, rsh-server 共提供三?服?,分?是『 rexec, rlogin, rsh 』,我?先???? rsh 吧! 安?完?之後,直接??即可:
    [root@linux ~]# vi /etc/xinetd.d/rsh
    service shell
    {
    disable = no
    socket_type = stream
    wait = no
    user = root
    log_on_success += USERID
    log_on_failure += USERID
    server = /usr/sbin/in.rshd
    }
    # ??!只要? disable 改成 no 即可!

    [root@linux ~]# /etc/init.d/xinetd restart

    [root@linux ~]# netstat -tlnp | grep 514
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 23369/xinetd
    # 有看到 514 的 port 出?就?了!




    --------------------------------------------------------------------------------

    ?定可以使用 RSH 的?源主????: /etc/hosts, /etc/hosts.equiv, ~user/.rhosts
    假?我已?在 /etc/hosts ?面做好了我?部主?的 IP ?主?名?的??了, 例如,我 192.168.1.2 ?器的 /etc/hosts ?面是??的:
    [root@linux ~]# vi /etc/hosts
    127.0.0.1 localhost localhost.localdomain
    192.168.1.2 rsh.server rshserver
    192.168.1.100 rsh.client rshclient
    # 上面?有?部主?,假? RSH server 的 IP 是 192.168.1.2 啦!


    ???案很重要,因?我?的 RSH 通常是利用主?名??作?指令的下?的, 所以?,您?域?路?的主?名?? IP 必?要?定的能???的起?,否???就大了。 在上表?中,你???到,其??哥的重?是那部 rsh.server 的?器, ?我想要? 192.168.1.100 亦即是 rsh.client 那部?器??? rsh.server ?行一些指令的?, 那我就得要???限才行!此?就得要 /etc/hosts.equiv ??理了。???案的格式是??的:
    [root@linux ~]# vi /etc/hosts.equiv
    rsh.client dmtsai
    # ???案的格式是 [hostname] [username]
    # ?你要?放的使用者?某主??他??好?上去即可!


    ??就做好了?定了!未?任何想要登入?部 rsh.server ?器的主?,只要?他的主?名?? IP ???入 /etc/hosts ,然後再??主?名??入 /etc/hosts.equiv ,就成功了! ???案的??只要是在??『可以不用?入密?就能??入本??行指令』的?定啦! 但是?注意,『在??的情?下, root 是不允?使用 rsh 登入 rsh.server ?器的。』??很重要!不要使用 root 一直??啊!?有用的。 更多的 hosts.equiv ?定值,??考 man hosts.equiv ?!

    但你可能???一件事,那就是每部主??使用者都需要配合的?,但 /etc/hosts.equiv ???有 root 可修改, 如此一??在不好管理!此?我?可以使用使用者家目?的?案??理喔!那就是 ~/.rhosts ?! ???案的?定就更??了!只要?使用者??要登入的那部主?名??入即可!
    [root@linux ~]# vi ~dmtsai/.rhosts
    rsh.client


    ??就 OK 啦!意思是?,我?部 rsh.server 上有? dmtsai 的使用者,他可以? rsh.client ??主?登入?且不需要密?即可?行 R Shell 的相?指令下?工作! 同?的,如果我?想?其他使用者可以由不同的主?登入?部 rsh.server ?行 RSH 的?, 同?在他的家目?新增 .rhosts ???案即可!如果想要?未?新增的使用者都具有??功能, 那就??做:
    [root@linux ~]# vi /etc/skel/.rhosts
    rsh.client


    未?新增使用者?,他?的家目?底下就?自??生 .rhosts 的?案?! ^_^


    --------------------------------------------------------------------------------

    ? root 也可以使用 RSH :
    先通知一?,?哥不建?您??做!但是,如果?一您需要某些服?是 root 也需要的, 那或?就得要?放 root 使用 RSH 登入主?了。其? root 不能使用 rsh 是因? PAM 的??而已,所以,你只要? /etc/pam.d/rsh ???案?解掉一行即可:
    [root@linux ~]# vi /etc/pam.d/rsh
    #%PAM-1.0
    # For root login to succeed here with pam_securetty, "rsh" must be
    # listed in /etc/securetty.
    auth required pam_nologin.so
    #auth required pam_securetty.so
    auth required pam_env.so
    auth required pam_rhosts_auth.so
    account required pam_stack.so service=system-auth
    session required pam_stack.so service=system-auth


    ?上面?一行?解掉,立刻就能? root 登入 rsh 主?啦!?然啦,如果您?心有??, 那?修改另一??案也可以:
    [root@linux ~]# vi /etc/securetty
    .....(省略).....
    rsh


    加入?一行也行!注意,上面????案是具有相?性的,所以,您只要修改任何一?即可, 不必??同??行!然後?主?名?? root 的???入 /etc/hosts.equiv ?案中即可!你的 root 就能?使用 rsh ?!但是,?哥?是不很建??放 root 使用 RSH 喔!注意注意!


    --------------------------------------------------------------------------------
    RSH Client

    ?? RSH client 的指令 rsh ??是不? root ?行的!所以不要使用 root ???! 另外, RSH Client 最好? RSH server 具有相同的????行 rsh 比?不?有??喔!


    --------------------------------------------------------------------------------

    ?? RSH :
    接下?,?然要?行???~?到 rsh.client 那部?器上面,使用 rsh ??指令?下?指令吧!
    [dmtsai@rshclient ~]$ rsh [-l ?端??] [?端主?名] [?端主?指令]
    ??:
    -l :一般??, server ? client 『要有相同的使用者??名?』比?好的!
    如果?有的?,那?您必?要指定 server 的使用者??名才行!
    ?端主?名 :您要登入的那部 rsh.server 主?名?,?得? /etc/hosts 相?!
    ?端主?指令:您要在?端?器上面下?什?指令?

    ?例一:在 rsh.server 上面下? ls -l / ??指令:
    [dmtsai@rshclient ~]$ rsh rsh.server 'ls -l /'
    .....?出省略.....
    # 注意喔,我是使用 dmtsai ??一般身份使用者,而且 rshserver rshclient
    # ?部主?上面都有一?名? dmtsai 的使用者??才行喔!至於那? ls -l /
    # ?是在 rsh.server 主?上面的指令!留意留意!


    一般??,由於 RSH server/client 最好是要有相同的??,如此一?才能?避免很多不必要的?限??( permission denied. )。所以?,通常 RSH 可能?搭配後?????到的 NIS/NFS 等伺服器才是! ???呼?

    另外, rsh 後?的指令通常??合?一指令而已,所以如果你的指令串很? (接了很多??), 那最好?那一整串指令用?引?括起?,可以避免指令下???的??喔! ^_^



    --------------------------------------------------------------------------------

    利用 rcp ??:
    除了 rsh 可以在?端直接操控系?外,我?可以透? rcp ??行??喔!其??? rcp ? scp ?乎一模一?啦! 而且 rcp 的???乎? cp 一模一?哩!另外, rcp 也是透? RSH ?? 514 的 port ??行?料的??的。 ??的?明如下:
    ?例:先查??端主?有什??料,然後?他????:
    [dmtsai@rshclient ~]# rsh rsh.server 'ls -l ~'
    drwx------ 3 dmtsai dmtsai 4096 Dec 27 2005 Desktop
    -rw-r--r-- 1 dmtsai dmtsai 3385 May 29 17:52 bashrc
    drwx------ 3 dmtsai dmtsai 4096 Mar 6 2006 mail
    -rw-r--r-- 1 dmtsai dmtsai 883888 May 29 17:51 netcdf.tar.gz
    drwxr-xr-x 2 dmtsai dmtsai 4096 Jul 26 16:05 test
    -rw-rw-r-- 1 dmtsai dmtsai 34816 Mar 19 2006 testing.ppt

    [dmtsai@rshclient ~]# rcp -r dmtsai@rsh.server:~/mail .
    # 加上 -r 是?了要??目?喔!否?的?,可以直接??即可!


    再?一次,其??? RSH 目前?有在某些特殊的?合才?用到了! 例如未?流行的新??『 Cluster 』!不?如果要玩 Cluster 的?, 得要加入 NIS/NFS 等伺服器哩!那就等您好好?展啦! ^_^

    --------------------------------------------------------------------------------
    以 rsync ?行同步?相?份

    我?曾在基?篇?面?? Linux 的?份策略, ?篇曾介?常用的?份指令,包括 tar, dd, cp 等等,不????未介??路,所以有?很棒的?路工具?有介?, 那就是??地方要?到的 rsync 啦!?? rsync 可以作?一?相?棒的?地?援系?的?份指令喔! 因? rsync 可以?到?似『?相 (mirror) 』的功能呢!

    rsync 最早是想要取代 rcp ??指令的,因? rsync 不但??的速度快,而且他在???, 可以比?本地端??端主?欲??的?案?容,而????端有差?的?案而已,所以??的??就相?的降低很多! 此外, rsync 的??方式至少可以透?三?方式??作:\r

    在本?上直接?作,用法就? cp ?乎一模一?,例如:
    rsync -av /etc /tmp (? /etc/ 的?料?份到 /tmp/etc ?)


    透? rsh 或 ssh 的通道在 server / client 之??行?料??,例如:
    rsync -av -e ssh user@rsh.server:/etc /tmp (? rsh.server 的 /etc ?份到本地主?的 /tmp ?)


    直接透? rsync 提供的服? (daemon) ???,此? rsync 主?需要?? 873 port:
    1. 你必?要在 server 端?? rsync , 看 /etc/xinetd.d/rsync 即可;
    2. 你必??? /etc/rsyncd.conf ?定?;
    3. 你必??定好 client 端??的密??料;
    4. 在 client 端可以利用:rsync -av user@hostname::/dir/path /local/path

    其?三???模式差?在於有?有冒? (:) 而已,本地端??不需要冒?,透? ssh 或 rsh ?,就得要利用一?冒? (:), 如果是透? rsync daemon 的?,就得要??冒? (::) ,??不?理解啦!因?本地端?理很??, 而我?的系?本?就有提供 ssh 的服?,所以,底下?哥?直接介?利用 rsync 透? ssh ??份的?作喔。 不?,在此之前咱?先?看看 rsync 的?法吧!
    [root@linux ~]# rsync [-avrlptgoD] [-e ssh] [user@host:/dir] [/local/path]
    ??:
    -v :?察模式,可以列出更多的??;
    -q :? -v 相反,安?模式,?出的??比?少;
    -r :????!可以??『目?』??理!很重要!
    -u :?更新 (update),不?覆?目?的新?案;
    -l :?????的?性,而非??的目?原始?案?容;
    -p :???,?同?性 (permission) 也保存不?!
    -g :保存原始?案的?有群?;
    -o :保存原始?案的?有人;
    -D :保存原始?案的?置?性 (device)
    -t :保存原始?案的????;
    -I :忽略更新?? (mtime) 的?性,?案比?上?比?快速;
    -z :加上??的??!
    -e :使用的通道?定,例如使用 ssh 通道,? -e ssh
    -a :相?於 -rlptgoD ,所以?? -a 是最常用的??了!
    更多?明??考 man rsync 的解?!

    ?例一:? /etc 的?料?份到 /tmp 底下:
    [root@linux ~]# rsync -av /etc /tmp
    ....前面?出省略....
    sent 23007335 bytes received 32280 bytes 5119914.44 bytes/sec
    total size is 22870014 speedup is 0.99
    # 第一次?作??花比?久的??,因?首次建立嘛!如果再次?份呢?

    [root@linux ~]# rsync -av /etc /tmp
    building file list ... done
    sent 77105 bytes received 20 bytes 154250.00 bytes/sec
    total size is 22870014 speedup is 296.53
    # 瞧!立刻就跑完了!??的?料也很少!因?再次比?,?有差?的?案?被??。

    ?例二:利用 dmtsai 的身份,? rsh.server 使用者家目???到 /tmp
    [root@linux ~]# rsync -av -e ssh dmtsai@rsh.server:~ /tmp
    The authenticity of host 'rsh.server (192.168.1.2)' can't be established.
    RSA key fingerprint is 29:b8:a9:32:ea:d8:ff:97:6c:42:3b:aa:11:ab:55:dd.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'rsh.server' (RSA) to the list of known hosts.
    dmtsai@rsh.server's password:
    receiving file list ... done
    ....?案?出省略....
    sent 8436 bytes received 43224862 bytes 2789245.03 bytes/sec
    total size is 43189031 speedup is 1.00

    [root@linux ~]# ll -d /tmp/dmtsai
    drwxr-xr-x 22 dmtsai dmtsai 4096 Sep 18 23:25 /tmp/dmtsai
    # 瞧!??就做好?份啦!很??吧!


    你可以利用上面的?例二?做??份 script 的?考!不?要注意的是, 因? rsync 是透? ssh ????料的,所以你可以?? dmtsai ???伙?作出免用密?登入的 ssh 金?! 如此一?往後?地?援系?就能?自?的以 crontab ??行?份了!??到爆!

    免密?的 ssh ??我?在上?已???了,撰? shell script 的能力也是必?要有的! 利用 rsync ??行你的?份工作吧! ^_^! 至於更多的 rsync 用法可以?考本章後面所列出的?考?料?站喔!



    --------------------------------------------------------------------------------
    重?回?:

    ?端??伺服器可以?使用者在任何一部??登入主?,以使用主?的?源或管理???主?;
    常?的?端登入服?有 rsh, telnet, ssh, vnc, 及 xdmcp 等;
    telnet ? rsh 都是以明????料,??料在 Internet 上面????不安全;
    telnet ? rsh ???法? root 的身份登入,不?可以藉由 pam 模?的修改而?用 root 登入功能;
    ssh 由於使用金?系?,因此?料在 Internet 上面???是加密?的,所以??安全;
    但 ssh ?是?於比?危?的服?,?不要?整? Internet ?放 ssh 的可登入?限,可利用 iptables ??可登入??;
    ssh 的 public Key 是放在主?端,而 private key 是放在 client 端;
    ssh 的???制有??版本,建?使用可????正?性的 version 2 ;
    使用 ssh ?,?量使用?似 email 的方式?登入,亦即: ssh username@hostname
    client 端可以比? server ??的 public key 的一致性,利用的?案? ~user/.ssh/known_hosts;
    ssh 的 client 端??提供 ssh, scp, sftp 等程式;
    在 /etc/ssh/sshd_config ?中可以取消 root 的登入?限?修改支援的 ssh 金?版本;
    ?作不需要密?的 ssh ??可利用 ssh-keygen -t rsa ??作 public, private Key pair;
    上述指令所?作出的 public key 必?要上?到 server 的 ~user/.ssh/authorized_keys ?案中;
    如果想以 X ?形系?登入 Linux 主?,?你必?要在 Client 主??? X server , 需要在 Linux 主??? X client ;
    Xdmcp 是透? X display manager (xdm, gdm, kdm 等) 所提供的功能?定;
    若 client 端? Linux ?,需要在 X ?境下以 xhost 增加可?接到本? X Server 的 IP 才行;
    除了 Xdmcp 之外,我?可以利用 VNC ??行 X 的?端登入架?;
    VNC ???的 port number ? 5900 ?始,每? port ?允?一???;
    控制 rsh client 是否可以???入的?定?在 /etc/hosts.equiv 或 ~username/.rhosts ;
    rsh 支援的 client 端??有 rsh, rlogin, rcp 等;
    rsync 可透? ssh 的服?通道或 rsync --daemon 的方式?????,其主要功能可以透??似?像?份, ??份新的?料,因此???份速度相?快速!

  30. baizx 于 2009-08-10 10:41:04发表:

    中国字啊 我看的懂啊 多个地方保存着 以后方便查看啊

  31. baizx 于 2009-08-10 10:38:54发表:

    申?合法的主?名?[color=Red][/color]



    本章的行前??工作

    在??章??中,我???介?如何申?一?合法的主?名?。目前 Internet 上面使用的主?名?都是透?所?的 DNS 系?,而你想要取得一? DNS 的主?名?,就必?要『??』,所?的『??』就是要?去申?啦! ?然也有免?提供主?名?的服?啦!在??章??中?哥不?介?如何架?一部 DNS 主?, 而是介?如何利用??或免?申?的方式??成主?名?的取得。在?一章?始前,您最好先??一下:

    因?需要安???,你需要知道原始?、tarball 及安?的流程;
    取得主?名?你需要知道?路基?章??的 DNS ?介;
    由於?到很多 IP 的?念,你必?要知道?路基?章??的自?取得 IP ?固定 IP 的意?;
    如果???的?,那就???玩玩!



    --------------------------------------------------------------------------------
    ?何需要主?名?

    如果你已???路基?那一章看完的?,???知道其?我?的 TCP/IP ?境只要有 IP ?正?的路由即可??了。 那?你申?主?名?要?嘛?因?『??法啊!人?太不中用了!』 ?例??,你可以背出?我?常上去查?料的 www.google.com 的 IP ???告!?哥??法背出?~

    因? IP 是那??背的?西,而且,如果您的 IP 又是?似?接的不固定的 IP ?,那?更??筋呢! 因此我?才???以熟悉的英文字串?做?主?名?, 然後?『??主?名?? IP ?成??』,那直接??主?名?就行了,反正 IP 的查?就交???主??做即可! 在??的想法下,我??然就需要有主?名?啦!底下咱?就??一?先!


    --------------------------------------------------------------------------------
    主?名?的由?

    ?上面的?明我?知道因? IP 不好?,所以人???使用主?名??????上某部主?。 好在早期?上?路的???量不多,所以在?路上的人?就想出一???的?法??行主?名?? IP 的??,那就是『在每部??的 /etc/hosts ?面?定好主?名?? IP 的??表』。那?未?人?就可以直接藉由主?名???接上某些?路上的主??!

    然而因?科技的??,?上 Internet 的人?越?越多,使用 /etc/hosts 的方法已?搞不定了(只要一部??上?,全部的 Internet 上面的所有??都要重新改? /etc/hosts!不太好吧!) ,???候?域名?系? ( Domain Name System, DNS ) 就??的出?了!

    DNS 利用?似??目?的型?,?主?名?的管理分配在不同??的 DNS 主??中,?由分?管理,所以每一部主?的??的??就不?很多,而且??上面也相?的容易修改! 那??? DNS 的功能您知道了???啦!就是『???主?的名???成 IP 』就是了!?然?,他的?外功能?很多,?於 DNS 的??的解析部分我??在後?的 DNS 主?架?章??中在持?的加??容,?之, 他的最大功能就是『?有意?的,人??容易??的主?名?(英文字母) ,??成???所熟悉的 IP 位址!』



    --------------------------------------------------------------------------------
    重?在合法授?

    很多朋友都??:『因?我想要架站,所以主?需要有?主?名?, 因此我就得要架? DNS?』是?????然不是?!DNS 是?很?大的架?, 而且是串?在全球的?路?中,除非你?由『??』的手??? DNS 系?承?你的主?名?的存在, 否?你架?的 DNS 只能?是一?『地下??的??站』而已啦!??有用途的。

    那我要如何加入 DNS 系?呢?很??啦!首先你必?要??一????位, ?且?查出你想要??的主?名?是否存在?主?名?是有意?的,?不是你可以?便??的喔! ?例??,在台?常?的?人?站??主?名??: *.idv.tw ,而公司行??可能??? *.com.tw 了!??得要特?留意。至於台?地?的???位很多,你可以??例如 Hinet 或 Seednet 之?的 ISP ???。?然,你也可以??免?的 no-ip.org ???的。

    但要?您特?注意的是,?不是所有的???位都提供??主?名?的??功能, 所以要??前,?『?比三家』啊!?哥所申?的?位分?是?外的 .org 及台?的 Hinet ?家, Hinet 有提供 .idv.tw 的主?名???,?不?。 ?然你也可以使用免?的 no-ip.org ??行主?名?的??!


    Tips:
    在??章??中,?哥的?解比?少,因?很多?料都? DNS 伺服器篇 有重?,在??章??中?哥主要在介??? IP 架站的一???主?名?申?方式啦! ^_^


    --------------------------------------------------------------------------------
    申????是?? DNS 主?名?

    由上面的?明?中,我?可以很清楚的知道 DNS 系?最大的功能就是在主?名??? IP 的??上面。?然啦,??的 DNS ??是用在『固定 IP ??主?名?』 的方法上面的!夭?喔!我?的小站很多都是以非固定 IP (很多人也??浮?式 IP 、?? IP 等等的名?) ?上?的,更有甚者, Hinet 的 ADSL ?接都是 24 小??制??一次的,所以我?都得需要重新?接上?, 而每次?接成功後取得的 IP 可不?得相同啊,如此一? IP 不是一直在??? 那?我不就需要一直跟我上? DNS 主?的管理?申?『?更 IP 』???不?太麻?了??

    是很麻?啊!所以?在?了解?????,很多 ISP 提供了所?的 ?? DNS 主?服? 的功能,他是??做的:
    Client 端(就是您啦)每次??或者是重新?接,?取得一?新的 IP 之後,?向 DNS Server 端提出要求,希望 Server 端?更主?名?? IP 的?? (??步?在每?主要的 ISP 都有提供??的 program ?提供? client 使用);


    Server 端接受 Client 端的要求之後,?先去查? Client 提供的??密?是否正?, 正?之後就?立即修改 Server 本身?於您的主?名?的?定值。
    所以?,每次我?取得了新的 IP 之後,我?的主?名???的 IP 也?跟著在 DNS 系?上面更新, 如此一?,只要?人知道您的主?名?,不?您的 IP ?何,他一定可以?上您的主? (因? IP 跟著您的主?而?!) ??於我???使用?? IP 的人是很有?助的! (阿!真是造福我??些?苦人家的孩子呀!)

    不?,?是需要注意的是,目前的主?名?申?很多是『需要?的』!如果您需要比??定的主?名??? IP 的服?,那?花??????是必?的,不?,如果是??性?的?站,那?也是可以申?免?的?? DNS 系?喔!


    --------------------------------------------------------------------------------
    ??一?合法的主?名?

    ?? DNS 主???:
    好了,既然知道了 DNS 的用途,那?自然我?就需要?申? DNS 啦!不然怎?架??站呢?目前的?? IP ??主?名?的???站?在太多了,我??提出??出?分享就是了!

    台??路??中心:http://www.twnic.net
    ?外的?域名?系?:http://www.netsol.com/
    ?外的?域名?系?:http://www.dotster.com/
    ?? DNS 主???:
    那?有?有免?的 DNS 系?呀!呵呵!?然有?!我?要感?造福我??些?苦人家的孩子的大好人~ 您可以在底下找到相?的??:

    ?外的免? DNS 系?:http://www.no-ip.com


    --------------------------------------------------------------------------------
    ?? DNS ??:以 Hinet ?例

    ?? DNS 的申?方式其?都差不多,都是需要:

    先查?所想要??的?域是否存在;
    ?入 ISP 去申???您所想要的主?名?;
    ??,?等待主?名?被?用。
    我?以台??常?的 Hinet ?? ISP 提供的『?人?域, .idv.tw』??方式??明:



    --------------------------------------------------------------------------------

    登入主?面,?查?欲???域是否存在

    直接??到底下的??去:http://nweb.hinet.net/ ,?在 whois 的?面?中(右上角)??您想要??的主?名?,按下『Go』?始搜?。



    ?一、利用 whois 查?欲???域是否存在


    --------------------------------------------------------------------------------

    逐步?行??

    如果??您的主?名??有被??掉,那?您就可以?始??了!同?的在上面的?站???中, ??『?人?域名?』就可以?始申?了!?依序一步一步?理!??不再?明了,反正都是中文, 看的懂得啦! ^_^



    ?二、?人?域逐步??的流程示意?


    --------------------------------------------------------------------------------

    填?主?名???的 IP

    ??完?之後,我?就可以?始?行主?名?的填?了!在?二的?示中按下『DNS 指定/??』的?目, ?填入您的主?名??密?,然後就?出?如下的?面了:



    ?三、主?名?? IP ??的填??例

    特?的?他留意,因?我??有要架? DNS 主?,所以?然最上方要??『主?』的?目, 然後您可以填入三部主?名?喔!?然,?三部主?名?可以通通指向同一? IP ,也可以不同! ?您的便?!需要注意到的是,您的主?名???是『othername.yourhost.idv.tw』後面的 yourhost.idv.tw 是不?的,前面的 othername ?可以自由?取呢!例如?哥上面的?定,後面均是 vbird.idv.tw ,而前面的名?就可以?我自由??啦!


    --------------------------------------------------------------------------------

    等待 DNS ?用

    在上?三?中按下『填?完?按??』後,就等著?用吧!不??定成功到可以使用, 其?需要一定的??的,以?哥?例,第一次申?之後,大??了 20 小???定才正?的??呢!?以?耐心等候啊!不要太著急?! ^_^


    各家的?域名???流程都差不多,不?,金?是有?差?的,?然,服?也就有不同啊!?哥的 vbird.org ?域名??是在 http://www.godaddy.com ??的喔!如果您不想要使用 .idv.tw ???的?,那??外的 ISP 提供的 DNS 也可以考?看看?!



    --------------------------------------------------------------------------------
    ?? DNS ??:以 no-ip ?例

    如果你跟?哥一?使用 ADSL ?接的方式?上?,?表示你的 IP ??是不固定的!果真如此的?, 那想要架站就比?麻?一?!因?上面利用 Hinet ??的方式通常是?固定 IP 使用的, 你??不?想要天天上去更新你的 IP 吧?此??? no-ip.com 所提供的免??? IP ??主?名?的服?就很重要啦!我?先?申?一?主?名??玩玩吧! ^_^



    --------------------------------------------------------------------------------

    登入主??,?且??一?新??

    你必?要?上 http://www.no-ip.com ???站, 然後在出?的?面?中??『 Sign-up Now 』那??目:



    ?四、 no-ip ?站的??流程之一


    --------------------------------------------------------------------------------

    ?始填????料

    因? no-ip ???您一份密?,所以在出?的如下?面中,您必?要填?『 一?可以收到?件的合法 Email 』,以及您的身份???料, ?很重要,因?後?的?料都是使用您???的??咚咚?!然後再按下最底下的『SIGN UP NOW』即可! 如果?有 Email 怎????在免?的 email ??多,?便申?一?吧! ^_^



    ?五、 no-ip ?站的??流程之二


    --------------------------------------------------------------------------------

    ?用??

    在你申???一?新??後, no-ip ??一封信?你,信件的?容有?像底下那?:



    ?六、 no-ip ?站的??流程之三

    你必?要按下上?第一?箭?所指的??後,你的??才?正式的被?用的! 而上?第二????是在告知你可以到哪?去下??? DNS 的用?端??喔! 也就是?, no-ip 也有提供一?好用的??? client 端,?使用者可以『自?更新主?名?? IP 的??』, 呵呵!很棒吧!


    --------------------------------------------------------------------------------

    登入 no-ip 且?定主?名?? IP 的??

    ?我?回到?四的地方察看一下,不是有可以?入???密?的地方?? ?你填入你?????所填?的 email 位址以及密?後,就能?登入你的 no-ip ??了。 在登入後的第一??面左手?有??似底下的?示:



    ?七、 no-ip ?站的??流程之四

    在你按下那?『add』後,?面就??生如下的?化:



    ?八、 no-ip ?站的??流程之五

    ?依序填?你想要的主?名?、?域名? (通常?哥都建?使用 no-ip.org ?一??域名?!), ?有你的 IP 後,咦!往下一看,竟然?有 MX 的??!??西很重要! 是用在做 mail server ?所需要的一???!你可以直接填??你的完整主?名?相同的名字即可! 填?完?後,就按下『Create Host』吧!如果?主?名?有被使用掉的?, ?幕?出?警告?息,此??再?填另外的主?名?吧! ^_^

    如果未?你想要修改或者是?除?主?名??,可以按下?七?的 Manage ?目, 就能??行?除?修?的工作?!就?????!


    --------------------------------------------------------------------------------

    ?定自?更新主?名?? IP 的??

    如果系?重新??,或者是重新?接取得一?新的 IP 後,我?都要登入 no-ip ?修改的?, 那就太?有效率了!所以 no-ip 提供一?好用的用?端程式?使用者使用,就是在 ?六 email ?的那?下???!你可以???下???, 在出?的?窗?中?有三?程式,包括『 Windows, Mac, Linux/BSD/Unix 』, 我??然是?? Linux 那??目啊!?自行下??且??程式移?到 Linux 主?上吧!

    整?安???用的流程式??的:
    1. ???安?:
    [root@linux ~]# cd /usr/local/src
    [root@linux src]# tar -zxvf /root/noip-duc-linux.tar.gz
    # 假?你?程式放置到 /root 底下?

    [root@linux src]# cd noip-2.1.3
    # 注意一下,??目??面有??名? README.FIRST 的?案,?必察看一下?容!
    [root@linux noip-2.1.3]# make
    [root@linux noip-2.1.3]# make install
    # ????主程式安?在 /usr/local/bin/noip2 而主???放在
    # /usr/local/etc/no-ip2.conf ?中!然後你必?要?始回答一些??:

    Please select the Internet interface from this list.

    By typing the number associated with it.
    0 eth0
    1 eth1
    1 <==因??哥的主??外使用 eth1 介面

    Please enter the login/email string for no-ip.com kiki@gmail.com
    Please enter the password for user 'kiki@gmail.com' ***
    # 上面???是你?????所填?的 email ?密?喔!

    Only one host [tsai.no-ip.org] is registered to this account.
    It will be used.
    Do you wish to run something at successful update?[N] (y/N) n

    mv /tmp/no-ip2.conf /usr/local/etc/no-ip2.conf
    # 重?在此!??你做的?定?被放到上面???案中了!


    ??就?你的 no-ip ?作完?,而且也可以?始??行?!?行的方法也是很??啦!
    2. noip2 的程式使用:
    [root@linux ~]# /usr/local/bin/noip2
    # 不要?疑!???入後,你在 no-ip 上面??的主?名?,
    # 就?始可以自?的?生??了!就????!

    [root@linux ~]# noip2 [-CS]
    ??:
    -C :重新?定??,亦即?定??我?上面?入粗?字的咚咚!
    如果您有??以上的 no-ip 主?名??,就一定需要使用 noip2 -C
    ?重新?定???案!
    -S :?目前的 noip2 的???示出?!

    [root@linux ~]# noip2 -S
    1 noip2 process active.

    Process 4998, started as /usr/local/src/noip-2.1.3/noip2
    Using configuration from /usr/local/etc/no-ip2.conf
    Last IP Address set 61.xxx.111.ddd
    Account kiki@gmail.com
    configured for:
    host tsai.no-ip.org
    Address check every 1 minute, directly connected via /dev/eth1.


    嘿嘿!??就成功了!而且每分? noip2 可以自?的去主?站上面?行更新呢! 真是很不?!那如果想要一??就?? noip2 呢???做即可:
    3. ?定????:
    [root@linux ~]# vi /etc/rc.d/rc.local
    # 加入底下?一行:
    /usr/local/bin/noip2

  32. nsname 于 2009-08-10 10:36:02发表:

    繁文的哦

  33. baizx 于 2009-08-10 10:35:51发表:

    然后是:防火墙与NAT 哦 对了呃 他的网站网址是这个http://linux.vbird.org/ 有的时候我打不开 所以转过来放着!!

    本章的行前??工作

    由於??章??面?到非常多的封包概念,包括 MAC, IP, TCP, UDP, ICMP 等?定, 以及如何抵?外部 IP ?源的防火?基?,?有 IP/netmask 的整??域?法等等。 而?哥?於您??防火?的建?是希望你可以使用 shell script ?撰??本,如此一?可以?你的防火???比?清晰一?。所以在您?始?解底下的?料之前, 希望你可以先???相?的?料了:

    已??? Shell 以及 Shell script;
    已?????路基?那一?章?的?容;
    已????前一篇???路安全;
    已???? 路由器那一章?的?容,?解路由的概念;
    最好?有?部主?以上的小型?域?路?境,以方便??防火?;
    Linux 主?上最好有???卡,可以?行多???,?架? NAT 主?;
    使用 uname -r ??你的核心是 2.4 或 2.6 版;
    若??妥?了,????始?行吧!



    --------------------------------------------------------------------------------
    ??防火?

    ?路安全除了??注意套件的漏洞,以及?路上的安全通?之外,你最好能?依?自己的?境??定防火??制, ???於你的?路?境,?比?有保障一?喔!那?什?是防火?呢? 其?防火?就是在管制?入到我??域?的主?(或者可以?是?域)的?料封包的一??制, 例如我?在前一章????路安全?中提到的 iptables 就是一?防火??制了。?然了,更??的??, 只要能?分析????出我?管理之?域的封包?料,就可以??防火?。

    而??防火?又可以分?硬?防火??本?的??防火?。硬?防火?是由?商??好的主?硬?, ?部硬?防火??的作?系?主要以提供封包?料的???制?主,??其他的功能拿掉。因???作?防火?功能而已, 因此封包??的速度?效率?佳。至於??防火?呢?那就是我???章?要???的啊! ??防火?本身就是在保?系??路安全的一套??(或???制),例如 iptables ? TCP Wrappers 都可以????防火?。

    ??怎?分,反正防火?就是用?保?我??路安全的咚咚就?啦!呵呵!我???章?主要在介? Linux 系?本身提供的??防火?的功能,那就是 iptables 。至於 TCP Wrappers ?前往基?篇的 ??系?服? ?考?考喔!


    --------------------------------------------------------------------------------
    ?何需要防火?

    基本上,如果你的系? (1)已???不需要而且危?的服?; (2)已??整?系?的所有套件都保持在最新的??; (3)?限?定妥?且定??行?份工作; (4)已?教育使用者具有良好的?路、系?操作??。 那?你的系???上已???安全了!要不要架?防火??那就?仁?智?!

    不?,?竟?路的世界是很??的,而 Linux 主?也不是一???的?西, ?不定哪一天你在?行某???的???,主?突然?就??了一??路服?, 如果你?有管制?服?的使用??,那??服?就等於?所有 Internet ?放, 那就麻?了!因??服?可能可以允?任何人登入你的系?,那不是挺危??

    所以?,防火?能作什?呢?防火?最大的功能就是?助你『限制某些服?的存取?源』! ?例??: (1)你可以限制?案??服? (FTP) 只在子?域?的主?才能?使用,而不?整? Internet ?放; (2)你可以限制整部 Linux 主??可以接受客?端的 WWW 要求,其他的服?都??; (3)你?可以限制整部主??能主??外??,?我?主?主???的封包?? (TCP 封包的 SYN flag) 就予以抵?等等。 ?些就是最主要的防火?功能了!

    所以?哥??,防火?最重要的任?就是在??出:

    切割被信任(如子?域)?不被信任(如 Internet)的?段;
    ?分出可提供 Internet 的服??必?受保?的服?;
    分析出可接受?不可接受的封包??;
    ?然啦,咱? Linux 的 iptables 防火????可以?行更?部深入的 NAT (Network Address Translation) 的?定,??行更?性的 IP 封包??功能,不?,?於?一主?的防火???, 最??的任??是上面那三?就是了!所以,你需不需要防火?呢?理?上,?然需要! 而且你必?要知道『你的系?哪些?料?服?需要保?』,??需要受保?的服???定防火?的??吧! 底下我?先??一?,那在 Linux 上?常?的防火??型有哪些?



    --------------------------------------------------------------------------------
    Linux 系?上防火?的主要??

    除了以??及硬?作?防火?的分?之外,我?也可以使用 防火??於?料封包的取得方式??行分?。主要可以分??大?, 分?是代理伺服器 (Proxy) 以及 IP Filter。在代理伺服器方面, 由名?我?就可以知道,代理伺服器?是代理 Client 端去向 Internet 要求?料,所以 Proxy 其?已??可代理的?定限制的很少很少,?且由於?部?外部??的?不能直接互通, 所以可以?到良好的保?效果;另一??是上面提到的 IP fileter 啦!利用封包??的方式??到防火?的目的!


    --------------------------------------------------------------------------------

    IP filter (封包???制)

    直接使用?入本?的 TCP/IP 上面的封包?定??行??分析,例如利用 TCP/IP 封包表?的 IP ?源、 Port number 等?料?行??,以判??封包是否能??入本?取得本??源。由於??方式可以直接分析最底?的封包表??料, 所以包括硬?位址(MAC), ??位址 (IP), TCP, UDP, ICMP 等封包的??都可以?行??分析的功能, 因此用途非常的?泛。

    在 Linux 上面我?使用核心?建的 iptables ???作?防火?封包??的?制, 由於 iptables 是核心?建的功能,因此他的效率非常的高!非常?合於一般小型?境的?定呢! 他利用一些封包??的???定,?定?出什??料可以接收,什??料需要剔除,以?到保?主?的目的喔!



    --------------------------------------------------------------------------------

    Proxy (代理伺服器)

    其?代理伺服器是一??路服? (service, daemon),他可以『代理』使用者的需求, 而代?前往伺服器取得相?的?料。就有?像底下???示吧:



    ?一、Proxy Server 的?作原理?介\r

    以上??例,? Client 端想要前往 Internet 取得 WWW 的?料?,他取得?料的流程是??的:

    他?向 proxy server 要求?料,? proxy ?忙?理;
    Proxy 可以分析使用者的 IP ?源是否合法?使用者想要去的 WWW 伺服器是否合法? 如果?? client 的要求都合法的?,那? Proxy 就?主?的?忙 client 前往 WWW 伺服器取得?料;
    Internet 所回?的?料是?? Proxy server 的喔,所以 WWW 伺服器上面看到的是 Proxy Server 的 IP ?;
    最後 Proxy ? client 的要求?回? client。
    ???解了????, client ??有直接?上 Internet ,所以在??部分(步? 1, 4)只要 Proxy ? Client 可以??就可以了!此? client 甚至不需要?有 public IP 哩!而?有人想要攻? client 端的主??, 除非他能?攻破 Proxy server ,否?是?法? client ??的啦!

    另外,一般 proxy 主?通常??放 port 80, 21, 20 等 WWW ? FTP 的埠口而已, 而且通常 Proxy 就架?在 Router 上面,因此可以完整的掌控?域?路?的?外??! ?你的 LAN ?的更安全啊!更??的 Proxy ?定我??在後?的 代理伺服器 章??中提及的!


    在??章?中,我?先不? Proxy ???西,而是介????制的 iptables ?!



    --------------------------------------------------------------------------------
    防火?的一般?路???抵?技巧

    由前面的?明?中,您??可以?解到一件事,那就是防火?除了可以『 保?防火??制 (iptables) 本身所在的那部主?』之外,?可以『 保?防火?後面的主?或 PC』。呵呵! 也就是?,防火?除了可以防?主?被入侵之外, 他?可以架?在路由器上面藉以控管?出本地端?域 (LAN) 的?路封包。 ?????於?部私有?域的安全也有一定程度的保?作用呢!底下我?稍微?一?目前常?的防火?配置吧:


    --------------------------------------------------------------------------------

    ?一 Linux 主?兼任防火?功能:

    防火?除了可以作? Linux 本?的基本防?之外,他?可以架?在路由器上面以管控整??域?路的封包?出。 因此,在??的防火?上?通常至少需要有??介面,?可信任的?部?不可信任的 Internet 分?, 所以可以分??定???路介面的防火???啦!整??境如同下列?二所示。

    在?二中,由於防火?是?定在所有?路封包都???的路由器上?, 因此??防火?可以很?易的就掌控到?域?路?的所有封包, 而且你只要管理?部防火?主?,就可以很?易的??自 Internet 的不良?路封包抵?掉?。 只要管理一部主?就能?造福整的 LAN ?面的 PC,很划算的啦。

    如果你想要??域?路控管的更?格的?,那你甚至可以在?部 Linux 防火?上面架?更?格的代理伺服器, ?用?端?能?上你所?放的 WWW 伺服器而已,而且?可以透?代理伺服器的登??分析功能, 明?的查出?那?使用者在某????曾??上哪些 WWW 伺服器,您瞧瞧!?害吧! 如果在??防火?上面再加??似 MRTG 的流量?控??,?能??整??域的流量?行??。 ??配置的??是:

    因??外?域已?分?,所以安全??在?部可以?放的?限?大!
    安全?制的?定可以?? Linux 主????即可!
    ?外只看的到 Linux 主?,所以?於?部可以?到有效的安全防?!

    ?二、?一 Linux 防火?主?



    --------------------------------------------------------------------------------

    ?一 Linux 防火?,但 LAN ?另?防火?

    一般??,我?的防火??於 LAN 的防?都不??定的很?格,因?是我?自己的 LAN 嘛!所以是信任?域之一?!不?,最常?到的入侵方法也是使用??的一?信任漏洞! 因?您不能保?所有使用企??部??的使用者都是公司的?工,也?法保?您的?工不?『搞破?!』 更多?候是由於某些外??客利用移?式?置 (??型??) ?接到公司?部的???路?加以?取企??部的重要??。

    呵呵!所以,如果您有特?重要的部?需要更安全的保??路?境,那?? LAN ? 面再加?一?防火?,?安全等?分?,那????您的重要?料?得更佳的保?喔! 整?架?有?像下?三所示。



    ?三、?一 Linux 防火?主?,但 LAN ?另?防火?



    --------------------------------------------------------------------------------

    在防火?後端的主??定

    ?有一?更有趣的?定,那就是?提供?路服?的伺服器放在防火?後面,?有什?好?呢? 如下?四所示,Web, Mail ? FTP 都是透?防火??到 Internet 上面去,所以, 底下?四部主?在 Internet 上面的 Public IP 都是一?的! (???念我??在本章底下的 NAT 主?的?候再次的??)。 只是透?防火?的封包分析後,? WWW 的要求封包?送到 Web 主?,? Mail 送? Mail Server 去?理而已(透? port 的不同???)。

    好了,因?四部主?在 Internet 上面看到的 IP 都相同,但是事?上?是四部不同的主?, 而?有攻?者想要入侵您的 FTP 主?好了,他使用各?分析方法去?攻的主?,其?是『防火?』那一部, 攻?者想要攻?您?部的主?,除非他能?成功的搞定您的防火?,否?就很?入侵您的?部主?呢!

    而且,由於主?放置在?部防火?中?,?部?路如果?生??? (例如某些使用者不良操作?致中毒啊、 被社交工程攻陷?致?部主?被?架啊等等的) ,是不?影?到?路主?的正常?作的。 ??方式?用在比?大型的企??中,因???些企???,?路主?能否提供正常?定的服?是很重要的!

    不?,??架?下所?行的?定就得包含 port 的??,而且要有很?的??概念, 可以?清封包?向?通?的流?方式。?於新手??,?定上有一定的?度, ?哥?人不太建?新手??做,?是等以後有??之後再?玩??架?吧!



    ?四、架?在防火?後端的主?伺服器

    通常像上?四的?境中,??路伺服器?立放置在??防火?中?的?路, 我??之?非?事?域 (DMZ)。 DMZ 的目的就如同前面提到的,重?在保?伺服器本身, 所以? Internet ? LAN 都隔???,如此一?不?是伺服器本身,或者是 LAN 被攻陷?, 另一????是完好?缺的!


    好了,那?我? Linux 防火??? iptables 是可以?行封包??的,他可以分析?路封包的 socket pair , ?可以分析不同?路?定的??,例如 TCP 封包的旗? (flags) ,甚至可以分析?路卡的卡?呢! ?由分析?些?料後,咱?的 iptables 至少可以有底下???抵?封包的方式:

    拒?? Internet 的封包?入 Linux 主?的某些 port
    ????不??解吧!例如您的 port 20-21 ?? FTP 相?的 port , 您只要?放??部?路的?,所以不? Internet ?放,那?? Internet ?的封包想要?入您的 port 20-21 的?,就可以???料封包?掉!因?我?可以分析的到?封包所?有的 port ??呀!


    拒??某些?源 IP 的封包?入
    例如您已???某? IP 主要都是?自攻?行?的主?,那?只要?自? IP 的?料封包,就?他??!??也可以?到基?的安全呦!


    拒???有某些特殊旗?( flag )的封包?入
    最常拒?的就是?有 SYN 的主???的旗?了!只要一???,嘿嘿!您就可以??封包??呀!


    分析硬?位址(MAC)?提供服?
    如果您的?域?路?面有比??蛋的但是又具有比?高?的?路功力的高手?,如果您使用 IP ?抵?他使用?路的?限,而他?懂得反正?一? IP 就好了,都在同一??域?嘛! 同??是在搞破?~怎??????,我?可以?死他的?路卡硬?位址啊!因? MAC 是?在?路卡上面的,所以您只要分析到?使用者所使用的 MAC 之後,可以利用防火??? MAC ?住,呵呵!除非他能?一?再?他的?路卡?取得新的 MAC,否?? IP 是?有用的啦!
    ?然?有更多的使用技巧,你可以?考本章最後列出的?考?料, ??有更多可用的小技巧喔。我?????真???的本?防火?,以及作??似 IP 分享器的 NAT 主?作??的介?而已啦! ^_^!好了,?始?玩一玩那? iptables 吧!



    --------------------------------------------------------------------------------
    防火?的使用限制

    什??!?定防火?之後?不安全啊?!那?然啦!???定了防火?之後您的系?就一定安全? 防火??然可以防止不受?迎的封包?入我?的?路?中,不?,某些情?下, 他?不能保?我?的?路一定就很安全。???例子??一?:

    防火??不能很有效的抵?病毒或木?程式
    假?您已??放了 WWW 的服?,那?您的 WWW 主?上面,防火?一定得要? WWW 服?的 port ?放? Client 端登入才行吧!否?您的 WWW 主??定了等於?有用?吧!也就是?,只要?入您的主?的封包是要求 WWW ?料的,就可以通?您的防火?。那好了,『?一您的 WWW 伺服器??有漏洞,或者本身向您要求 WWW 服?的?封包就是病毒在??您的系?』?,您的防火?可是一??法也?有啊! 因?本??定的??就是??他通?啊。


    防火??於?自?部 LAN 的攻???承受力
    一般??,我??於 LAN ?面的主?都?有什?防火?的?定,因?是我?自己的 LAN 啊,所以?然就?定?信任?域了!不?, LAN ?面?是可能有些?路小白啊,?然他?不是故意要搞破?, 但是他?就是不懂嘛!所以就?用?路了。???候就很糟糕,因?防火??於?部的???定通常比?少, 所以就容易造成?部?工?於?路?用或?用的情?。
    所以啦,在您的 Linux 主??地上?之前,?是得先:

    ????不安全的服?;
    升???可能有??的套件;
    架?好最起?的安全防?--防火?--
    其他相?的?息?到 ???路安全 ?面去看一看怎?增加自身的安全吧!


    --------------------------------------------------------------------------------
    Linux 的封包???制:iptables

    上面?了??多,主要?是希望您能?解到防火?是什?????!而且也希望您知道防火??非?能的。 好了,那?底下我??於可以?瞧一瞧,那目前我?的 2.6 版?? Linux 核心到底使用什?核心功能??行防火??定?


    --------------------------------------------------------------------------------
    不同 Linux 核心版本的防火???

    Linux 的防火??什?功能??好??是因?他本身就是由 Linux kernel 所提供, 由於直接??核心??理,因此效能非常好!不?,不同核心版本所使用的防火???是不一?的! 因?核心支援的防火?是逐?演??的嘛!

    Version 2.0:使用 ipfwadm ??防火??制;
    Version 2.2:使用的是 ipchains ??防火??制;
    Version 2.4 ? 2.6 :主要是使用 iptables ??防火??制,不?在某些早期的 Version 2.4 版本的 distributions ?中,亦同?支援 ipchains (??成?模?),好?使用者仍然可以使用?自 2.2 版的 ipchains 的防火???。不?,不建?在 2.4 以上的核心版本使用 ipchains 喔!
    因?不同的核心使用的防火??制不同,且支援的??指令??法也不相同, 所以在 Linux 上??定?於你自己的防火????,要注意啊,先用 uname -r 追?一下你的核心版本再?! 如果你是安? 2004 年以後推出的 distributions ,那就不需要?心了,因??些 distributions ?乎都使用 kernel 2.6 版的核心啊! ^_^



    --------------------------------------------------------------------------------
    iptables 的表格?封包?入流程

    前面的??小??面我?一直?到:『防火???』,咦!啥是??啊?因? iptables 是利用封包??的?制, 所以他?分析封包的表??料。根?表??料?定?的『??』??定?封包是否可以?入主?或者是被??。 意思就是?:『根?封包的分析?料 "比?" 你?先定?的???容, 若封包?料????容相同??行?作,否?就??下一???的比?!』 重?在那?『比??分析?序』上。

    ????的例子,假?我?先定? 10 ?防火???好了,那?? Internet ?了一?封包想要?入我的主?, 那?防火?是如何分析??封包的呢?我?以底下的?示??明好了:



    ?五、封包??的???作及分析流程

    ?一??路封包要?入到主?之前,?先?由 NetFilter ?行?查,那就是 iptables 的??了。 ?查通??接受 (ACCEPT) ?入本?取得?源,如果?查不通?,?可能予以?? (DROP) ! 上?五主要的目的在告知您:『??是有?序的』!例如??路封包?入 Rule 1 的比??, 如果比??果符合 Rule 1 ,此????路封包就??行 Action 1 的?作,而不?理?後?的 Rule 2, Rule 3.... 等??的分析了。

    而如果??封包?不符合 Rule 1 的比?,那就??入 Rule 2 的比?了!如此一?一???去?行比?就是了。 那如果所有的??都不符合怎??此?就?透????作 (封包政策, Policy) ??定??封包的去向。 所以啦,?您的???序排列???,就??生很?重的??了。 怎??呢??我?看看底下??例子:

    假?您的 Linux 主?提供了 WWW 的服?,那?自然就要?? port 80 ??用通?的封包??,但是您?? IP ?源? 192.168.100.100 老是?意的??入侵您的系?,所以您想要?? IP 拒?往?,最後,所有的非 WWW 的封包都?他??,就?三?????,您要如何?定防火????序呢?

    Rule 1 先抵? 192.168.100.100 ;
    Rule 2 再?要求 WWW 服?的封包通?;
    Rule 3 ?所有的封包??。
    ??的排列?序就能符合您的需求,不?,?一您的?序排?了,?成:

    Rule 1 先?要求 WWW 服?的封包通?;
    Rule 2 再抵? 192.168.100.100 ;
    Rule 3 ?所有的封包??。
    此?,那? 192.168.100.100 『可以使用您的 WWW 服?』喔!因?只要他?您的主?送出 WWW 要求封包,就可以使用您的 WWW 主?功能了,因?您的???序定?第一?就??他通?, 而不去考?第二???!??可以理解???序的意?了?!?在再?想一想,如果 Rule 1 ?成了『?所有的封包??』,Rule 2 才?定『WWW 服?封包通?』,??,我的 client 可以使用我的 WWW 服???呵呵!答案是『否~』想通了?? ^_^


    --------------------------------------------------------------------------------

    iptables 的表格?? (chain)

    事?上,那??五所列出的???是 iptables ?多表格?中的一?? (chain) 而已。 什?是?呢??得由 iptables 的名??起。?什??? ip"tables" 呢? 因???防火????面有多?表格 (table) ,每?表格都定?出自己的??政策???, 且每?表格都用途都不相同。我?可以使用底下????稍微?解一下:



    ?六、iptables 的表格示意?

    ???五的???容?只是?六?的某? chain 而已! 而??的情?下,咱? Linux 的 iptables 至少就有三?表格,包括管理本??出的 filter 、管理後端主? (防火??部的其他??) 的 nat 、 管理特殊旗?使用的 mangle (?少使用) 。更有甚者,我??可以自??外的?呢! 真是很神奇吧!每?表格?其中?的用途分?是??的:

    filter:主要跟 Linux 本?有?,??是??的 table 喔!
    INPUT:主要?封包想要?入我? Linux 本?有?;
    OUTPUT:主要?我? Linux 本?所要送出的封包有?;
    FORWARD:??咚咚? Linux 本?比??有??,他可以封包『??』到後端的??中,? nat ?? table 相?性很高。


    nat:??表格主要在用作?源?目的之 IP 或 port 的??, ? Linux 本????,主要? Linux 主?後的?域?路?的???有相?。
    PREROUTING:在?行路由判?之前所要?行的??(DNAT/REDIRECT)
    POSTROUTING:在?行路由判?之後所要?行的??(SNAT/MASQUERADE)
    OUTPUT:??送出去的封包有?


    mangle:??表格主要是?特殊的封包的路由旗?有?, 早期?有 PREROUTING 及 OUTPUT ?,不?? kernel 2.4.18 之後加入了 INPUT 及 FORWARD ?。 由於??表格?特殊旗?相?性?高,所以像咱?????的?境?中,?少使用 mangle ??表格。
    那?各?表格??的相?性可以使用下??表示:



    ?七、iptables ?建各表格??的相?性

    上面的?示很??喔!不?基本上你依?可以看出?,我?的 iptables 可以控制??封包的流向:

    如上?的 A ,封包主要是要?取我? Linux 本??的?料,??? filter 的 INPUT ?, 而?料的?出?是?? filter 的 OUTPUT ?;
    如上?的 B ,封包主要是要透?防火?而去後端,也就是?,?封包的目??非我?的 Linux 本?。 主要??的?是 filter 的 FORWARD 以及 nat 的 POSTROUTING, PREROUTING。
    由於 mangle ??表格很少被使用,如果??七的 mangle 拿掉的?,那就容易看的多了:



    ?八、iptables ?建各表格??的相?性(??)

    透??八你就可以更??的?解到,事?上?本?最有?的其?是 filter ??表格?的 INPUT ? OUTPUT ????,如果你的 iptables 只是用?防? Linux 主?本身的?,那 nat 的??根本就不需要理他,直接?定??放即可。

    不?,如果你的防火?事?上是用?管制 LAN ?的其他主?的?,那?你就必?要再?? filter 的 FORWARD ???,?有 nat 的 PREROUTING, POSTROUTING 以及 OUTPUT ?行?外的???定才行。 nat 表格的使用需要很清晰的路由概念才能??定的好,建?新手先不要碰! 最多就是先玩一玩最?春的 nat 功能『IP 分享器的功能』就好了! ^_^! ?部份我?在本章的最後一小??介?的啦!


    --------------------------------------------------------------------------------
    本?的 iptables ?法

    理?上,?你安?好 Linux 之後,系????主?的?你??一??春的防火???才是。 不?如果您是依照?哥的建??安? Linux ?,那?安?完?後,你的系???是?有防火?的啦。 另外,某些早期的版本 (例如 Red Hat 9) 本身同?提供 iptables 及 ipchains ???防火?模?, 不????模?是?法同?存在的!所以你?能??其中一?,那?然是?? iptables 才?啊! 如果不小心??了 ipchains 的? (新版的 Linux 都不?有??困?) ,那?使用 rmmod ?移除吧!

    不?,在?始?行底下的??之前,?哥??有?很重要的事情要告知一下。 因? iptables 的指令???路封包?行??及抵?的?作,所以 ?不要在?端主?上?行防火?的??,因?您很有可能一不小心?自己?在家?外! ?量在本?前面登入 tty1-tty6 ?端??行??,否?常常??生悲?啊! ?哥以前??在玩 iptables ?,就常常因?不小心???定??,?致常常要??端的朋友?忙重新??...

    ??提到咱?的 iptables 至少有三???的 table (filter, nat, mangle),?常用的是本?的 filter 表格, ?也是??表格啦。另一??是後端主?的 nat 表格,至於 mangle ?少使用,所以??章?我??不??? mangle。 由於不同的 table 他?的?不一?,?致使用的指令?法或多或少都有?差?。 在??小??中,我?主要??? filter ????表格的三???做介?。底下就?玩一玩吧!

    Tips:
    防火?的?定主要使用的就是 iptables ??指令而已。而防火?是系?管理?的主要任?之一, 且?於系?的影?相?的大,因此『只能? root 使用 iptables 』,不?是?定?是?察防火???喔!


    --------------------------------------------------------------------------------

    ??的清除??察

    如果你在安?的?候???有防火?的?,那? iptables 在一?始的?候??是?有??的,不?, 可能因?你在安?的?候就有??系?自??您建立防火??制,那系?就?有??的防火???了! ??如何,我?先?看看目前本?的防火???是如何吧!
    [root@linux ~]# iptables [-t tables] [-L] [-nv]
    ??:
    -t :後面接 table ,例如 nat 或 filter ,若省略此?目,?使用??的 filter
    -L :列出目前的 table 的??
    -n :不?行 IP ? HOSTNAME 的反查,?示?息的速度?快很多!
    -v :列出更多的??,包括通????的封包?位元?、相?的?路介面等

    ?例:列出 filter table 三??的??
    [root@linux ~]# iptables -L -n
    Chain FORWARD (policy ACCEPT)
    target prot opt source destination

    Chain INPUT (policy ACCEPT)
    target prot opt source destination

    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination

    ?例:列出更多的??
    [root@linux ~]# iptables -L -nv
    Chain INPUT (policy ACCEPT 5748 packets, 746K bytes)
    pkts bytes target prot opt in out source destination
    ....底下省略....


    仔?看到上面表格的?出,因??有加上 -t 的??,所以??就是 filter ??表格?的 INPUT, OUTPUT, FORWARD 三??的???。由於?有??嘛!所以每???部的??都是空的。 同?注意一下,在每? chain 後面括??的 policy ?目,那就是『???作(政策)』咯!以上面?看, ?然我???了 iptables ,但是我??有?定??,然後政策又是 ACCEPT, 所以是『任何封包都?接受』的意思喔!至於如果加上 -v 的???, ??同???所通?的封包?位元?也?被列出?啊。底下?是 nat 表格的???目:
    [root@linux ~]# iptables -t nat -L -n
    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination

    Chain POSTROUTING (policy ACCEPT)
    target prot opt source destination

    Chain PREROUTING (policy ACCEPT)
    target prot opt source destination


    瞧!? fiter 表格一模一?吧!只是三??的?容不同?!要注意啊! ^_^! 以後?你?定每一?防火?的???,?得瞧一瞧?定先!好,那如何清除?????做就?了:
    [root@linux ~]# iptables [-t tables] [-FXZ]
    ??:
    -F :清除所有的已?定的??;
    -X :?掉所有使用者 "自?" 的 chain (???的是 tables )?;
    -Z :?所有的 chain 的???流量??都?零

    ?例:清除本?防火? (filter) 的所有??
    [root@linux ~]# iptables -F
    [root@linux ~]# iptables -X
    [root@linux ~]# iptables -Z


    由於?三?指令??本?防火?的所有??都清除,但?不?改???政策 (policy) , 所以如果你不是在本?下??三行指令?,很可能你?被自己?在家?外 (若 INPUT ?定? DROP ?)! 要小心啊!

    一般??,我?在重新定?防火?的?候,都?先????他清除掉。??得我?前面?到的, 防火?的『???序』是有特殊意?的,所以?, ?然先清除掉??,然後一?一???定?比?容易一?啦。底下就???定???政策吧!



    --------------------------------------------------------------------------------

    定???政策 (policy)

    清除??之後,再接下?就是要?定??的政策啦!??得政策指的是什???『 ?您的封包不在您?定的??之??,??封包的通??否,以 Policy 的?定??』,在本?方面的??政策中,假?您?於?部的使用用者有信心的?, 那? filter ?的 INPUT ?方面可以定?的比??格一?,而 FORWARD ? OUTPUT ?可以?定的?一些!通常?哥都是? INPUT 的 policy 定?? DROP 啦,其他???定?? ACCEPT。 至於 nat table ???不理?他。
    [root@linux ~]# iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]
    ??:
    -P :定?政策( Policy )。注意,?? P ?大?啊!
    ACCEPT :?封包可接受
    DROP :?封包直接??,不?? client 端知道?何被??。

    ?例:?本?的 INPUT ?定? DROP ,其他?定? ACCEPT
    [root@linux ~]# iptables -P INPUT DROP
    [root@linux ~]# iptables -P OUTPUT ACCEPT
    [root@linux ~]# iptables -P FORWARD ACCEPT
    [root@linux ~]# iptables -L -n
    Chain FORWARD (policy ACCEPT)
    target prot opt source destination

    Chain INPUT (policy DROP)
    target prot opt source destination

    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    # 由於 INPUT ?定? DROP 而又尚未有任何??,所以上面的?出?果?示:
    # 所有的封包都?法?入你的主?!是不通的防火??定!(?路??是?向的)


    看到?出的?果了吧?INPUT 被修改?定了喔!其他的 nat table 三??的?定也是一?的,例如:『 iptables -t nat -P PREROUTING ACCEPT 』就?定了 nat table 的 PREROUTING ??可接受的意思!??政策?定完?後,??一??於封包的基?比??定吧。



    --------------------------------------------------------------------------------

    封包的基?比? IP/netmask I/O ?置

    ?始??行封包的比??定吧!我?先由最基?的 IP ??域的特徵?起,再??置 (?路卡) 的限制等等。
    [root@linux ~]# iptables [-AI ?] [-io ?路介面] [-p ?定] \
    > [-s ?源IP/?域] [-d 目?IP/?域] -j [ACCEPT|DROP]
    ??:
    -AI ?:??某的??行??的 "插入" 或 "累加"
    -A :新增加一???,???增加在原本??的最後面。例如原本已?有四???,
    使用 -A 就可以加上第五???!
    -I :插入一???。如果?有指定此??的?序,??是插入?成第一???。
    例如原本有四???,使用 -I ?????成第一?,而原本四??成 2~5 ?
    ? :有 INPUT, OUTPUT, FORWARD 等,此?名?又? -io 有?,?看底下。

    -io ?路介面:?定封包?出的介面??
    -i :封包所?入的那??路介面,例如 eth0, lo 等介面。需? INPUT ?配合;
    -o :封包所?出的那??路介面,需? OUTPUT ?配合;

    -p ?定:?定此???用於哪?封包格式
    主要的封包格式有: tcp, udp, icmp 及 all 。

    -s ?源 IP/?域:?定此??之封包的?源?目,可指定??的 IP 或包括?域,例如:
    IP :192.168.0.100
    ?域:192.168.0.0/24, 192.168.0.0/255.255.255.0 均可。
    若???『不?』?,?加上 ! 即可,例如:
    -s ! 192.168.100.0/24 表示不? 192.168.100.0/24 之封包?源;

    -d 目? IP/?域:同 -s ,只不???指的是目?的 IP 或?域。

    -j :後面接?作,主要的?作有接受 (ACCEPT)、?? (DROP) 及?? (LOG)


    iptables 的基本??就如同上面所示的,?只?到 IP 、?域??置等等的??, 至於 TCP, UDP 封包特有的埠口 (port number) ??? (如 SYN 旗?) ?在下小?才??到。 好,先?我??看看最基?的????,例如?放 lo ??本?的介面以及某? IP ?源吧!
    ?例一:所有的?自 lo ??介面的封包,都予以接受
    [root@linux ~]# iptables -A INPUT -i lo -j ACCEPT
    # 仔?看上面??有列出 -s, -d 等等的??,?表示:不?封包?自何?或去到哪?,
    # 只要是?自 lo ??介面,就予以接受!???念挺重要的,就是
    #『?有?定的?定,?表示??定完全接受』的意思!例如??案例?中,
    # ?於 -s, -d...等等的???有?定?

    ?例二:目??自 192.168.0.1 ?? IP 的封包都予以接受
    [root@linux ~]# iptables -A INPUT -i eth0 -s 192.168.0.1 -j ACCEPT
    # 不管什?封包格式,只要?自 192.168.0.1 就予以接受。

    ?例三:目??自 192.168.1.0/24 可接受,但 192.168.1.10 ??
    [root@linux ~]# iptables -A INPUT -i eth0 -s 192.168.1.10 -j DROP
    [root@linux ~]# iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
    # 上述????例很重要啊!因?有???!要先?? 192.168.1.10 才能接受??域。

    [root@linux ~]# iptables -L -n
    Chain INPUT (policy DROP)
    target prot opt source destination
    ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
    ACCEPT all -- 192.168.0.1 0.0.0.0/0
    DROP all -- 192.168.1.10 0.0.0.0/0
    ACCEPT all -- 192.168.1.0/24 0.0.0.0/0
    # 瞧!??的?定在??已?生效?!


    ?就是最??、??的防火???的?定??察方式。你在?定完?後,都可以利用 iptables -L -n 或 iptables -L -v ???的查?一下。而如果你想要??某???的??怎???可以??做:
    [root@linux ~]# iptables -A INPUT -s 192.168.2.200 -j LOG
    [root@linux ~]# iptables -L -n
    target prot opt source destination
    LOG all -- 192.168.2.200 0.0.0.0/0 LOG flags 0 level 4


    看到?出?果的最左?,?出?的是 LOG 喔!只要有封包?自 192.168.2.200 ?? IP ?, 那??封包的相???就?被?入到核心?息,亦即是 /var/log/messages ???案?中。 然後?封包????行後?的??比?。所以?, LOG ???作?在?行??而已,?不?影?到??封包的其他??比?的。 好了,接下?我?分??看看 TCP,UDP 以及 ICMP 封包的其他??比?吧!



    --------------------------------------------------------------------------------

    TCP, UDP 的??比?

    我?在?路基???各?不同的封包格式, 在?到 TCP ? UDP ?,比?特殊的就是那?埠口 (port number),在 TCP 方面?另外有所?的??封包??, 包括最常?的 SYN 主???的封包格式。那?如何?????封包格式?行防火???的?定呢?你可以??看:
    [root@linux ~]# iptables [-AI ?] [-io ?路介面] [-p tcp,udp] \
    > [-s ?源IP/?域] [--sport 埠口??] \
    > [-d 目?IP/?域] [--dport 埠口??] -j [ACCEPT|DROP]
    ??:
    --sport 埠口??:限制?源的埠口??,埠口??可以是??的,例如 1024:65535
    --dport 埠口??:限制目?的埠口??。


    事?上就是多了那? --sport 及 --dport ???玩意?,重?在那? port number 上面啦! 底下?我???行??小??:
    ?例一:想要???入本? port 21 的封包都抵?掉:
    [root@linux ~]# iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP

    ?例二:想?到我?部主?的?芳 (upd port 137,138 tcp port 139,445) 就放行
    [root@linux ~]# iptables -A INPUT -i eth0 -p udp --dport 137:138 -j ACCEPT
    [root@linux ~]# iptables -A INPUT -i eth0 -p tcp --dport 139 -j ACCEPT
    [root@linux ~]# iptables -A INPUT -i eth0 -p tcp --dport 445 -j ACCEPT


    瞧!你可以利用 UDP ? TCP ?定所?有的埠口????行某些服?的?放或??喔! 你?可以?合?理呢!例如:只要?自 192.168.1.0/24 的 1024:65535 埠口的封包, 只要想要??到本?的 ssh port 就予以抵?,可以??做:
    [root@linux ~]# iptables -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 \
    > --sport 1024:65534 --dport ssh -j DROP


    注意啊!如果你有使用到 --sport 及 --dport 的???,就必?指定 udp 或 tcp 的封包格式才行!否?的?, iptables 的指令就?出?如下的??:
    [root@linux ~]# iptables -A INPUT -i eth0 --dport 21 -j DROP
    iptables v1.2.11: Unknown arg `--dport'
    Try `iptables -h' or 'iptables --help' for more information.


    你????得很奇怪,怎?『 --dport 』?是未知的?? (arg) 呢??是因?你?有加上 -p tcp 或 -p udp 的?故啊!因? port 是 TCP,UDP 特有的,其他?似 ICMP ??有???的埠口?料啊! ???,您可以理解吧! ^_^

    除了埠口之外,在 TCP ?有特殊的旗?啊!最常?的就是那?主???的 SYN 旗?了。 我?在 iptables ?面?支援『 --syn 』的?理方式,我?以底下的例子??明好了:
    ?例:??自任何地方?源 port 1:1023 的主???到本?端的 1:1023 ????
    [root@linux ~]# iptables -A INPUT -i eth0 -p tcp --sport 1:1023 \
    > --dport 1:1023 --syn -j DROP


    一般??,client 端?用的 port 都是大於 1024 以上的埠口,而 server 端?是?用小於 1023 以下的埠口在??的。所以我?可以??自?端的小於 1023 以下的埠口?料的主???都?他??! 但不?用在 FTP 的主???中!?部份我?未?在 FTP 章??中再??吧!



    --------------------------------------------------------------------------------

    ??模?:MAC ? RELATED

    在早期的 kernel 2.2 以前使用 ipchains 管理防火??,通常??系?管理?相??痛! 因? ipchains ?有所?的封包??模?,因此我?必?要??封包的?、出方向?行管控。 ?例??,如果你想要??到?端主?的 port 22 ?,你必?要????????定:

    本?端的 1024:65535 到?端的 port 22 必?要放行 (OUTPUT ?);
    ?端主? port 22 到本?的 1024:65535 必?放行 (INPUT ?);
    ??很麻?!因?如果你要??到 10 部主?的 port 22 ?,假? OUTPUT ????? (ACCEPT), 你依?需要填?十行??,?那十部?端主?的 port 22 可以??到你的本地端主?上。 那如果??全部的 port 22 呢?又?心某些?意主??主?以 port 22 ??到你的?器上! 同?的道理,如果你要?本地端主?可以?到外部的 port 80 (WWW 服?),那就更不得了~ ?就是?路??是?向的一?很重要的概念!

    好在我?的 iptables 免除了??困?!他可以透?一???模??分析 『??想要?入的封包是否???我?出去的回??』 如果是??我?出去的回?,那?就可以予以接受放行!哇!真棒!??就不用管?端主?是否????的??了! 那如何?到呢?看看底下的?法:
    [root@linux ~]# iptables -A INPUT -m state --state ??
    ??:
    -m :一些 iptables 的模?,主要常?的有:
    state :??模?
    mac :?路卡硬?位址 (hardware address)
    --state :一些封包的??,主要有:
    INVALID :?效的封包,例如?料破?的封包??
    ESTABLISHED:已???成功的????;
    NEW :想要新建立??的封包??;
    RELATED :??最常用!表示??封包是?我?主??送出去的封包有?

    ?例:只要已建立或相?封包就予以通?,只要是不合法封包就??
    [root@linux ~]# iptables -A INPUT -m state \
    > --state RELATED,ESTABLISHED -j ACCEPT
    [root@linux ~]# iptables -A INPUT -m state --state INVALID -j DROP


    所以?,如果你的 Linux 主?只想要作? client 的用途,不?所有主??你??的?源, 那?你可以??做即可:

    清除所有已?存在的?? (iptables -F...)
    ?定??政策,除了 INPUT ??? DROP 其他??? ACCEPT;
    ?放本?的 lo 可以自由放行;
    ?定有相?的封包??可以???入本?。
    ?就是最最?春的防火?,你可以透?第二步?抵?所有?端的?源封包, 而透?第四步??你要求的?端主?回?封包可以?入, 加上?本?的 lo ???部?圈?置可以放行,嘿嘿!一部 client ?用的防火???就 OK 了! 你可以在某? script 上面??做即可:
    #!/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin; export PATH
    iptables -F
    iptables -X
    iptables -Z
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    #iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT


    那如果?域?路?有其他的主??,再?上表最後一行的 # 取消,就可以接受?自本地 LAN 的其他主?的??了。 而如果你?心某些 LAN ?的?意?源主??主?的?你???,那你?可以??信任的本地端主?的 MAC ?行??! 同?是使用??模?!?次的???是 MAC 的比?。?例??:
    ?例一:???域?路?的 aa:bb:cc:dd:ee:ff 主??放其??
    [root@linux ~]# iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff \
    > -j ACCEPT
    ??:
    --mac-source :就是?源主?的 MAC 啦!


    透???玩意?,你就可以定?更?格的 LAN ?的其他主?能否??到你的主?的?限了!



    --------------------------------------------------------------------------------

    ICMP 封包??的比?

    在?路基?的 ICMP ?定?中我?知道 ICMP 的格式相?的多,而且很多 ICMP 封包的?型格式都是?了要用??行?路??用的! 所以最好不要?所有的 ICMP 封包都??!通常我??把 ICMP type 8 (echo request) 拿掉而已, ??端主?不知道我?是否存在,也不?接受 ping 的回?就是了。ICMP 封包格式的?理是??的:
    [root@linux ~]# iptables -A INPUT -p icmp --icmp-type ?型 -j ACCEPT
    ??:
    --icmp-type :後面必?要接 ICMP 的封包?型,也可以使用代?,
    例如 8 代表 echo request 的意思。

    ?例:? 0,3,4,11,12,14,16,18 的 ICMP type 可以?入本?:
    [root@linux ~]# vi somefile
    #!/bin/bash
    icmp_type="0 3 4 11 12 14 16 18"
    for typeicmp in $icmp_type
    do
    iptables -A INPUT -i eth0 -p icmp --icmp-type $typeicmp -j ACCEPT
    done

    [root@linux ~]# sh somefile


    ??就能??放部分的 ICMP 封包格式?入本??行?路??的工作了!真好!不是嘛!^_^

    --------------------------------------------------------------------------------
    防火?的??、回????

    ??上面我??了很多的?定了,那?我?如何?察目前主?上面的防火???呢? 我?可以使用『iptables -L -n 』??察,不?,?指令所?示的??其??是不太足?的。 ???候,我?其?可以使用底下的??指令??目前主?上面的防火??制『?存』下?, 在下次想要?????『回?』的?候,就能?直接利用指令???直接回?喔!
    [root@linux ~]# iptables-save > filename
    [root@linux ~]# iptables-restore < filename


    一?是?存一?是回?!而在 Red Hat 系?的 RHEL,CentOS,Fedora ?中,如果你?那? filename ?案存成『 /etc/sysconfig/iptables 』,?且利用 chkconfig ? iptables 在???????的?,那?一??系?就?主?的?你把防火?的????入了就是! 那?使用 iptables-save 所得到的?果?是如何呢??我??看看:
    [root@linux ~]# iptables-save
    # Generated by iptables-save v1.2.11 on Mon Sep 11 17:47:35 2006
    *filter <==使用的 table
    :INPUT DROP [7335:859454] <==三???的????政策
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [16992:13134791]
    -A INPUT -i lo -j ACCEPT <==?始各???的?定
    -A INPUT -m state --state RELATED -j ACCEPT
    -A INPUT -m mac --mac-source 00:04:75:D0:A2:58 -j ACCEPT
    -A INPUT -m state --state ESTABLISHED -j ACCEPT
    -A INPUT -i eth0 -p icmp -m icmp --icmp-type 0 -j ACCEPT
    -A INPUT -i eth0 -p icmp -m icmp --icmp-type 3 -j ACCEPT
    ....中?省略....
    -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
    COMMIT
    # Completed on Mon Sep 11 17:47:35 2006
    # 井? (#) 是?解,星? (*) 代表??的 table,而冒? (:) 代表各??的??政策;
    # 後?的?作?是各???啦!


    你瞧到?出的?果啦!整??料?乎就是?似手?在指令列模式?入的指令! 比起 iptables -L -n 所得到的??要仔?的多。?也是 iptables 的特殊格式, 可以用在 iptables-restore 的指令?入呢! 比起??方式,?哥?是比?喜?使用 script ?撰?自己的防火???啦。 制?好??後?然就是要???!那?如何??呢?

    先由主?向外面主????看看;
    再由私有?域?的 PC 向外面主????看看;
    最後,由 Internet 上面的主?,主???到您的 Linux 主??看看;
    一步一步作下?,看看??出在哪?,然後多多的去改?、改良!基本上, ?路上目前很多的?料可以提供您不?的?考了!?一篇的?定?的是很??, 大部分都?在介??段而已!希望?大家有?助! ?哥在?考?料?中列出??有用的防火???, 希望大家有空真的要多多的去看看!?很有?助的!



    --------------------------------------------------------------------------------
    IPv4 的核心管理功能: /proc/sys/net/ipv4/*

    除了 iptables ??防火???之外,其?咱? Linux kernel 2.6 提供很多核心??的攻?抵??制喔! 由於是核心的?路功能,所以相?的?定?料都是放置在 /proc/sys/net/ipv4/ ??目??中。 至於?目?下各??案的???料,可以?考核心的?明文件:

    /usr/src/linux-{version}/networking/ip-sysctl.txt
    上面的???明?料可以由 http://www.kernel.org ???站下?任何一?核心原始?後,解??就能?看到。 ?哥??也放一份?份:

    http:/linux.vbird.org/linux_server/0250simple_firewall/ip-sysctl.txt
    有?趣的???要自行去查一查比?好的喔!我?底下就拿????的?案?作?明吧!


    --------------------------------------------------------------------------------

    /proc/sys/net/ipv4/tcp_syncookies

    我?在前一章?到所?的阻?式服? (DoS) 攻?法?中的一?方式,就是利用 TCP 封包的 SYN 三向交握原理所?成的, ??方式?? SYN Flooding 。那如何?防??方式的攻?呢?我?可以?用核心的 SYN Cookie 模?啊! ?? SYN Cookie 模?可以在系?用???????的埠口 (1024:65535) 即?用完?自???。

    ??? SYN Cookie ?,主?在?送 SYN/ACK ??封包前,?要求 Client 端在短???回覆一?序?, ??序?包含?多原本 SYN 封包?的??,包括 IP、port 等。若 Client 端可以回覆正?的序?, 那?主?就?定?封包?可信的,因此??送 SYN/ACK 封包,否?就不理?此一封包。

    透?此一?制可以大大的降低?效的 SYN 等待埠口,而避免 SYN Flooding 的 DoS 攻??! 那?如何????模?呢?很??,??做即可:
    [root@linux ~]# echo "1" > /proc/sys/net/ipv4/tcp_syncookies


    但是???定值由於?反 TCP 的三向交握 (因?主?在?送 SYN/ACK 之前需要先等待 client 的序?回?), 所以可能?造成某些服?的延??象,例如 SMTP (mail server)。 不??的??,???定值?是不?用的! 只是不?合用在??已?很高的伺服器?喔! 因???太高的主?有???核心?判遭受 SYN Flooding 的攻?呢。

    如果是?了系?的 TCP 封包??最佳化,?可以?考 tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow ????定值的意?。



    --------------------------------------------------------------------------------

    /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

    阻?式服?常?的是 SYN Flooding ,不?,我?知道系?其?可以接受使用 ping 的回?, 而 ping 的封包是可以?很大的!想像一???, 如果有?搞破?的人使用 1000 台主??送 ping ?你的主?,而且每? ping 都高??百 K bytes?, 你的?路???怎??要嘛就是??被吃光,要嘛可能系????! ??方式分?被?? ping flooding (不?? ping) 及 ping of death (?送大的 ping 封包)。

    那如何避免呢?取消 ICMP ?型 8 的 ICMP 封包回?就是了。我?可以透?防火??抵?, ?也是比?建?的方式。?然也可以?核心自?取消 ping 的回?。不?您必?要?解, 某些?域?路?常?的服? (例如?? IP 分配 DHCP ?定) ?使用 ping 的方式???是否有重?的 IP ,所以你最好不要取消所有的 ping 回?比?好。

    核心取消 ping 回?的?定值有??,分?是:/proc/sys/net/ipv4 ?的 icmp_echo_ignore_broadcasts (?有 ping broadcast 位址?才取消 ping 的回?) 及 icmp_echo_ignore_all (全部的 ping 都不回?)。?哥建??定 icmp_echo_ignore_broadcasts 就好了。 你可以??做:
    [root@linux ~]# echo "1" > \
    > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts




    --------------------------------------------------------------------------------

    /proc/sys/net/ipv4/conf/?路介面/*

    咱?的核心?可以??不同的?路介面?行不一?的???定喔!?路介面的相??定放置在 /proc/sys/net/ipv4/conf/ ?中,每?介面都以介面代?做?其代表,例如 eth0 介面的相??定?料在 /proc/sys/net/ipv4/conf/eth0/ ?。那??路介面的?定?料有哪些比?需要注意的呢? 大概有底下???:

    rp_filter:??逆向路??? (Reverse Path Filtering), 可以藉由分析?路介面的路由??配合封包的?源位址,?分析?封包是否?合理。?例??,你有???卡,eth0 ? 192.168.10.100/24 ,eth1 ? public IP 。那??有一?封包自??自 eth1 ,但是其 IP ?源? 192.168.10.200 , 那??封包就不合理,?予以??。???定值建?可以??的。


    log_martians:???定?料可以用?????不合法的 IP ?源, ?例??,包括?源? 0.0.0.0、127.x.x.x、及 Class E 的 IP ?源,因??些?源的 IP 不???用於 Internet 啊。 ??的?料??放置到核心放置的登?? /var/log/messages。


    accept_source_route:或?某些路由器??????定值, 不?目前的??很少使用到???源路由,你可以取消???定值。


    accept_redirects:?你在同一????域?架?一部路由器, 但?????域有?? IP ?域,例如 192.168.0.0/24, 192.168.1.0/24。此?你的 192.168.0.100 想要向 192.168.1.100 ?送?息?,路由器可能??送一? ICMP redirect 封包告知 192.168.0.100 直接?送?料? 192.168.1.100 即可,而不需透?路由器。因? 192.168.0.100 ? 192.168.1.100??是在同一????路上 (?者可以直接互通),所以路由器?告知?源 IP 使用最短路?去???料。但那?部主?在不同的 IP 段,?是?法?????息的!???定也可能??生一些?微的安全??,所以建???他。


    send_redirects:?上一??似,只是此值??送一? ICMP redirect 封包。 同?建???。(事?上,?哥在某?教中心教同?架?路由器?,就曾??了?? ICMP redirect 的????筋! 其??? redirect 的????目即可啊!)
    要?成上面的功能你必?要??做:
    [root@linux ~]# vi somefile
    for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo "1" > $i
    done
    for i in /proc/sys/net/ipv4/conf/*/log_martians; do
    echo "1" > $i
    done
    for i in /proc/sys/net/ipv4/conf/*/accept_source_route; do
    echo "0" > $i
    done
    for i in /proc/sys/net/ipv4/conf/*/accept_redirects; do
    echo "0" > $i
    done
    for i in /proc/sys/net/ipv4/conf/*/send_redirects; do
    echo "0" > $i
    done

    [root@linux ~]# sh somefile




    --------------------------------------------------------------------------------
    本?防火?的一??例

    介?了??多的防火??法?相?的注意事?後,?於要?架?防火?了。如同前面?到的, 你?然可以使用 iptables-save 的?法?相?的防火????存到 /etc/sysconfig/iptables 去, 然後透? iptables-restore 或者是重新?? iptables ??用你的新防火???。 不??哥?是比???使用 shell script ?撰?防火???,而且此一特色?可以用在呼叫其他的 scripts , 可以?防火???具有???活的使用方式。好了,那就???如何?定咱?的防火???吧!


    --------------------------------------------------------------------------------
    ??草?

    ?哥底下介?的??防火?,其?可以用?作?路由器上的防火?,也可以用?作?本?的防火?。 假?硬???如同?二所示那?的?境, Linux 主?本身也是?部 LAN 的路由器! 亦即是一???的 IP 分享器的功能啦!假??哥?路介面有底下?些:

    外部?路使用 eth1 (如果是?接,有可能是 ppp0,???您的?境??定);
    ?部?路使用 eth0 ,且?部使用 192.168.1.0/24 ?? Class ;
    主????放的服?有 WWW, SSH, SMTP 等等;
    由於希望?信任?域 (LAN) ?不信任?域 (Internet) 整?分?的完整一?, 所以希望你可以在 Linux 上面安???以上的???卡,????卡接在不同的?域,??可以避免很多??。 至於最重要的防火???是:『??所有的??,??放特定的服?』模式。 而且假??部使用者已?受?良好的??,因此在 filter table 的三?????政策是:

    INPUT ? DROP
    OUTPUT 及 FORWARD ? ACCEPT
    ?了未?修改的方便,?哥?整? script 拆成三部分,分?是:

    iptables.rule:?定最基本的??,包括清除防火???、?入模?、?定服?可接受等;
    iptables.deny:?定抵?某些?意主?的?入;
    iptables.allow:?定允?某些自?的後??源主?!
    ?哥底下??提供的防火?流程是??的:



    ?九、防火???的流程

    原?上,?部 LAN 主??主?本身的?放度很高,因? Output ? Forward 是完全?放不理的!?於小家庭的主?是可以接受的,因?我??部的???量不多,而且人?都是熟悉的, 所以不需要特?加以控管!但是:『在大企?的?部,??的??是很不合格的, 因?您不能保??部所有的人都可以按照您的?定?使用 Network !』也就是?『家??防』呀! 因此,? Output ? Forward 都需要特?加以管理才行!



    --------------------------------------------------------------------------------
    ???定

    事?上,我?在?定防火?的?候,不太可能?一?一?指令的?入,通常是利用 shell scripts ??我??成??的功能?!底下是利用上面的流程?所??出?的防火? scripts,您可以?考看看, 但是您需要??境修改成?合您自己的?境才行喔!
    [root@linux ~]# mkdir -p /usr/local/virus/iptables
    [root@linux ~]# cd /usr/local/virus/iptables
    [root@linux iptables]# vi iptables.rule
    #!/bin/bash

    # ?先?入您的相???,不要?入??了!
    EXTIF="eth1" # ??是可以?上 Public IP 的?路介面
    INIF="eth0" # ?部 LAN 的?接介面;若??填 ""
    INNET="192.168.1.0/24" # ?部 LAN 的?域,若?有?部 LAN ??定? ""
    export EXTIF INIF INNET

    # 第一部份,??本?的防火??定!###########################
    # 1. 先?定好核心的?路功能:
    echo "1" > /proc/sys/net/ipv4/tcp_syncookies
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo "1" > $i
    done
    for i in /proc/sys/net/ipv4/conf/*/log_martians; do
    echo "1" > $i
    done
    for i in /proc/sys/net/ipv4/conf/*/accept_source_route; do
    echo "0" > $i
    done
    for i in /proc/sys/net/ipv4/conf/*/accept_redirects; do
    echo "0" > $i
    done
    for i in /proc/sys/net/ipv4/conf/*/send_redirects; do
    echo "0" > $i
    done

    # 2. 清除??、?定??政策及?放 lo ?相?的?定值
    PATH=/sbin:/usr/sbin:/bin:/usr/bin; export PATH
    iptables -F
    iptables -X
    iptables -Z
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m state --state RELATED -j ACCEPT

    # 3. ???外的防火? script 模?
    if [ -f /usr/local/virus/iptables/iptables.deny ]; then
    sh /usr/local/virus/iptables/iptables.deny
    fi
    if [ -f /usr/local/virus/iptables/iptables.allow ]; then
    sh /usr/local/virus/iptables/iptables.allow
    fi
    if [ -f /usr/local/virus/httpd-err/iptables.http ]; then
    sh /usr/local/virus/httpd-err/iptables.http
    fi
    iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

    # 4. 允?某些?型的 ICMP 封包?入
    AICMP="0 3 3/4 4 11 12 14 16 18"
    for tyicmp in $AICMP
    do
    iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT
    done

    # 5. 允?某些服?的?入,?依照您自己的?境??
    # iptables -A INPUT -p TCP -i $EXTIF --dport 22 -j ACCEPT # SSH
    # iptables -A INPUT -p TCP -i $EXTIF --dport 25 -j ACCEPT # SMTP
    # iptables -A INPUT -p UDP -i $EXTIF --sport 53 -j ACCEPT # DNS
    # iptables -A INPUT -p TCP -i $EXTIF --sport 53 -j ACCEPT # DNS
    # iptables -A INPUT -p TCP -i $EXTIF --dport 80 -j ACCEPT # WWW
    # iptables -A INPUT -p TCP -i $EXTIF --dport 110 -j ACCEPT # POP3
    # iptables -A INPUT -p TCP -i $EXTIF --dport 443 -j ACCEPT # HTTPS

    # 第二部份,??後端主?的防火??定!##############################
    # 1. 先?入一些有用的模?
    modules="ip_tables iptable_nat ip_nat_ftp ip_nat_irc ip_conntrack
    ip_conntrack_ftp ip_conntrack_irc"
    for mod in $modules
    do
    testmod=`lsmod | grep "${mod} "`
    if [ "$testmod" == "" ]; then
    modprobe $mod
    fi
    done

    # 2. 清除 NAT table 的??吧!
    iptables -F -t nat
    iptables -X -t nat
    iptables -Z -t nat
    iptables -t nat -P PREROUTING ACCEPT
    iptables -t nat -P POSTROUTING ACCEPT
    iptables -t nat -P OUTPUT ACCEPT

    # 3. ?放成?路由器,且? IP 分享器!
    if [ "$INIF" != "" ]; then
    iptables -A INPUT -i $INIF -j ACCEPT
    echo "1" > /proc/sys/net/ipv4/ip_forward
    if [ "$INNET" != "" ]; then
    for innet in $INNET
    do
    iptables -t nat -A POSTROUTING -s $innet -o $EXTIF -j MASQUERADE
    done
    fi
    fi
    # 如果你的 MSN 一直?法??,或者是某些?站 OK 某些?站不 OK,
    # 可能是 MTU 的??,那你可以?底下?一行?他取消?解??? MTU 限制??
    # iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss \
    # --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

    # 4. ?部伺服器的?定:
    # iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 80 \
    # -j DNAT --to 192.168.1.210:80


    特?留意上面程式?的特殊字?部分,基本上,你只要修改一下最上方的介面部分, ??就能??作??防火?了。不?因?每?人的?境都不相同, 因此你在?定完成後,依?需要??一下才行喔!不然,出了??不要怪我啊!.... 再?看一下?於 iptables.allow 的?容是如何?假如我要?一? 140.116.44.0/24 ???域的所有主??源可以?入我的主?的?,那????案的?容可以?成??:
    [root@linux iptables]# vi iptables.allow
    #!/bin/bash
    # 底下?填?你允??入本?的其他?域或主?啊!
    iptables -A INPUT -i $EXTIF -s 140.116.44.0/24 -j ACCEPT

    # 底下?是?於抵?的?案?定法!
    [root@linux iptables]# vi iptables.deny
    #!/bin/bash
    # 底下填?的是『你要抵?的那?咚咚!』
    iptables -A INPUT -i $EXTIF -s 140.116.44.254 -j DROP

    [root@linux iptables]# chmod 700 iptables.*


    ??三??案的?限?定? 700 且只?於 root 的?限後,就能?直接?行 iptables.rule ?! 不?要注意的是,在上面的案例?中,?哥???所有的服?的通道都是??的! 所以你必?要到本?防火?的第 5 步???一些?解符? (#) 解?才行。 同?的,如果有其他更多的 port 想要???,一?需要增加?外的??才行喔!

    不?,?是如同前面我?所?的,?? firewall ?能提供基本的安全防?,其他的相????需要再????呢! 此外,如果你希望一??就自??行?? script 的?,?????案的完整?名?入 /etc/rc.d/rc.local ?中,有?像底下??:
    [root@linux ~]# vi /etc/rc.d/rc.local
    .....其他省略.....
    # 1. Firewall
    /usr/local/virus/iptables/iptables.rule
    .....其他省略.....


    上述三??案?你不要在 Windows 系?上面??後?送到 Linux 上?作,因? Windows 系?的?行字元??, ?可能?致??案?法?行。建?你直接到底下去下?,?送到 Linux 後可以利用 dos2unix 指令去???行字元! 就不?有??!

    http://linux.vbird.org/download/index.php?action=detail&fileid=43
    ?就是一?最??、?春的防火?。同?,??防火??可以具有最?春的 IP 分享器的功能呢! 也就是在 iptables.rule ???案?中的第二部分了。 ?部分我?在下一??再??介?的。

    --------------------------------------------------------------------------------
    NAT 主?的?定

    呼呼!?於?到??地方了!我???要架?一?路由器的延伸伺服器,就?之? NAT 主?。 NAT 是什?呢???的?,你可以?他??部 LAN 主?的『 IP 分享器』啦!

    NAT 的全名是 Network Address Translation,字面上的意思是『?路位址的??』。由字面上的意思我??想一想, TCP/IP 的?路封包不是有 IP 位址??那 IP 位址不是有?源?目的??我?的 iptables 指令就能?修改 IP 封包的表??料, 嘿嘿!?目?或?源的 IP 位址都可以修改呢!甚至? TCP 封包表?的 port number 也能修改!真是有趣!

    NAT 主?的功能可以?到?似?二所介?的?似 IP 分享的功能之外, ?可以?到?似?四所介?的 DMZ (非?事?) 的功能!?完全取?於我?的 NAT 是修改: (1)?源 IP ?是 (2)目? IP !底下我?就?聊一聊吧! ^_^


    --------------------------------------------------------------------------------
    什?是 NAT? SNAT? DNAT?

    在?到 NAT 的???作之前,?我?再?看一下比???的封包透? iptables 而?送到後端主?的流程(?往前?考?八)。??路??如?二的架?, 若?部 LAN 有任何一部主?想要?送封包出去?,那???封包要如何透? Linux 主?而?送出去? 他是??的:

    先?? NAT table 的 PREROUTING ?;
    ?由路由判??定??封包是要?入本??否,若不?入本?,?下一步;
    再?? Filter table 的 FORWARD ?;
    通? NAT table 的 POSTROUTING ?,最後?送出去。
    NAT 主?的重?就在於上面流程的第 1,4 步?,也就是 NAT table 的??重要的?:PREROUTING ? POSTROUTING。 那????有什?重要的功能呢?重?在於修改 IP 嘛!但是????修改的 IP 是不一?的! POSTROUTING 在修改?源 IP ,PREROUTING ?在修改目? IP 。 由於修改的 IP 不一?,所以就?? ?源 NAT (Source NAT, SNAT) 及目? NAT (Destination NAT, DNAT)。我?先??一? IP 分享器功能的 SNAT 吧!


    --------------------------------------------------------------------------------

    ?源 NAT, SNAT

    你??有??? IP 分享器??玩意?,他可以?你家庭?的好?部主?同?透?一? ADSL ?路??到 Internet 上面, 例如?二??的方式??,那? Linux 主?就是 IP 分享器啦!那?他是如何?到 IP 分享的功能?就是透? NAT 表格的 POSTROUTING ??理的。假?你的?路??如?二所示, 那? NAT 主?是如何?理??封包的呢?



    ?十、SNAT 封包?送出去的示意?

    如上?所示,在用?端 192.168.1.100 ?部主?要??到 http://tw.yahoo.com 去?,他的封包表??如何?化?

    用?端所?出的封包表?中,?源?是 192.168.1.100 ,然後?送到 NAT ?部主?;
    NAT ?部主?的?部介面 (192.168.1.2) 接收到??封包後,?主?分析表??料, 因?表??料?示目的?非 Linux 本?,所以?始??路由, ?此封包?到可以?接到 Internet 的 Public IP ?;
    由於 private IP ? public IP 不能互通,所以 Linux 主?透? iptables 的 NAT table ?的 Postrouting ??封包表?的?源??成? Linux 的 Public IP ,?且???不同?源 (192.168.1.100 及 public IP) 的封包???入?存????中, 然後?此封包?送出去了;
    此? Internet 上面看到??封包?,都只?知道??封包?自那? Public IP 而不知道其?是?自?部啦。 好了,那?如果 Internet 回?封包呢?又?怎?作?



    ?十一、SNAT 封包接收的示意?


    在 Internet 上面的主?接到??封包?,??回??料?送?那? Public IP 的主?;
    ? Linux NAT 主?收到?自 Internet 的回?封包後,?分析?封包的序?,?比?????到????中的?料, 由於???封包?後端主?之前?送出去的,因此在 NAT Prerouting ?中,??目? IP 修改成?後端主?,亦即那部 192.168.1.100,然後??目?已?不是本? (public IP), 所以?始透?路由分析封包流向;
    封包??送到 192.168.1.2 ???部介面,然後再?送到最?目? 192.168.1.100 ?器上去!
    ????流程,您就可以??到,所有?部 LAN 的主?都可以透??部 NAT 主???出去, 而大家在 Internet 上面看到的都是同一? IP (就是 NAT 那部主?的 public IP 啦!), 所以,如果?部 LAN 主??有?上不明?站的?,那??部主?其?是具有一定程度的安全性的啦! 因? Internet 上的其他主??有?法主?攻?你的 LAN ?的 PC 嘛!所以我?才??, NAT 最??的功能就是?似 IP 分享器啦!那也是 SNAT 的一?。

    Tips:
    NAT 主??路由器有啥不同?基本上,NAT 主?一定是路由器,不?, NAT 主?由於?修改 IP 表??料, 因此?????封包的路由器不同。最常?的 IP 分享器就是一?路由器,但是?? IP 分享器一定?有一? Public IP ?一? Private IP,? LAN ?的 Private IP 可以透? IP 分享器的 Public IP ?送出去喔! 至於路由器通常??都是 Public IP 或同?? Private IP。


    --------------------------------------------------------------------------------

    目? NAT, DNAT

    SNAT 主要是?付?部 LAN ?接到 Internet 的使用方式,至於 DNAT ?主要用在?部主?想要架?可以? Internet 存取的伺服器啦! 就有??似?四的 DMZ ?的主?啊!底下也先??一? DNAT 的?作吧!\r



    ?十二、DNAT 的封包?送示意?

    如上?十二所示,假?我的?部主? 192.168.1.210 ??了 WWW 服?,??服?的 port ??在 port 80 , 那? Internet 上面的主? (61.xx.xx.xx) 要如何?接到我的?部伺服器呢??然啦, ?是得要透? Linux NAT 主?嘛!所以?部 Internet 上面的?器必?要?接到我?的 NAT 的 public IP 才行。

    外部主?想要?接到目的端的 WWW 服?,?必?要?接到我?的 NAT 主?上?;
    我?的 NAT 主?已??定好要分析出 port 80 的封包,所以? NAT 主?接到??封包後, ??目? IP 由 public IP 改成 192.168.1.210 ,且??封包相?????下?,等待?部伺服器的回?;
    上述的封包在??路由後,?到 private 介面?,然後透??部的 LAN ?送到 192.168.1.210 上?!
    192.186.1.210 ?回??料? 61.xx.xx.xx ,??回??然??送到 192.168.1.2 上?去;
    ??路由判?後,?到 NAT Postrouting 的?,然後透???第二步?的??,??源 IP 由 192.168.1.210 改? public IP 後,就可以?送出去了! (?似?十的??!)。
    其?整?步??乎就等於 SNAT 的反向?送哩!?就是 DNAT ?!很??吧!


    --------------------------------------------------------------------------------
    最?春 NAT 主?: IP 分享功能

    在 Linux 的 NAT 主?服??中,最常?的就是?似?二的 IP 分享器功能了。 而由??的介?你也?知道,?? IP 分享器的功能其?就是 SNAT 啦!作用就只是在 iptables ?的 NAT 表格?中,那?路由後的 POSTROUTING ??行 IP 的??就是了。另外, 你也必?要?解,你的 NAT 主?必?要有一? public IP 介面,以及一??部 LAN ?接的 private IP 介面才行。

    同?的,我的假?是??的:

    外部介面使用 eth1 ,??介面具有 public IP 喔;
    ?部介面使用 eth0 ,假??? IP ? 192.168.1.2 ;
    ?住!?你利用前面?章?到的?料??定你的?路??後,?必要?行路由的??, 因?在 NAT 主?的?定方面,最容易出?的地方就是路由了!尤其是在?皆?生 ppp0 ???外介面的?境下, ????最?重。反正你要?得:『如果你的 public IP 取得的方式是?接或 cable modem ?,你的?定? /etc/sysconfig/network, ifcfg-eth0, ifcfg-eth1 等?案,千?不要?定 GATEWAY 啦!』否?就?出??? default gateway ,反而?造成??。

    如果你??已?下?了 iptables.rule ,那???案?已?含有 NAT 的?本了! 你可以看到??案的第二部份?於 NAT 主?的部分,??有看到底下??行:
    iptables -A INPUT -i $INIF -j ACCEPT
    # ?一行在? NAT 主?可接受?自?部 LAN 的封包
    echo "1" > /proc/sys/net/ipv4/ip_forward
    # 上??一行?是在?你的 Linux 具有 router 的能力
    iptables -t nat -A POSTROUTING -s $innet -o $EXTIF -j MASQUERADE
    # ?一行最??!就是加入 nat table 封包??!


    重?在那?『 MASQUERADE 』!???定值就是『 IP ??成?封包出去 (-o) 的那??置上的 IP 』!以上面的例子??,就是 $EXTIF ,也就是 eth1 啦! 所以封包?源只要?自 $innet (也就是?部 LAN 的其他主?) ,只要?封包可透? eth1 ?送出去, 那就?自?的修改 IP 的?源表?成? eth1 的 public IP 啦!就????! 你只要? iptables.rule 下?後,??定好你的?、外?路介面, ?行 iptables.rule 後,你的 Linux 就?有主?防火?以及 NAT 主?的功能了!


    --------------------------------------------------------------------------------

    LAN ?其他 PC 的?定

    上面提到的是 NAT 主?的?定,那?在 LAN ?的其他 PC ?路??要如何?定呢?很??啊, 只要?得底下的??值即可:

    NETWORK ? 192.168.1.0
    NETMASK ? 255.255.255.0
    BROADCAST ? 192.168.1.255
    IP 可以?定 192.168.1.1 ~ 192.168.1.254 ?,不可重?!
    通?? (Gateway) 需要?定? 192.168.1.2 (NAT 主?的 Private IP)
    DNS (/etc/resolv.conf) 需?定? 168.95.1.1 (Hinet) 或 139.175.10.20 (Seed Net), ???依您的 ISP 而定;
    ??就搞定一部?春的 NAT 主?了!??的要命啊!

    事?上,除了 IP ?? (MASQUERADE) 之外,我??可以直接指定修改 IP 封包表?的?源 IP 呢! ?例??,如下面??例子:
    ?例:?要由 eth1 ?送出去的封包,封包?源改? 192.168.200.250
    [root@linux ~]# iptables -t nat -A POSTROUTING -o eth1 \
    > -j SNAT --to 192.168.200.250

    ?例:同上,但封包?源? 192.168.200.210~220
    [root@linux ~]# iptables -t nat -A POSTROUTING -o eth1 \
    > -j SNAT --to 192.168.200.210-192.168.200.210


    ??也可以修改?路封包的?源 IP ?料喔!不?,除非你使用的是固定 IP , 且有多? IP 可以?外??,否?一般使用 IP ??即可,不需要使用到?? SNAT 吧? ?然,你也可能有自己的?特的?境啦! ^_^



    --------------------------------------------------------------------------------
    iptables 的?外核心模?功能

    如果你??在 iptables.rule ?的第二部分有仔?看的?, 那有?有?得很奇怪,?何我?需要?入一些有用的模???例??, ip_nat_ftp 及 ip_net_irc ? ?是因?很多通??定使用的封包??比?特殊,尤其是 FTP ?案??使用到?? port ??理?料! ??部分我??在 FTP 章?再次的??,在??你要先知道,我?的 iptables 提供很多好用的模?, ?些模?可以?助封包的??用途,?我?可以?省很多 iptables 的???定, 好棒的?! ^_^



    --------------------------------------------------------------------------------
    在防火?後端之?路伺服器 DNAT ?定

    既然可以做 SNAT 的 IP 分享功能,我??然可以使用 iptables 做出 DMZ 啦! 但是再次重申,不同的伺服器封包??的方式可能有?差?,因此,建?新手不要玩??咚咚! 否?很容易?致某些服??法?利? Internet 提供的??。

    先??一?,如果我想要?理 DNAT 的功能?, iptables 要如何下?指令? 另外,你必?要知道的是, DNAT 用到的是 nat table 的 Prerouting ?喔!不要搞?了。
    ?例:??接到 eth1 介面的 port 80 ??到?部的 192.168.1.210
    [root@linux ~]# iptables -t nat -A PREROUTING -p tcp -i eth1 \
    > --dport 80 -j DNAT --to 192.168.1.210:80


    那?『 -j DNAT --to IP[:port] 』就是精髓啦!代表? eth1 ??介面?入的,且想要使用 port 80 的服??, ??封包重新??到 192.168.1.210:80 的 IP 及 port 上面!可以同?修改 IP ? port 呢!真方便。 其他?有一些???的 iptables 使用方式,如下所示:
    -j REDIRECT --to-ports
    # ??也挺常?的,基本上,就是?行本?上面 port 的??就是了!
    # 不?,特?留意的是,???作?能?在 nat table 的 PREROUTING 以及
    # OUTPUT ?上面?行而已喔!

    ?例:?要求? 80 ??的封包??到 8080 ?? port
    [root@linux ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 \
    > -j REDIRECT --to-ports 8080
    # ?玩意最容易在您使用了非正?的 port ??行某些 well known 的?定,
    # 例如使用 8080 ?? port ??? WWW ,但是?人都以 port 80 ???,
    # 所以,您就可以使用上面的方式???方?您主?的????到 8080 ?!


    至於更多的用途,那就有待你自己的?掘?! ^_^

    --------------------------------------------------------------------------------
    重?回?

    要?有一部安全的主?,必?要有良好的主??限?定;??的更新套件;定期的重要?料?份;完善的?工教育??。 ?有防火?是不足?的;
    防火?最大的功能就是?助你『限制某些服?的存取?源』,可以管制?源?目?的 IP ;
    防火?依?封包抵?的??,可以分? Proxy 以及 IP Filter (封包??) ???型;
    ?了?整??路的信任 (LAN) ?不信任 (Internet) ?域完整切割,防火?通常具有?????路介面, 分???信任?不信任?域;
    在防火??,但不在 LAN ?的伺服器所在?域,通常被?? DMZ (非?事?),如?四所示;
    封包???制的防火?,通常至少可以分析 IP, port, flag (如 TCP 封包的 SYN), MAC 等等;
    防火??於病毒的抵??不敏感;
    防火??於?自?部的?路?用或?用的抵?性可能?不足;
    ?不是架?防火?之後,系?就一定很安全!?是需要更新套件漏洞以及管制使用者及?限?定等;
    核心 2.4 以後的 Linux 使用 iptables 作?防火?的??;
    防火?的?定?『???序』有很大的??;若???序??,可能??致防火?的失效;
    iptables 的?? table 共有三?,分?是 filter, nat 及 mangle ,?用者? filter (本?) ? nat (後端主?)。
    filter table 主要???本?的防火??定,依?封包流向又分? INPUT, OUTPUT, FORWARD 三??;
    nat table 主要??防火?的後端主?,依?封包流向又分? PREROUTING, OUTPUT, POSTROUTING 三??, 其中 PREROUTING ? DNAT 有?, POSTROUTING ?? SNAT 有?;
    iptables 的防火????比?,但所有??都不符合?,?以??政策 (policy) 作?封包的行?依?;
    核心本身有提供很多?路相?功能,?? IPv4 之?定值都在 /proc/sys/net/ipv4/* ?;
    iptables 的指令列?中,可以下?的??相?的多,?下? -j LOG 的???,??封包的流程?被??到 /var/log/messages ?中;
    防火?可以多重?定,例如?然已??定了 iptables ,但是仍然可以持??定 TCP Wrappers ,因??也不?得什??候 iptables ?有漏洞~或者是????不良!

  34. baizx 于 2009-08-10 10:33:05发表:

    上面那个是用LINUX做路由了 接着是
    ???路安全

    ?路封包???入主?的流程

    在?一章?中,我?要??的是,??自一??路上的??要求想?入我?的主??, ???路封包在?入主???取得?料的整?流程是如何??解了整?流程之後, 你才???:原?系?操作的基本概念是如此的重要! 而你也才??解要如何保?你的主?安全?!??少?,咱????瞧一瞧先。


    --------------------------------------------------------------------------------
    封包?入主?的流程

    在?路基?章??中我??到?目前的?路架?主要是 TCP/IP ?主, 而?大部分的?路??是?向的,其中又以 TCP 封包?代表。 另外,根? Server/Client 的??方向? TCP/IP 的概念,我??知道建立一?可靠的?路??需要一? Socket Pair 的?助, 亦即成?的?源?目?之 IP ? port ?,以使??的?端可以?利的?接到相?的?用??上。

    上面?到的?些都是?於?路的基?概念,在??我?要?的是,那?要??? TCP 封包?利的?入到 Linux 主?上, 然後使用 port 所??的???存取系?的?案系??源?,?得要??哪些?卡呢? ?例??,如果你的 Linux 主?有?? WWW 的 port 80 ?路服?,而 port 80 是由一?名?? httpd 的程式所??的,??程式的?定?? httpd.conf ,那? Client 的??要?入到你 Linux 主?的 WWW ?, ???什??段呢?基本上,???如下?的???段:



    ?一、?路封包?入本?的流程?序


    封包??防火?:IP Filtering 或 Net Filter
    要?入 Linux 本?的封包都?先通? Linux 核心的??防火?,就是?? IP Filter 或 Net Filter 的咚咚, ??的?,就是 iptables ????所提供的防火?功能。iptables ?? Linux ??的防火???可以???路封包的 IP, port, MAC, 以及????如 SYN, ACK 等?料?行分析, 以??不受?迎的?路封包呢!?例??,如果有? IP ? aaa.bbb.ccc.ddd 是??意?站?源, 那你就可以透? iptables 抵??自? IP 的?路封包的??,以?到基本的主?防火?功能。 ?部份我??在下一章深入?解。


    第二?防火?:TCP Wrappers
    通? IP Filter 之後,?路封包??始接受 Super daemons 及 TCP_Wrappers 的??,那?是什?呢? 呵呵!?穿了就是 /etc/hosts.allow ? /etc/hosts.deny 的?定?功能?。 ??功能也是?? TCP 的 Header ?行再次的分析,同?你可以?定一些?制?抵制某些 IP 或 Port ,好??源端的封包被??或通???;


    服? (daemon) 的功能:
    前面????作基本上是 Linux ??的功能,而?第三?步?就是?於??功能了。 ?例??,你可以在 httpd.conf ???定?之???某些 IP ?源不能使用 httpd ??服??取得主?的?料, 那?即使? IP 通?前面??的??,他依??法取得主?的?源喔!但要注意的是, 如果 httpd ?支程式本?就有??的?,那? client 端?可直接利用 httpd ??的漏洞?入侵主?,而不需要取得主?? root 的密?!因此, 要小心?些??在???路上面的??喔! 所以前一章?路升?套件是很重要的!


    使用主?的?案系??源:
    想一想,你使用??器?接到 WWW 主?最主要的目的是什???然就是?取主?的 WWW ?料啦! 那 WWW ?料是啥?就是?案啊!^_^!所以,最??路封包其?是要向主?要求?案系?的?料啦。 我???假?你要使用 httpd ?支程式?取得系?的?案?料,但 httpd ??是由一?系???名?? httpd ???的,所以:你的???料的?限?然就是要? httpd ?支程式可以?取才行啊!如果你前面三?的?定都 OK ,最??限?定??, 使用者依??法??你的???料的。
    在?些步?之外,我?的 Linux 以及相?的??都可能??支援登????的功能, ?了???史?程,以方便管理者在未?的??查??入侵??,良好的分析登??的??是一定要建立的, 尤其是 /var/log/messages ? /var/log/secure ?些??案! ?然各大主要 Linux distribution 大多有推出?合他?自己的登??分析套件,例如 CentOS 的 logwatch ,不??竟?套件?不?得?合所有的 distributions ,所以?哥??自己?了一? logfile.sh 的 shell script,您可以在底下的?址下??程式:

    http://linux.vbird.org/download/index.php?action=detail&fileid=60
    好了,那?根??些流程,你?得我?可以如何保?自己的主?呢?



    --------------------------------------------------------------------------------
    主?能作的保?: ?限?定、套件更新、SELinux

    在基?篇?面的前面?章我??到很多?於?案?限方面的注意事?, ?於目?最重要的是那? w (可?入)的?限,至於??案??,那? r (可?取) 也是非常重要的!而由前一小?的?一我?也知道?路服?其?就是提供主?的?案?源? client 端?查?就是了。

    根???的?法,你可以知道,如果你有某些不想要被?取的?料在主?上面的?, 那????料的?限?定?不能被某些?路服??取的情?, 就能?到最基?的保?了。所以您??案?限重不重要啊!很重要的!不是??


    --------------------------------------------------------------------------------

    ?限的重要性

    ?哥常常在上?的?候??玩笑,?如果你只要下?一?指令,那你的系?就得要重新安?了! 那就是:『chmod -R 777 /』,??指令可是『?度危?』的喔!?何呢?因?系?上面本?就有很多需要被保?的?料, 例如 /etc/shadow 以及 /etc/passwd 等,尤其是 shadow 密??案。?然??是加密?的?料, 不??忘了,?在的 PC 速度?在太快了,而?路上又有太多暴力破解密?的??, 如果你的 /etc/shadow 被取得後,嘿嘿!你的密?其?就算『公?了』。那?一你有?放某些?路服?的?, 例如可??登入的 ssh 服?或 mail 服?,那任何人都可以使用你的主??登入, 或者是利用你的主??收你主?上的其他使用者的信,唉!糗大了!

    再者,很多朋友在主?上面常常喜?建立?限? drwxrwxrwx 的目??提供使用者上??料, ??在是很危?ㄟ!如果使用者的功力?高的?,他可以在?路??如 httpd 的使用上, ?建立一些危?的 script 在你的 drwxrwxrwx 的目?中,那如果你不小心?入到?目?, 又不小心?行了??意使用者所建立的 script ,恭喜您~中?!

    另外,如果你是?校老?,?了公平?同?本身的?益起?,你?希望同??所上?的?料不?被其他同?所?取。 那?你?如何?行?限的???如果??的??生通通上?到?一目?,?且?有指定特殊的?限?, 不但某些同?的?料可能?被?取???,更?的是,可能?料?被某些?意同?所?除! 那可就麻?了!所以,?限的?定真的很重要啦!

    而除了??的?限之外,事?上目前 Linux 支援一??? ACL 的?外?限控制方式, 也支援更?化安全的 SELinux ,???小?西我??在本章的後面部分??介?。



    --------------------------------------------------------------------------------

    ?格的密?的重要性:

    很多使用者?了方便??,老是跟系?管理??:『喂!我的密?可不可以??一?啊? 太麻?的我都?不住!』如果您是那?可?的系?管理?,你?如何回?? 如果你大?方便之?,未?可是後患??的!?例??,如果你的 mail server 上面某?使用者??? alex 好了,那?他的 email address ??是:『 alex@your.host.name 』, 那??使用者由於使用??不良,他?他的 mail address 留在 Internet 上,所以很多人都知道?? address。

    知道就知道,?有什?了不起??呵呵!了不起的很!如果有???伙,他想要偷偷的收取 alex 的信, 那他就在他的收信??上面偷偷填上你的主?,然後偷偷?入?? alex ?且?入密?? alex , 如果你真的? alex ??使用者建立同名的密?,哈哈!系啊(?台??音,??)!?? alex 永?都收不到他的信了!

    ?算?好?!如果你有?放?端??登入的服?,那???伙就可以利用 alex ?????密??登入你的主?, 如果你?有做好?限??的?,哇!整部主?的?料被偷光光!那可有的瞧的了! 所以,您?密?不重要??我可不??!



    --------------------------------------------------------------------------------

    套件更新的重要性:

    很多朋友由於?路文章的??,可能?拿比??的 Linux distribution ?作?架站的平台, ?例??,使用 Red Hat 9 ?架站的朋友想必?是不少的。如果你真的利用?的版本??行?站的架?, 而且?? Internet ?放服?的?,那?你的主???在不到一天的???被『?架』的! ?什?呢?因?套件??都是可能有漏洞的,如果你?有?洞的?.....

    有些朋友??:『我的密??定的?格一?,??就好了吧?』真的???我?瞧一瞧?一的流程, 第三?步?是否使用到 httpd ??程式的功能了,?一??程式有??怎??? ?例??,酷??的朋友曾?在他??的研???中露一手如何?架?有修?漏洞的 Linux 系?, 利用的就是 httpd ????的漏洞,整?入侵的?程?有花?一分?以上! 而且他取到的可是 root 的?限?!不是什?阿?阿狗的喔! 而且他完全?有?入任何密?,使用的入侵程式?是由 Internet 上面取得的。

    在上???例子?哥不是要??朋友的功力,而是要提醒大家,套件修?的重要性! 要取得破解程式的管道?在太多了,但如果你都有在最短的???取得套件的更新的?, 那?至少?破解程式?你的系?就不?生效!你的主?自然就?比?安全些。 而????在所有的作?系?上面都是存在的! Windows 系?也是每?月必?要推出他?的套件程式修?, 否?一??被攻?或入侵啊!不? Linux 的套件漏洞修?要快多了!



    --------------------------------------------------------------------------------

    SELinux

    在最新的 Linux 2.6 版核心上所?展的 distributions 目前??都???一?名? SELinux 的核心模?, ?? SELinux 必?要在???入核心?就得要?入,那??玩意?是啥咚咚? SELinux 是 Security Enhanced Linux (安全加?的 Linux) 的??, 他?不是一?防火?的??,而是一?『???案系??限作更?部??的一?模?』。

    ??的 Linux ?限是分?三?身份 (owner, group, others) 以及三??限 (r, w, x), 但事?上,?三?身份的三??限?合??法有效的管理所有系?上的 daemon 存取?料?所需要的行?。 因此美??家安全局便?展出??可以更?部???案?限功能的 SELinux 了。

    由於 SELinux 主要是?行?案系?的?部?限?定,所以想要使用 SELinux 的配置?, 需要? Linux 的?案系?以及基?的作?系?概念要很清楚,否???使得很多的?路服??法正?的?用系??源, ?致你的主?很多服??法存取系??料!因此,?於我??接?到 Linux 架站的朋友??, 建?你先?? SELinux ,等到?三年後?於 Linux 有很深的概念後, 再???配置 SELinux ??有趣的咚咚!

    也就是?,如果你?有?? SELinux 的?,那?你就得要?? SELinux ?行?案?限的?外配置, 否?你的?路服?就不可能?正常的??!那?如何?? SELinux 呢?你可以??做:
    1. 先?? /etc/selinux/config 的?容
    [root@linux ~]# vi /etc/selinux/config
    # ?底下的?定值改成??:
    SELINUX=disabled

    2. 修改??? grub 的?定?
    [root@linux ~]# vi /boot/grub/menu.lst
    .....省略.....
    kernel /boot/vmlinuz-2.6.9 ro root=/dev/hda1 rhgb selinux=0
    .....省略.....

    3. 重新??
    [root@linux ~]# sync; reboot


    因? SELinux 必?要在??的?候?入,同?的,要卸?也必?要重新??才行! 因此,如果你使用的是您 distributions 的??安?,那??乎 SELinux 都是????的! 你可以依?上述的??步?? SELinux 取消後,重新??即可。如果?於 SELinux 有?趣的?, 底下的??可以?考看看:

    http://fedora.redhat.com/docs/selinux-faq-fc5/
    http://selinux.sourceforge.net/
    http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/selinux-guide/index.html

    --------------------------------------------------------------------------------
    主?的?部?限??:ACL 的使用

    在前一小??中我?提到 Linux 系?的?限是很重要的,偏偏??的?限?有三?身份、三??限而已, 配合 chmod, umask, chown, chgrp 等指令??行使用者?群?相??限的?定。如果要?行比???的?限?定?, 例如某?目?要?放?某?特定的使用者?使用?,??的 owner,group,others 的?限方法可能就?法?足了。 不??好,我?有 ACL ??玩意?可以使用!?玩意挺有趣的,底下我?就??一?:


    --------------------------------------------------------------------------------
    什?是 ACL?

    ACL 是 Access Control List 的??,主要的目的是在提供??的 owner,group,others 的 read,write,execute ?限之外的?部?限?定。ACL 可以???一使用者, ?一?案或目???行 r,w,x 的?限??,?於需要特殊?限的使用??非常有?助。

    由於 ACL 是??的 Unix-like 作?系??限的?外支援?目,因此要使用 ACL 必?要有?案系?的支援才行。 目前?大部分的?案系?都有支援 ACL 的功能,包括 ReiserFS, EXT2/EXT3, JFS, XFS 等等。 在 SuSE ??版本?中,??是有?? ACL 控制的,不?在 CentOS ????有?? ACL。 所以等一下要使用 ACL 的功能?,你必?要先??你系? filesystem 的支援才行喔!

    那 ACL 主要可以??哪些方面?控制?限呢?他主要可以?????目:

    使用者 (user):可以??使用者??定?限;
    群? (group):??群???象??定其?限;
    ???性 (mask):?可以??在?目?下在建立新?案/目??,??新?料的???限;
    好了,再?看看如何?你的?案系?可以支援 ACL 吧!



    --------------------------------------------------------------------------------
    如何?? ACL

    要?你的?案系?支援 ACL 非常的??!假如要?你的 /home 支援 ACL 的?,可以直接??做:
    [root@linux ~]# mount -o remount,acl /home
    [root@linux ~]# mount | grep /home
    /dev/hda5 on /home type ext3 (rw,acl)


    看到那?出?的 ACL 了吧!那就?了~如果?有出??一行,你的?案系?是?法支援 ACL 的, 那下一?的??您可就?能?力了~那如果想要一??就?你的?案系?支援 ACL 呢? 呵呵!修改 /etc/fstab 就?了!?他改成?似底下的模?:
    [root@linux ~]# vi /etc/fstab
    /dev/hda5 /home ext3 defaults,acl 1 2


    加入那一段特殊字?的?料,那?下次??就能?支援 ACL 了!很??吧! ^_^



    --------------------------------------------------------------------------------
    ACL 的?定技巧: getfacl, setfacl

    好了,?你的 filesystem ?? ACL 支援後,接下??如何?定??察 ACL 呢? 很??,利用???指令就可以了:

    getfacl:取得某??案/目?的 ACL ?定?目;
    setfacl:?定某?目?/?案的 ACL ??。
    先?我??瞧一瞧 setfacl 如何使用吧!
    [root@linux ~]# setfacl [-mxdb] ?定值
    ??:
    -m :?定一? ACL ??;
    -x :取消一? ACL ??;
    -b :全部的 ACL ??都移除;
    -d :?定??的 ACL ??,?能??目?使用。


    最常用的就是那? -m 的??啦!用?定?一? ACL 的?定???。那? ACL ?如何?定呢? 不同的使用者、群?????限?定方法有?不同,不?,基本上有底下?三??易的?定方法:
    1. ??使用者
    ?定值的???: u:[使用者??列表]:[rwx]
    例如?? dmtsai ??使用者???其?限? rx ,?:
    [root@linux ~]# setfacl -m u:dmtsai:rx somefilename

    2. ??群???定
    ?定值的???: g:[群?名]:[rwx]
    例如?? users ??群????其?限? rw ,?:
    [root@linux ~]# setfacl -m g:users:rw somefilename

    3. ?????限???,?似 umask 的功能
    ?定值的???: m:[rwx]
    例如假????限? rwx,?:
    [root@linux ~]# setfacl -m m:rwx somefilename


    ?解了上面的?定方式後,?在?我????操作一下吧!假?:

    你已?? /home ???立的 partition ?定了 ACL 的支援了,
    ?且在 /home 底下?定了一?名?? project 的目?,
    ?目?要? eric ??使用者,且?於 users ??群?,???限??是 770 ;
    有?使用者??名?? jordan ,他?於 jordan 那?群?,但他想要?入到 project 那?目??工作, 意思是?,jordan 在?目?下需有 w 的?限才行;
    有?使用者他是其他班?的老?,名?? tip ,群?名亦? tip ,他想要?入?目?查?所有?案?料, 但是不能??行?除?新增的工作,亦即他不能?有 w 的?限。
    在??的 Linux ?案?限中,要?成上述的功能?,你得要? jordan ? tip ???使用者加入 users 那?群?才行,但是 jordan 是希望可以在?目??工作的,所以他必?要?有 w 的?限, 而 tip ??能?取,所以他不能?有 w 的?限!哇!如此一?,就?法完成上述的交代事?了! 此?我?只好透? ACL ???的?? tip/jordan ???使用者??定他的?限?!整?流程可以是??的:
    1. 建立?目????好?限:
    [root@linux ~]# mkdir /home/project
    [root@linux ~]# chown eric:users /home/project
    [root@linux ~]# chmod 770 /home/project
    [root@linux ~]# ls -ld /home/project
    drwxrwx--- 2 eric users 4096 Sep 5 15:54 /home/project/
    # 瞧!已??需要的目???好了!使用者/群???限都OK了;

    2. 建立 jordan 的使用?限(需要有 w):
    [root@linux ~]# cd /home
    [root@linux home]# setfacl -m u:jordan:rwx project

    [root@linux home]# getfacl project
    # file: project <==前面三行只是指出???名的?? Linux ?限
    # owner: eric
    # group: users
    user::rwx <==注意看,?是??『??使用者』的?限?定;
    user:jordan:rwx <==?是?? jordan 的?限?定
    group::rwx <==?是??『??群?』的?限?定
    mask::rwx <==?玩意??是???性啦!
    other::---
    # 上面???出共 8 行我??在底下???明!

    [root@linux home]# ls -ld project
    drwxrwx---+ 2 eric users 4096 Sep 5 15:54 project
    # 看看!多了一? + 的??喔!


    那? getfacl 指令可以用?取得某??名的 ACL ?料啦!至於?出的共 8 行?料你必?要??看:

    第 1-3 行:前面三行??示出???案的 Linux ???性,包括使用者、群???名,???用 # ??作??明;


    接下?的每一行的?出?以底下的格式??理:
    ??的目?(使用者、群?等]:[各???列表]:[rwx]
    ??的目?主要有:
    user 使用者
    group 群?
    mask ???限
    other 非本群?的其他使用者
    各???列表中,如果?有任何?料,如 user::rwx ,?代表??使用者??;


    主要有三??位,用『 : 』?隔?三??位;


    第 4 行『user::rwx』:由於使用者列表?位中?有填?任何??,所以代表???限是????使用者, 亦即是??目?的?有人 eric 啦,是 eric 的?限?『 rwx 』的意思?!


    第 5 行『user:jordan:rwx』:使用者 jordan 在??目?下具有 rwx 的?限的意思啦!


    第 6 行『group::rwx』:?有填?群?名?,所以同?是??群?,亦即是那? users ?, ?群?的?限?『rwx』啦;


    第 7 行『mask::rwx』:??的 mask ? rwx 的意思,?? mask 是有用途的!底下??明。


    第 8 行『other::---』:指的就是其他的未?定的使用者?群?的?限了

    好了,?在 jordan ?位朋友?他?入 /home/project 後,立刻就??有 rwx 的?限了! 而不需要加入 users ??群?呢!真是很方便吧!太好了! 另外,你如何知道某??名具有?外的 ACL ?限呢?可以?考上面最?的?出?果中, ??? /home/project ??目?的?限?目竟然是出?『 drwxrwx---+ 』呢! 那?多出?的『 + 』就是表示??名有?外的 ACL 控制?目啦! 那接下?如何?理 tip 呢?同?使用 ACL ?控制:
    3. ?定 tip ??使用者的?限?料:
    [root@linux home]# setfacl -m u:tip:rx project
    [root@linux home]# getfacl project
    # file: project
    # owner: eric
    # group: users
    user::rwx
    user:tip:r-x <==瞧!多出?的咚咚啦!
    user:jordan:rwx
    group::rwx
    mask::rwx
    other::---


    如此一?, tip ?位使用者??能?入?目?去?取而已,而?法?行?入的?作呢! 是否很方便啊!有了 ACL 的控制?目後,您就可以?你系??的有需要使用到特殊?限?定的目??行?部?定, ?你的系??的更合理,更安全啊!


    --------------------------------------------------------------------------------

    ACL ?的 mask ?目

    ?然??就能??定好一? ACL 控制?目,不?你?需要?解到在 ACL ?的 mask 所代表的意?喔! 在上面的那?小案例?中,我???有去?定?? mask,mask 需要?使用者的?限?行???算 (AND) 後, 才是有效的?限?(effective permission)!

    ?例??,如果你?得你的目?要?所有的人都???能?取不能?入?,可以? ACL ?的 mask ?定? rx 即可, 那其他人就不需要再?外的?定了!看看底下??例子:
    [root@linux ~]# cd /home
    [root@linux home]# setfacl -m m:rx project
    [root@linux home]# getfacl project
    # file: project
    # owner: eric
    # group: users
    user::rwx
    user:tip:r-x
    user:jordan:rwx #effective:r-x
    group::rwx #effective:r-x
    mask::r-x
    other::---


    上面的?出全部都是 getfacl 的?出?果,?哥??有加工啊! ^_^! 原本的 jordan 具有『rwx』的?限,而 mask ?有『r-x』,?者去比?後 『?者都有的?限才?生效,就??有效?限 (effective permission) ?』! 所以,jordan ???有 rx 的?限而已啊!??? mask 的用法?了??

    --------------------------------------------------------------------------------
    一些常?的攻?手法?主?的保?方式

    我?由?一?解到?料?送到本??所需要??的?道防?後, ?在您??比?清楚?何我?常常在基?篇?面一直?到?定正?的?限可以保?您的主?了吧? 那?除了前面的?到的主?基本保?之外, 通常人家是如何攻?你的 Linux 主?呢?底下我?就??一?吧! 先?解一下人家是如何攻?你的,我?才有?法想到如何防?,您?是吧?!


    --------------------------------------------------------------------------------

    取得????後猜密?:

    由於很多人喜?用自己的名字?作?????,因此??的取得是很容易的! ?例??,如果你的朋友?你的 email address 不小心?漏出去,例如: dmtsai@your.host.name 之?的?式, 那?人家就?知道你有一部主?,名?? your.host.name,且在?部主?上面?有一?使用者??, ??名?? dmtsai ,之後????伙再利用某些特殊??例如 nmap ??行你主?的 port scan 之後,嘿嘿!他就可以?始透?你主?有??的??功能?猜你????的密?了!

    另外,如果你常常?察你的主?登??,那你也???如果你的主?有?? Mail server 的服??, 你的登??就?常常出?有些怪?伙??以一些奇怪的常???在??猜?你的密?, ?例??像:admin, administrator, webmaster .... 之?的??,????取你的私人信件。 如果你的主?真的有??的??,而且??的????有良好的密???,那就容易『中?』! 唉!真是麻?!所以我?常?,系???千?不能?予密?,容易被猜密?啊!

    ??猜密?的攻?方式算是最早期的入侵模式之一了,攻?者知道你的??,或者是可以猜出?你的系?有哪些??, 欠缺的就只是密?而已, 因此他?『很努力的』去猜你的密?,此?,你的密???如果不好的?,很容易就被攻?了! 主?也很容易被?架啊!所以,良好的密??置??是很重要的。

    不???攻?方式比???,因?目前很多??都有密??入次?的限制, 如果???入三次密??不能成功的登入,那?次??就?被??! 所以,??攻?方式日益?少,目前偶而??看到就是了!?也是初? cracker ?使用的方式之一。 那我?要如何保?呢?基本方式是??的:

    ?少??的曝光??:例如不要? Email Address ?意散?到 Internet 上?;
    建立??格的密??定??:包括 /etc/shadow, /etc/login.defs 等?案的?定, 建?您可以?考基?篇?的 ??管理那一章???你的使用者密??更??等等, 如果主???定且不?持?加入某些???,也可以考?使用 chattr ?限制?? (/etc/passwd, /etc/shadow) 的更改;
    完善的?限?定:由於??的攻?方式?取得你的某?使用者??的登入?限, 所以如果你的系??限?定得宜的?,那?攻?者也?能取得一般使用者的?限而已, ?於主?的?害比?有限啦!所以?,?限?定是重要的;

    --------------------------------------------------------------------------------

    利用系?的程式漏洞『主?』攻?:

    由?一?面的第三?步?中,我?知道如果你的主?有?放?路服??, 就必?有??某??路??嘛!我?也知道由於??可能撰?方式的??,可能?生一些?被 cracker ?用的臭?程式?,而?些臭?程式?由於?生??的大小,有分? bug (臭?,可能?造成系?的不?定或??) ? Security (安全??,程式?撰?方式??致系?的使用?限被?意者所掌握) 等??。

    ?程式的??被公布後,某些?高?的 cracker ???撰?一些????漏洞的攻?程式?, ?且???程式?放置到 cracker 常去的?站上面,藉以推?自己的『功力』..... ?哥要提醒的是,??程式?『是很容易被取得的』。 ?更多『盈盈美黛子(台?,???事?之意)』取得?些程式?後,他可能?想要『?一???攻?程式的威力』, 所以就拿?『?射』一番,如果你八字比??,或者?天星座?家?你比?倒楣?, 可能就?被不小心的攻?到......

    ??攻?模式是目前最常?的,因?攻?者只要拿到攻?程式就可以?行攻?了, 『而且由攻??始到取得你系?的 root ?限不需要猜密?, 不需要?分?,就能?立刻入侵成功』,所以『盈盈美黛子』?最?的就是??咚咚了。 但??玩意?本身是靠『你主?的程式漏洞』?攻?的,所以,如果你的主???保持在即?更新的?段, 或者是??大部分不需要的程式,那就可以躲避?????。因此,你??要??做:

    ??不需要的?路服?:?的 port 越少,可以被入侵的管道越少, 一部主???的服?越??,越容易找出???。看看前面?到的 限制 Linux 的??埠口 一章吧!
    ??保持更新:?????!一定要?行的!?考前一章 ?路升?套件。
    ??不需要的??功能:?例??,後面?提到的?端登入伺服器 SSH 可以提供 root 由?端登入,那?危?的事情?然要?他取消啊!^_^

    --------------------------------------------------------------------------------

    利用社交工程作欺?:

    社交工程 (Social Engineering) 指的其?很??,就是透?人?人的互???到『入侵』的目的! @_@!人?人的互?可以入侵你的主???哥在呼?你???然不是。

    近日在台?的社?你不是常看到某些人?以『退?、中?、花小???重物品』等名??欺?善良老百姓, ?老百姓掏出口袋?的金??那些可?的金光???社交工程也是?似的方法。在大公司?面, 或?你可能?接到??的??:『我是人事部?的?理,我的???何突然?不能登入了? 你?我看一看,恩?乾脆直接?我另建一???,我告?你我要的密?是....』。如果你一?不查?他??密?的?, 你的主?可能就??被?走了~

    社交工程的欺?方法多的是,包括使用『好心的 email 通知』、『警告信函』、『中??』等等, 在在都是要欺?你的??密?,有的?利用??方式?欺?你在某些?意?站上面?入你的??密?, 很??的啦!那要如何防?呢?

    追???者:不要一味的相信?方,你必?要有信心的向上呈?, 不要一?心慌就中了?!
    不要?意透露??/密?等??:最好不要?意在 Internet 上面填??些?料, 真的很危?的!因?在 Internet 上面,你永?不知道?方?幕前面坐著的是??

    --------------------------------------------------------------------------------

    利用程式功能的『被?』攻?:

    啥?除了主?攻?之外,?有所?的被?攻?喔???啊,『系金ㄟ』!那如何作被?攻?呢? 那就得要由『?意?站』?起了。如果你喜?上??意??的?,那?有的?候可能??上一些?告很多, 或者是一堆?出式?窗的?站,?些?站有???很好心的『提供你很多好用的??自?下??安?』的功能, 如果??站是你所信任的,例如 Red Hat, CentOS, Windows 官?的?,那?好, 如果是一?你也不清楚他是?嘛的?站,那你是否要同意下?安?????

    如果你常常在注意一些?路危??理的相?新??,常??? Windows 的??器 (IE) 有??, 有??是全部的??器 (Firefox, Netscap, IE...) 都?出???。那你?不??得奇怪啊, 怎?『??器也?有???』?是因?很多??器?主?的答??方 WWW 主?所提供的各?程式功能, 或者是自?安??自?方主?的??,有???器?可能由於程式?生安全??, ??方 WWW ??器得以?送?意程式??你的主???行,嘿嘿!中?!

    那你又?想啊,那我?嘛??那?的?意?站?喝!?是?有些粗心大意的?候啊! 如果你今天不小心收到一? email ,?面告?你你的?行??有??, 希望你???上某???去看看你的??是否在有??的行列中,你?不?去? 如果今天有??路消息?某某??在提供大特?商品,那你?不?去碰碰??? 都是可能的啊!不?,?也就很容易被?方攻?到了。

    那如何防?啊??然建立良好的??最重要了:

    ??更新主?上的所有套件:如果你的??器是?有??的, 那?方???意程式??,你的??器就不??行,那自然安全的多啊!
    ?小化??的功能:?例??,?你的收信??不要主?的下??案, ?你的??器在安?某些???,要通?你的??後才安?,??就比?容易克服一些小麻?;
    不要?接到不明的主?:其??哥????才最?! 因?很多?候我?都用 google 在搜???的解?之道啊,那你如何知道?方是否是?人的? 所以,前面??防??是很重要的!不要以??有?接上?意?站就不?有??啊!

    --------------------------------------------------------------------------------

    蠕?或木?的 rootkit:

    rootkit 意思是?可以取得 root ?限的一群工具? (kit),就如同前面主?攻?程式漏洞的方法一?, rootkit 主要也是透?主?的程式漏洞。不?, rootkit 也?透?社交工程?使用者下?、安? rootkit ??, ?果? cracker 得以??的?架?方主?啊!

    rootkit 除了可以透?上述的方法??行入侵之外,rootkit ????或者是?行自我??, ?例??,很多的 rootkit 本身就是蠕?或者是木???程式。蠕???你的主?一直?送封包向外攻?, ?果??你的?路??被吃光光,例如 2001-2003 年?的 Nimda, Code Red 等等;至於木?程式 (Trojan Horse) ???你的主??行??後? (?一? port ?? cracker 主?的入侵),?果就是....?架、?架、?架!

    rootkit 其?挺不好追?的,因?很多?候他?主?的去修改系??察的指令, 包括 ls, top, netstat, ps, who, w, last, find 等等,?你看不到某些有??的程式, 如此一?,你的 Linux 主?就很容易被?成是跳板了!有?危?!那如何防?呢?

    不要?意安?不明?源的?案或者是不明?站的?案?料;
    不要?系?有太多危?的指令:例如 SUID/SGID 的程式, ?些程式很可能?造成使用者不?的使用,而使得木?程式有?可趁!
    可以定?以 rkhunter 之?的???追查:有??站提供 rootkit 程式的?查,你可以前往下??分析你的主?:
    http://www.rootkit.nl/projects/rootkit_hunter.html

    --------------------------------------------------------------------------------

    DoS 攻?法 ( Denial of Service )

    ??型的攻?中文翻?成『阻?式攻?』,??攻?法也很要命,而且方法有很多,最常?的就? SYN Flood 攻?法了!??得我?在?路基??面提到的,?主?接收了一??有 SYN 的 TCP 封包之後,就??用?方要求的 port ?等待??,?且?送出回?封包 (?有 SYN/ACK 旗?的 TCP 封包),?等待 Client 端的再次回?。

    好了,在??步??中我??想一想,如果 cient 端在?送出 SYN 的封包後,???自 Server 端的??封包??,那?您的 Server 端就?一直空等,而且 Client 端可以透???功能,在短短的???持??送出??的 SYN 封包,那?您的 Server 就?持?不?的?送??封包,?且??大量的 port 在空等~呵呵!等到全部主?的 port 都?用完?,那?.....系?就?了!

    更可怕的是,通常攻?主?的一方不?只有一部!他?透? Internet 上面的僵?主? (已?成?跳板,但?站主??有??的主?) ??全?攻?,?你的主?在短???就立刻??。 ?? DoS 的攻?手法比??似『玉石俱焚』的手段, 他不是入侵您的系?,而是要?您的系???呢! 最常被用?作?阻?式服?的?路服?就是 WWW 了,因? WWW 通常得?整? Internet ?放服?。

    ??攻?方法也是最??理的,因?要嘛就得要系?核心有支援自?抵? DoS 攻?的?制, 要嘛您就得要自行撰??????判?!真是麻?啊~而除非您的?站非常大, ?且『得罪不少人』,否???不?被 DoS 攻?啦! ^_^



    --------------------------------------------------------------------------------

    其他:

    上面提到的都是比?常?的攻?方法,是?有一些高竿的攻?法啦, 不?那些攻?法都需要有比?高的技?水?,例如 IP 欺?。他可以欺?你主?告知?封包?源是?自信任?域, 而且透?封包?送的?制,由攻?的一方持?的主??送出??封包?工作指令。 如此一?,你的主?可能就??判?封包??有回?,而且是?自?部的主?。

    不?我?知道???路是有路由的,而每部主?在每一??段的 ACK ???都不相同, 所以??方式要?成可以登入,?比?麻?,所以?,不太容易?生在我??些小型主?上面啦! 不?你?是得要注意一下?:

    ?定??完善的防火?:利用 Linux ?建的防火??? iptables 建立??完善的防火?,可以防?部分的攻?行?;
    核心功能:?部份比???,您必?要?系?核心有很深入的?解, 才有?法?定好你的核心?路功能。
    登???系??控:你可以透?分析登????解系?的??, 另外也可以透??似 MRTG 之?的?控?? ?即??解到系?是否有?常,?些工作都是很好的努力方向!

    --------------------------------------------------------------------------------

    主?防?小??:

    要?你的系?更安全,?有『三?三』是??法?成的!我?也一直鼓吹, 『???站比架??站?要重要』的?念!因?『一人得道?犬升天』,同?的道理:『一人中?全???』, 不要以?你的主??有啥重要?料,被入侵或被植入木?也?有??, 因?我?的伺服器通常???部?源的主???的????,如果你的主?在公司?部, 但是不小心被入侵的?,那??公司的伺服器是否就?暴露在危?的?境?中了?

    另外,在蠕?很『??』的年代,我?也???只要?域?路?面有一部主?中?, 整??域?路就??法使用?路了,因???已?被蠕?塞爆! 如果老???他今天?有?法收信了,但?法收信的原因?非伺服器??, 而是因??部人?的某部?人??中了蠕?,而那部主?中蠕?的原因只是因??使用者不小心去看了一下色情?站, 你?得老??高?的跟??工一起看色情?站?是 fire 掉?人??

    所以啊,主?防??是很重要的!不要小看了!提供??方向?大家思考看看吧:

    建立完善的登入密???限制;
    完善的主??限?定;
    ?定自?升??修?套件漏洞、及移除危?套件;
    在每?系?服?的?定?中,?化安全?定的?目;
    利用 iptables, TCP_Wrappers ?化?路防火?;
    利用主??控??如 MRTG ? logwatch ?分析主????登??;

    --------------------------------------------------------------------------------
    被入侵後的修?工作

    如果你的主?被入侵的?,而你也由於?解到主??控的需要,所以在最短的?????此一事件, 那??如何????被入侵的主??修??那如果你要修?的?,你???管人??需要哪些?外的技能? 底下我?就??一?。


    --------------------------------------------------------------------------------
    ?管人?的?外技巧?任?

    ?前一小?的分析?中,您????管?真的是挺累的,他需要?於作?系?有一定程度的熟悉, ?於程序的?作 (process) ??限概念,?需要更?解!否?就麻?了!那除了作?系?的基本概念之外, 咱??管?需要啥特殊技巧呢??然需要啊!其?一部主?最常?生??的??, 都是由『?部的?路?用所?生的』,所以啊,你只管好主?而已是『?有?法杜???』的啦! 底下就???你?需要啥技巧呢?


    ?解什?是需要保?的?容:

    我的天?,?要知道什?是需要保?的呀?呵呵!??,就是如此!由??我?知道的主?入侵方法?中, 不??解,只要有人坐在您的主?前面,那?任何事都有可能??生!因此,如果您的主?相?的重要, ?『不要?任何人靠近!』您可以?考一下?姆克?斯在『不可能的任?』?面要?取一部???的?料的困?度! ^_^""
    硬?:能?就?吧!
    ??:?包含最重要的?料呢!
    ?防黑客( Black hats )的入侵:

    ?可不是?玩笑的,什?是黑客呀!?是因?原本在西部?影?中,?人都是戴黑色帽子的, 所以之前的人?就??路攻?者? Black hats 啦!在?防?方面的攻?者?,除了?格管制?路的登入之外, ?需要特?控制原本您的主?中的人物!就我?小?站??,不要以?好朋友就?便他啦! 他?要指定密?是跟他的??相同比?好?,您就答?他!等到人家用他的密?登入您的主?,?破?您的主?, 那可就得不?失了!如果是大企?的?,那??工使用?路?,也要分等?的呢! ^_^


    主??境安全化:

    ?什?好?的,除了多?心,?是多?心!仔?的分析登??,常常上?看看最新的安全通告,?都是最基?的! ?包含了以最快的速度更新有??的套件!因?,越快更新您的套件,就越快可以杜?黑客的入侵!


    防火???的?定:

    ?部份比?麻?一些啦!因?您必需要不?的????再??!以取得最佳化的?路安全?定! 怎??呢?要?得的是,如果您的防火????定得太多的?候, 那?一??料封包就要??越多的?卡才能完整的通?防火?,以?入到主??部!嘿嘿! ?可是相?的花???的!?造成主?的效能不彰!特?留意?一?呢!


    即???您的主?:

    就像???的,您必需要????您的主?,因?,防火?不是一??定之後就不用在再他了! 因?,再?密的防火?,也?有漏洞的!?些漏洞包括防火???定不良、利用?新的??入侵技?、 利用您的???的服?漏洞等等!所以,必需要即???您的主?呀!?方面除了分析 log files 之外,也可以藉由即?????行??工作!例如 PortSentry 就是?不?的一套??呢!


    良好的教育???程:

    不是所有的人都是???路高手,尤其?然?在??爆炸但是仍然有很多的???遇到??白?呀! ???候,要?得的是,我??於?部?域通常?有太多的??,那如果他用?部的??去做?事怎??? 有?候?是?心的~挖哩~所以?,需要特?的教育???程呀!?也是公司需要?管的主因之一!


    完善的?份??:

    天有不???,人有旦夕?福呀!什?人都不知道什??候?有大地震、我?也都不知道什??候?突然的硬碟?掉去~ 所以?,完善的?份??是相?重要的!此外,大概?有人??他的主?是 100% 的安全吧! 那如果你的系?被入侵,造成?料的???,你要如何?原你的主?啊?呵呵!一?良好的?站管理人?, ???刻都??行重要?料的?份的!很重要啊! ?一部份??考一下基???篇之 Linux 主??份的?容吧! 本?後?的?端??伺服器 SSH 章??也?提到一?很棒的 rsync 工具,您可以瞧瞧!


    --------------------------------------------------------------------------------
    入侵恢?工作

    所?『百密一疏』啊,人不是神,??有考?不?的情?,?一您的主?就因??『一疏』?致被入侵了, 那?怎???由上面的?明?中,我?知道『木?』是很?重的,因?他?在您的系?下??後?(Back door)?攻?者可以登入您的主?,而且???改您 Linux 上面的程式,?您找不到?木?程式!怎???

    很多朋友都??『反正只要? root 的密?改回?就好了』 ??的??,事?上,那?一部主??是有被做?中?站的危?啊!所以, ?一您的主?被入侵了,最好的方法?是『重新安?Linux 』?比?乾?!

    那?如何重新安?呢?很多朋友一再地安?,?一再地被入侵~?什?呢?因?他?有『?取教?』啊!呵呵! 底下我?就??一?,一部被入侵的主???如何修?比?好?

    立即拔除?路?:

    既然??被入侵了,那?第一件事情就是拿掉?路功能!拿掉?路功能最??的作法自然就是拔掉?路?了! 事?上,拿掉?路?最主要的功能除了保?自己之外,?可以保?同?域的其他主?。怎??呢???最近 (2003/08) ?病的疾?病毒好了,他?感染同?域之?的其他主?喔!所以,拔除?路?之後, ?端的攻?者立即就?法?入您的 Linux 主?,而且您?可以保??域?的其他相?主?啊!


    分析登????,搜?可能的入侵途?:

    被入侵之後,?不是只要重新安?就好,?需要?外分析 『?什?我的主??一次?被入侵,?方是如何入侵的?』, 如果您能?找出???,那?不但您的 Linux 功力立刻增?了,主?也?越?越安全喔! 而如果您不知道如何找出被入侵的可能途?,那?重新安?後,下次?是可能被以同?的方法入侵啊! 粉麻?的啦!好了,那?如何找出入侵的途?呢?


    分析登??:低?的 cracker 通常?是利用工具???入侵您的系?,所以我?可以藉由分析一些主要的登???找出?方的 IP 以及可能有??的漏洞。可以分析 /var/log/messages, /var/log/secure ?有利用 last 指令?找出上次登入者的??。

    ?查主??放的服?:很多 Linux 使用者常常不?得自己的系?上面?了多少的服??我???, 每?服?都有其漏洞或者是不???用的增?型或者是??型功能,所以,找出您系?上面的服?, ?且?查一下每?服?是否有漏洞,或者是在?定上面有了缺失,然後一?一?的整理吧!

    查? Internet 上面的安全通?: 透?安全通???解一下最新的漏洞??,?不定您的??就在上面!


    重要?料?份:

    主?被入侵後,?得??相?的?重,?什?呢?因?主?上面有相?重要的?料啊! 如果主?上面?有重要的?料,那?直接重新安?就好了!所以,被入侵之後,?查完了入侵途?, 再?就是要?份重要的?料了。好了,????,什?是『重要?料』? who, ps, ls 等等指令是重要?料???是 httpd.conf 等?定?是重要?料?又或者是 /etc/passwd, /etc/shadow 才是重要?料?

    呵呵!基本上,重要的?料??是『非 Linux 系?上面原有的?料』,例如 /etc/passwd, /etc/shadow, WWW ??的?料, /home ?面的使用者重要?案等等,至於 /etc/*, /usr/, /var 等目?下的?料,就不?得需要?份了。 注意:不要?份一些 binary ?行?,因? Linux 系?安?完?後本?就有?些?案,此外, ?些?案也很有可能『已?被?改?了』,那?份?些?料,反而造成下次系??是不乾?!


    重新全新安?:

    ?份完了?料,再?就是重新安? Linux 系?了。而在?次的安?中, 您最好???合您自己的安?套件即可,不要全部套件都?他安?上去啊!挺危?的!


    套件的漏洞修?:

    ?得啊,重新安?完?之後,?立即更新您的系?套件,否??是?被入侵的啦!?哥喜?先在其他比?乾?的?境下? Internet 上面的漏洞修?套件下?下?,然後??起?,然後拿到自己的??安?完成的系?上面,mount CD 之後全部?他更新,更新之後,?且?定了相?的防火??制,同??行下一步?『 ??或移除不需要的服?』後,我才??路?插上主?的?路卡上! 因??哥不敢?定在安?完?後,?上 Internet 去更新套件的?段??,?不?又受到入侵攻??....


    ??或移除不需要的服?:

    ??重要性不需要再?了吧?!?用越少的服?,系??然可以被入侵的可能性就比?低。


    ?料回??恢?服??定:

    ???份的?料要??的??回?系?,同??系?的服?再次的重新?放,?注意, ?些服?的?定最好能?再次的??一下,避免一些不恰?的?定??在??喔!


    ?上 Internet:

    所有的工作都?行的差不多了,那?才???拿掉的?路?接上?吧!恢?主?的?作了!\r
    ???一?串的?作後,您的主????恢?到比?乾?的?境,此??不能掉以?心, 最好?是?考防火?的?定,?且多方面的?考 Internet 上面一些老手的??,好?您的主?可以更安全一些!

    --------------------------------------------------------------------------------
    重?回?

    要管制登入伺服器的?源主?,得要?解?路封包的特性,?主要包括 TCP/IP 的封包?定, 以及重要的 Socket Pair ,亦即?源?目?的 IP ? port 等。在 TCP 封包方面,??得?解 SYN/ACK 等封包??;
    TCP 封包要?入我? Linux 本?,至少需要通? IP Filter, super daemon/TCP Wrappers, Daemons, 密???功能 等等步?;
    主?的基本保?之一,就是?有正?的?限?定。而??的?限?定可以利用 ACL 或者是 SELinux ??助;
    ACL 必?要? Filesystem 支援,故可以在 /etc/fstab ?加入 acl 的控制??;
    ?? SELinux 可在 /etc/selinux/config ?案??定,亦可在核心功能中加入 selinux=0 的?目;
    ACL 主要可?? user, group, mask ??定,可???一?人???定?限;
    ?定 ACL 的方法?使用 setfacl, 查??以 getfacl 指令??作;
    ACL ?的 mask 是很重要的,必??使用者的?限?行?? AND 的?算,才?得到正?的最??限;
    rootkit ?一?取得 root 的工具?,您可以利用 rkhunter ?查?您主?是否被植入 rootkit;
    ?管人???注意在?工的教育???有主?的完善?份方案上面;
    一些所?的黑客??,?乎都是透?您的 Linux 上面的套件漏洞?攻? Linux 主?的;
    套件升?是?防被入侵的最有效方法之一;
    良好的登??分析??可以在短?????系?的漏洞,?加以修?。