[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 下一页 ]

Debian 参考手册
第 10 章 - 使用Debian系统架设网关


用Debian可以架设一个全能的网关,它可以承担NAT、mail、DHCP、DNS cache、HTTP proxy cache、CVS、NFS的工作以及提供面向家庭LAN系统的Samba services。有关这方面网络配置的讨论可参阅Netfilter


10.1 网络配置


10.1.1 网关的主机设置

LAN按下面方法分段使用IP地址以避免Internet上的IP地址冲突。

     Class A: 10.0.0.0                    with mask 255.0.0.0
     Class B: 172.16.0.0 - 172.31.0.0     with mask 255.255.0.0
     Class C: 192.168.0.0 - 192.168.255.0 with mask 255.255.255.0

在Debian中/etc/network/interfaces文件用于IP设置。

举个例子,假如某台机器的eth0使用DHCP动态IP地址连接Internet,eth1连接LAN,则其/etc/network/interfaces的设置如下(适用于Woody及后继版本)

     auto lo
     iface lo inet loopback
     
     auto eth0
     iface eth0 inet dhcp
     
     auto eth1
     iface eth1 inet static
     address 192.168.1.1
     network 192.168.1.0
     netmask 255.255.255.0
     broadcast 192.168.1.255

修改了/etc/network/interfaces后,可执行下面的命令使其生效:

     # /etc/init.d/networking restart

注意:在Woody及其后继版本中的/etc/network/interfaces文件不适用于Potato。(同样的差异会出现在Sarte和Woody之间。)

如果系统使用PCMCIA NIC,则在Potato系统中需要设置/etc/pcmcia/network.opts而不是interfaces,在Woody就不必了,系统已解决了这个问题。

想检查设置结果可查看下列命令输出:

     # ifconfig
     # cat /proc/pci
     # cat /proc/interrupts
     # dmesg | more

有时,DSL(PPPoE)连接存在MTU问题,参阅DSL-HOWTO。如果存在无法访问某些站点的问题,参阅无法访问某此站点的怪问题, 第 3.7.5 节


10.1.2 网络设置检查

典型的软件集合:

     # apt-get install nfs samba dhcpd dhcp-client bind squid procmail fetchmail 
     # apt-get install ssh cvs

检查下列文件:

     /etc/init.d/dhcpd       (edit to serve only LAN = eth1)
     /etc/host.allow         (ALL: 192.168.0.0/16 127.0.0.0/8) for NFS
     /etc/exports            (Need this for NFS)
     /etc/bind/db.192.168.1  (add)
     /etc/bind/db.lan        (add)
     /etc/bind/named.conf    (edit)
     /etc/resolv.conf        (edit)
     /etc/hosts
     /etc/dhcpd.conf         (edit for LAN = eth1)
     /etc/dhclient.conf      (edit to force local DNS)
     /etc/samba/smb.conf
     /etc/exim/exim.conf
     /etc/mailname
     /etc/aliases
     /etc/squid.conf         (add all LAN host IPs as allowed)

bind创建一个本地的cache DNS server并且changes DNS to localhost。检查/etc/resolv.conf

     nameserver 127.0.0.1
     search lan.aokiconsulting.com

10.2 Netfilter设置

在Linux 2.4及其后继版本中加入了netfilter/iptables项目,作为一个防火墙子系统。参阅Netfilter,那儿有许多有关其配置的讨论和解释。


10.2.1 netfilter基础

Netfilter内建了5条链路来处理数据包,它们分别是:PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTING:

                     routing
                     decision
     IN ------> PRE ---> ------> FORWARD -----> ----> POST -----> OUT
     interface  ROUTING  \       filter       /       ROUTING     interface
                DNAT     |       tracking     ^       SNAT
                REDIRECT |                    |       MASQUERADE
                         v                    |
                       INPUT                OUTPUT
                         | filter             ^ filter,DNAT 
                         v                    |
                         \--> Local Process --/
                              user-space programs

10.2.2 过滤表(Netfilter table)

数据包在每条内建的链路中传输时按如下过滤表中的规则进行处理。


10.2.3 过滤目标(Netfilter target)

Firewall rules have several targets:


10.2.4 网络过滤器命令

iptables的基本命令有:

     iptables -N chain                   # create a chain
     
     iptables -A chain \                 # add rule to chain
              -t table \                 # use table (filter, nat, mangle)
              -p protocol \              # tcp, udp, icmp, or all,
              -s source-address[/mask] \
              --sport port[:port] \      # source port if -p is tcp or udp
              -d destination-address[/mask] \
              --dport port[:port] \      # dest. port if -p is tcp or udp
              -j target \                # what to do if match
              -i in-interface-name \     # for INPUT,  FORWARD, PREROUTING
              -o out-interface-name      # for FORWARD, OUTPUT, POSTROUTING

10.2.5 IP伪装(IP-masquerade)

一个运用IP伪装(NAT)的网关可实现LAN内的机器通过共享一个单独的可访问外网的IP地址来访问Internet资源。

     # apt-get install ipmasq

执行样例规则来加强ipmasq的保护机制。 参阅/usr/share/doc/ipmasq/examples/stronger/README。对于使用2.4版内核镜像的Debian,请确认加载了相应的模块。有关的必要设置参阅网络功能, 第 7.2.3 节

对于使用2.2版内核镜像的Debian,可按下面的方法编辑/etc/masq/rules中的Z92timeouts.rul文件,以保证可长时间连接远程站点(如发送大容量的email,等):

     # tcp, tcp-fin, udp
     # 2hr, 10 sec, 160 sec - default
     # 1 day, 10 min, 10 min - longer example
     $IPCHAINS -M -S 86400 600 600

同样,如果是通过PCMCIA NIC访问网络,ipmasq需要从/etc/pcmcia/network.opts启动。参阅/usr/share/doc/ipmasq/ipmasq.txt.gz.


10.2.6 重定向SMTP联接(2.4版内核)

假设你将一台笔记本电脑重新配置成可连入其它的LAN环境,而你不想再重新配置用户邮件代理,即:想直接用原来的配置收发邮件。

使用iptables命令向网关机器中加入下面的规则,就可以实现重定向与网关机器的SMTP连接。

     # iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j REDIRECT \
                -p tcp --dport smtp --to-port 25 # smtp=25, INPUT is open

想使用更完备的重定向规则集,建议安装ipmasq软件包,并在/etc/ipmasq/rules/目录中添加M30redirect.def文件。


10.3 管理多重网络联接

[FIXME] 路由策略(by Phil Brutsche [email protected]): 详情参阅iproute manual。Traffic control (tc) 也很有趣。

Environment:

     eth0: 192.168.1.2/24; gateway 192.168.1.1
     eth1: 10.0.0.2/24; gateway 10.0.0.1
     No masquerading on this machine.

Special magic:

  1. ip rule add from 192.168.1.2 lookup 1
  2. ip rule add from 10.0.0.2 lookup 2
  3. ip route add to default via 10.0.0.1 metric 0
  4. ip route add to default via 192.168.1.1 metric 1
  5. ip route add table 1 to 192.168.1.0/24 via eth0
  6. ip route add table 1 to 10.0.0.2/24 via eth1
  7. ip route add table 1 to default via 192.168.1.1
  8. ip route add table 2 to 192.168.1.0/24 via eth0
  9. ip route add table 2 to 10.0.0.2/24 via eth1
  10. ip route add table 2 to default via 10.0.0.2

[FIXME] 我没亲自做过。如何利用自动拔号特性使拔号连接保持高速?如果你知道请发补丁我:)


[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 下一页 ]

Debian 参考手册

CVS, 星期二 八月 17 00:35:13 UTC 2004

Osamu Aoki [email protected]
Translator: Hao "Lyoo" Liu [email protected]
作者, 第 A.1 节