论坛: UNIX系统 标题: 转载:FreeBSD完全新手指南---设置网络  复制本贴地址    
作者: xiaojun [xiaojun]    剑客   登录
                        1. 配置网络界面 
                        2. TCP/IP 介绍 
                        3. Inetd, "超级"服务程序 
                        4. 文件传输协议 
                        5. 电子邮件 
                        6. POP3 电子邮件 
                        7. Windows 文件共享: SAMBA 
                        8. Web Servers 
                        9. 设置一个域名服务器 
                        10. 路由/网关 
                        11. 防火墙 
                        12. IP 网络地址转化 

                1. 配置网络界面 

                  一个网络界面就是一个使你能同你的网络通信的设备. 这些设备可以是一个网卡, 
                或者一个调制解调器, 或是其他各种各样的使你能够通信的设备. 这些设备需要进 
                行配置以便使网络能够认出你是谁. 这些界面将用TCP/IP网络协议来配置. 通常在 
                /etc/rc.conf里配置, 或者/etc/sysconfig如果你用2.2.1或更老的版本. 

                2. TCP/IP 介绍 

                        2.1 IP - Internet 协议 
                        2.2 TCP - 传输控制协议 

                  TCP/IP 是FreeBSD用来进行网络通信的协议. 当然, TCP/IP也是整个Internet 
                用来通信的协议, 这意味着FreeBSD也能用在Internet上. 本章试图给你一个 
                TCP/IP协议的概貌和在一个TCP/IP网络上配置你的FreeBSD机器所需要了解的内容. 

                  在我们向你对TCP/IP作足够的介绍以使你能把它运行起来的同时, 如果你在维 
                护一个FreeBSD网络(或者任何类似的TCP/IP网络), 几乎可以肯定你还要对TCP/IP 
                协议有更多的了解. TCP/IP是一个大的足够用一整本书来描述的协议, 并且需要很 
                多人来完成! (恕我直言)有本很好的关于这个主题的书就是Craig Hunt所写的 
                <<TCP/IP Network Administration>>.由O'Reilly and Associates 出版. 这本书 
                有对TCP/IP的更具深度的描述并且覆盖了很多本书仅简单涉及的UNIX通用服务程序. 
                这本书在涉及配置文件等的时候会显得有些过时, 但你仍能领会出其中的概念. 如 
                果你对(TCP/IP)协议本身很感兴趣的话, Richard Stivens写了从理论开始一直到 
                实践知识的整整三卷书. <<TCP/IP Illustrated>>已由Addison Wesley出版. 

                        注意: 

                        虽然FreeBSD也可以使用Apple-talk和IPX/SPX(Novell)协议, 但这并 
                        不是FreeBSD所使用的标准协议,所以我们将把注意力集中到FreeBSD使 
                        用的TCP/IP上.在本书的应用程序部分将看到如何使FreeBSD成为Apple 
                        和Novell 文件/打印服务器的替代品 - 我们在那里将讨论如何打开适 
                        当的协议. 

                  关于TCP/IP首先你需要知道的是它实际上是一族协议. 这一族协议使我们能把数据 
                从一台计算机传到另一台 -- 一个源头到一个目标 -- 而不知道数据在这段旅途上走 
                过的确切的路径.有三个重要的部分你需要了解: IP, TCP, 和 UDP. 

                2.1 IP - Internet 协议 

                  本质上说, IP 产生包(packets). 什么是一个包? 一个包是一个小的数据"单元" 
                或"包".看下面的例子能使我们很容易理解包是什么, 和IP怎样来制造包. 假设你 
                有200k的数据要通过Internet传给你的朋友. 你可以把这个文件想成是一个数据 
                的"流" - 这个文件有一个开始,和一个顺序的字节集合(这里是200K个字节)一直到 
                文件的末尾. 任何这样的连续性的数据集合被称作"流",由于数据据有方向性. 识 
                别数据流最关键的是集合里的字节存在次序. IP 所做的就是把这些连续的数据流断 
                开成为离散的包("packets")以使它们能够被独立发送. IP 把数据流切成一个个的包, 
                然后包装这些包以使它们适合在Internet上传送, 并且在包上标明源地址和目标地址. 
  

                2.2 TCP - 传输控制协议 

                 有关IP刚才我所没有告诉你的是, 很古怪的说, IP 是不可靠的. IP 并不保证某 
                个包能到达目的地, 或者全部包到达后再按原来的顺序恢复成数据流. 这就是要有 
                TCP的原因. TCP 按正确的次序来还原包并且保证所有的包都到达目的地. 没有 
                TCP, IP几乎没有用! 我猜这就是为什么叫它们TCP/IP的原因!! :-) 

                  有一个次序号藏在每个包的地址信息里. IP 发送每个包出去的时候递增次序号, 
                而TCP用这些次序号把到达的包按正确的次序重新装配起来. TCP 也用次序号来判 
                断是否有包丢失. 如果某个包没有出现(不正确的路由,等等原因)TCP会向源地址 
                请求再发一次这个包. 并且将保持重试直到所有的包凑成一个数据流. 因此,TCP 
                使得TCP/IP包传送机制"可靠". 

                  TCP还加入了IP所没有提供的另一层次上的功能: 端口. IP 地址标识出网络上的 
                每台计算机, 而TCP 端口号标识出每台计算机上提供的每种服务. 端口号使得你 
                能同时运行很多种服务, 并且有一种机制保证每个请求能得到正确的服务. Web 
                服务器也许是你最熟悉的一个例子. WWW服务程序通常运行在80端口上. IP地址 
                加端口号请求的标准形式是 IP:端口号 - 例如, 192.168.100:80 . TCP使我们 
                能够同时向同一IP地址的Web 服务程序和telnet 服务程序(端口23)发送包. 
                太棒了!根据记录, 端口号的范围是 0 - 65000. 所有小于1024的端口号是有限 
                制的,意味着只有root有权限开始一个监听端口号小于1024的服务程序. 所有大 
                于1024的则可被任何用户进程使用 - 不需要有root权限. 
  

                3. Inetd, "超级"服务程序 

                  正如我们先前揭示的, 一个FreeBSD系统能同时运行很多程序 - 对于FreeBSD 
                网络服务程序来说也一样; 它将为你要提供的每一种服务运行一个程序. 问题是, 
                每个服务程序都会吃掉一大块内存 - 而内存总是宝贵的. 解决方案是在收到请求 
                后启动相应的服务, 而在发送完应答给产生请求的客户机后又终止它. 然而一个服 
                务怎么知道什么时候该醒来呢? 

                  这就是有inetd的原因. 它叫做 Internet "超级服务程序" 因为它控制着很多一 
                台典型的UNIX主机上存在的服务程序. inetd 监视着所有到达服务器上的请求的端 
                口号. 当一个请求到达时, inetd 在/etc/services 里寻找服务的名字. 就象我们 
                能在下面看到的, services 文件是一个端口号和服务名称的简单映射: 

                                (图略) 

                  在inatd知道了要启动的服务的名字后, 它会在它的配置文件, /etc/inetd.conf 
                里查找配置信息,配置文件看起来象这样: 

                                (图略) 

                  该文件通常的格式是: 
                                ● 服务名称 
                                ● socket 类型 
                                ●  协议 
                                ●  {wait|nowait}[/max-child] 
                                ●  用户 
                                ●  服务程序 
                                ●  服务程序参数 

                  现在用一个具体的例子来说明它们分别代表什么. 

                        telnet stream tcp nowait root /usr/libexec/telnetd telnetd 

                  第一个字段,telnet,是服务的名称. 这个名字必须和/etc/services里找到 
                的名字精确匹配. 第二和第三个字段, stream tcp, 描述了该服务所产生的连接的类 
                型. 在这种情况下, tcp 将处理包的顺序以使下载的信息成为无差错的数据流. 本字 
                段另外仅有一个选项,dgram udp,指定用UDP,而不是TCP来处理包的顺序(TCP/IP 里所 
                谓的"不可靠"数据报(datagram)). 

                  第四个字段,root,指定用来运行服务的用户ID. inetd所启动的大多数程序都以 
                "root"或"nobody"身份运行. 接下来的字段告诉inetd在哪能找到要运行的程序, 和 
                任何要求的参数(在这个telnet 的例子里, 没有任何参数). 

                        注意: 

                        通过inetd来运行程序的缺点是, 当一个服务被频繁的运行,可能一 
                        秒一次,或甚至一秒数百次的时候用它(inatd)不是很有效率. 你会 
                        问为什么? 通常用inatd来运行程序可以减小占用的内存数量, 但这 
                        带来的惩罚是每当有请求到达的时候都必须"fork"程序. 简单的说, 
                        "fork" 意味着inetd要为服务启动新的进程. 我们不打算详细讨论 
                        fork一个进程所需要的额外开销的技术细节. 而只是说会有一个额 
                        外的开销, 而在一个繁忙的系统上这足以导致一个可观的延迟. 因 
                        此一些服务以"deamons"形式而非"inetd"运行. 你决定如何运行一个 
                        服务程序完全取决于你认为它的重要性. 如果性能是决定因素,使程 
                        序成为一个daemon(即常驻内存). 如果想减少内存的开销,则通过inetd 
                        运行程序. 典型的, FTP,finger,talk,POP3,和telnetd通过inetd服 
                        务程序来运行,但web servers 和邮件发送server(通常是sendmail) 
                        是daemons.象NCSA和Apache之类的web Server甚至会事先"pre-forking" 
                        几份拷贝以消除请求的数量很多时forking产生的额外开销! 如果你 
                        安装了一种新的服务, 附带的文档通常会告诉你最有效使用它的方法. 
  

                4. 文件传输协议 

                Not yet Scheduled 

                5. 电子邮件 

                Not yet Scheduled 

                6. POP3 电子邮件 

                Not yet Scheduled 

                7. Windows 文件共享:SAMBA 

                  如果你用ports来安装,则它把所有东西都装在/usr/lcoal/samba/二进制文件放 
                在bin目录里. 配置文件位于lib/smb.conf 

                  如果是用package,它会把东西装到/usr/local/sbin配置文件在 
                /usr/lcoal/etc/smb.conf. 要想知道如何创建smb.conf配置文件可以读smb.conf 
                的man page. 这份关于smb.conf的文档写的很好也很全面. 你有可能会放到配置 
                文件里的每样东西都包含在man page里了.要读它,只需输入: 

                man smb.conf 

                  使用testparm来检查你的配置文件. testparm 也会告诉你缺省的配置文件在 
                哪里. 

                  不管你是如何安装samba的, 你需要修改你的/etc/rc.local文件以使Samba在 
                系统启动时启动. 在你的rc.local里加入这两行: 

                /usr/lcoal/sbin/smbd -D 
                /usr/local/sbin/nmbd -D 

                8. Web Servers 

                Not yet Scheduled 

                9. 设置一个域名服务器 

                  首先你要有一个有效的域名. 你需要在你注册域名的地方给出你的主域名 
                服务器的IP地址. INTERNIC或你上一级的DNS会把这些做好的. 

                  如果你设置一个子域名, 你需要在你的域上建立一个映射指向那个域的主 
                域名服务器. 

                首先: 

                  在/etc/sysconfig文件,或者是新的/etc/rc.conf,加入一行: 

                namedflags="-b /etc/namedb.named.boot" 

                  这将在系统启动时启动名字服务的Daemon, 并让它把/etc/namedb/named.boot 
                作为配置文件. 

                  现在进入/etc/namedb/目录,然后输入: 

                sh make-localhost 

                  这将在目录里创建localhost.rev文件. 所有的本地传输都需要这个文件. 

                  现在创建或编辑named.boot文件 

                ++++++++++++++NAMED.BOOT EXAMPLE ++++++++++++++++++++ 

                ;semi colons comment out statments. 

                ; sortlist 128.3.0.0 

                ; The sort list gives higher priority to certain domains in the case 
                ;of multi-homed hosts. 

                directory       /etc/namedb 

                ; this denotes the directory that named should look to find all of the 
                ; source files. 

                ; type    domain                source host/file                backup file 

                cache     .                                                     named.root 

                ; named keeps a cache of recently looked up hostname in the file mentioned. 

                primary   0.0.127.IN-ADDR.ARPA  localhost.rev 

                ; this is the local host entry needs to be there. Usually automatic. 

                     primary  Berkeley.EDU           your.domain.zone 
                     primary  32.128.IN-ADDR.ARPA    your.domain.rev 

                ; These lines are a pair.  They represent the primary domain you control 
                ; The first one is your domain and the second is the reverse lookup table. 
                ; You need to have each DNS entry entered in to both files. 
                ; You will need a pair of primary lines for each primary domain that 
                ; you administer. 

                     secondary Berkeley.EDU          128.32.130.11 128.32.133.1      ucbhosts.bak 
                     secondary 32.128.IN-ADDR.ARPA   128.32.130.11 128.32.133.1      ucbhosts.rev.bak 

                ; These lines are a pair also.  They represent the domains that you are 
                ; interested in knowing about if their DNS goes down.  Or you may just be 
                ; the back up DNS for them. 

                ; Instead of source files, you specify the host that is the primary DNS 
                ; for that domain.  You must also specify that filename that named will 
                ; store the temporary table in. 
                ; You need a pair of these lines for each of the Domains that you are 
                ; a secondary DNS for. 
                ++++++++++++++++++++++End Example Named.boot File++++++++++++++++++ 

                  如果你有域"my.domain.com", IP地址的范围是10.20.40 - 10.20.40.255,并且 
                需要一个主域名服务器,你可以在named.boot文件里加入这几行: 

                primary my.domain.com my.domain.com.zone 

                primary 40.20.10.IN-ADDR.ARPA my.domain.com.rev 

                  现在需要制造primary source文件. 创建一个名为/etc/named/your.domain.zone 
                的文件(替换成你实际的域名). 它必须和named.boot里的primary段指定的文件名 
                匹配. 

                 这是一个这样的文件的例子: 
  

                     IN      soa     bbcc.ctc.edu.   root.bbcc.ctc.edu. ( 
                                                     28      ;serial 
                                                     10800  ;refresh every 3 hours 
                                                     900    ;retry every 15 minutes 
                                                     604800 ;expire after a week 
                                                     86400  ;minimum of a day 
                                                     ) 
                                             IN              NS      bbcc.ctc.edu. 
                                             IN              NS      ctc.ctc.edu. 
                                             IN              NS      bb.cc.wa.us. 
                     bbcc.ctc.edu.           IN              A       134.39.180.254 
                     mail                    IN              CNAME   bbcc.ctc.edu. 
                     www                     IN              CNAME   bbcc.ctc.edu. 
                     irc                     IN              CNAME   bbcc.ctc.edu. 
                     bigbend.ctc.edu.        IN              CNAME   bbcc.ctc.edu. 
                     athena                  IN              A       134.39.180.5 
                                             IN              HINFO   intel 586-133 winnt 
                     proto                   IN              A       134.39.180.6 
                     aries                   IN              CNAME   bb.cc.wa.us. 
                     sal                     IN              A       134.39.180.8 
                     dialup3                 IN              A       134.39.180.252 
                     ;end of file. 
  

                5)现在要产生主反向解析(primary reverse lookup)文件. 创建一个叫 
                /etc/named/your.domain.rev的文件.(替换成你实际的域名) 

                  它必须和named.boot里的primary段指定的文件名匹配. 这是一个例子: 
  

                     IN      soa     bbcc.ctc.edu.   root.bbcc.ctc.edu. ( 
                                                     28      ;serial 
                                                     10800  ;refresh every 3 hours 
                                                     900    ;retry every 15 minutes 
                                                     604800 ;expire after a week 
                                                     86400  ;minimum of a day 
                                                     ) 
                     8               IN              PTR     sal.bbcc.ctc.edu. 
                     252             IN              PTR     dialup.bbcc.ctc.edu. 
  
  

                10. 路由/网关 

                Not yet Scheduled 

                11. 防火墙 

                Not yet Scheduled 

                12. IP 网络地址转化 

                 12.1. 1)装入核心模块 
                 12.2. 2)设置NAT规则 
                 12.3. 3)装入NAT规则 
                 12.4. 4)在网络界面间允许路由 
                 12.5. 5)到子网的静态路由 
                 12.6. 6)确定你的网络界面已被配置 

                在装完IpFilter后,你需要改动这三个文件: 

                /etc/rc.local 

                /etc/sysconfig 

                /etc/natrules 

                这是在FreeBSD 2.1.6-RELEASE上用ipfilter 3.1.4的测试. 

                12.1. 1)装入核心模块 

                  如果你使用可装入的核心模块你必须编辑/etc/rc.local文件以使模块在 
                启动时被装入. 

                用这一行: modload /lkm/if_ipl.o 

               如果没有使用,跳过此步. 

                12.2. 2)设置NAT规则 

                  产生一个叫/etc/natrules的文件并放入你的系统所需要的规则. 如果你要 
                使用整个10网络: 

                map fxp0 10.0.0.0/8 -> 208.8.0.1/32 portmap tcp/udp 10000:65000 

                下面是命令每一部分的解释: 

                map 开始命令. 

                fxp0 是真实internet地址的界面 

                10.0.0.0 是要使用的子网 

                /8 子网掩码, 就是 255.0.0.0 

                208.8.0.1 所使用的真实IP地址 

                /32 子网掩码255.255.255.255, 仅使用此IP地址 

                portmap tcp/udp 10000:65000 

                整个网络都用此端口号来重定向tcp/udp调用. 

                12.3. 3)装入NAT规则 

                  每次计算机重新启动时NAT规则都必须被装入. 在你的/etc/rc.local文件里 
                放入这行: ipnat -f /etc/natrules 

                  要检查它是否已装入,以root身份运行: ipnat -ls 

                12.4. 4)在网络界面间允许路由 

                  告诉核心路由这些地址. 在/etc/rc.conf里加入: 

                Gateway=YES 

                  或者在/etc/rc.local里加入: 

                sysctl -w net.inet.ip.forwarding=1 

                12.5. 5)到子网的静态路由 

                  现在要给子网加入静态路由.编辑你的/etc/rc.conf, 在一个旧一些的系统 
                上是/etc/sysconfig. 

                static_routes="foo" route_foo="10.0.0.0 -netmask 0xf0000000 -interface 10.0.0.1" 

                12.6. 6)确定你的网络界面已被配置 

                  我有两块Intel Ether Express Pro B网卡. 一块是208.8.0.1另一块是10.0.0.1 
                你需要在/etc/sysconfig里作如下配置: 

                     network_interfaces="fxp0 fxp1" 
                     ifconfig_fxp0="inet 208.8.0.1 netmask 255.255.255.0" 
                     ifconfig_fxp1="inet 10.0.0.1 netmask 255.0.0.0" 

   注意: 
   当一台客户机在虚拟网络上使用ftp时,要用passive模式. 否则在取目录列表时会超时.



[此贴被 铁笔神算(xiaojun) 在 8月4日15时17分 编辑过]

地主 发表时间: 8/4 15:2

论坛: UNIX系统

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号