?? 10.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0066)http://qref.sourceforge.net/Debian/reference/ch-gateway.zh-cn.html -->
<HTML><HEAD><TITLE>Debian 參考手冊 - 使用Debian系統架設網關</TITLE>
<META http-equiv=content-type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.3790.118" name=GENERATOR></HEAD>
<BODY><A name=ch-gateway></A>
<HR>
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-tune.zh-cn.html">上一頁</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/reference.zh-cn.html#contents">目錄</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-preface.zh-cn.html">1</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-system.zh-cn.html">2</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-install.zh-cn.html">3</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-tutorial.zh-cn.html">4</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-woody.zh-cn.html">5</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-package.zh-cn.html">6</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-kernel.zh-cn.html">7</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-tips.zh-cn.html">8</A> ] [
<A href="http://qref.sourceforge.net/Debian/reference/ch-tune.zh-cn.html">9</A>
] [ 10 ] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-edit.zh-cn.html">11</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-vcs.zh-cn.html">12</A> ] [
<A
href="http://qref.sourceforge.net/Debian/reference/ch-program.zh-cn.html">13</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-gnupg.zh-cn.html">14</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-support.zh-cn.html">15</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ap-appendix.zh-cn.html">A</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-edit.zh-cn.html">下一頁</A> ]
<HR>
<H1>Debian 參考手冊 <BR>第 10 章 - 使用Debian系統架設網關 </H1>
<HR>
<P>用Debian可以架設一個全能的網關,它可以承擔NAT、mail、DHCP、DNS cache、HTTP proxy
cache、CVS、NFS的工作以及提供面向家庭LAN系統的Samba services。有關這方面網絡配置的討論可參閱<CODE><A
href="http://www.netfilter.org/">Netfilter</A></CODE>。
<HR>
<A name=s10.1></A>
<H2>10.1 網絡配置</H2>
<HR>
<A name=s-ip-class></A>
<H3>10.1.1 網關的主機設置</H3>
<P>LAN按下面方法分段使用IP地址以避免Internet上的IP地址沖突。 <PRE> 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
</PRE>
<P>在Debian中<CODE>/etc/network/interfaces</CODE>文件用于IP設置。
<P>舉個例子,假如某臺機器的<CODE>eth0</CODE>使用DHCP動態IP地址連接Internet,<CODE>eth1</CODE>連接LAN,則其<CODE>/etc/network/interfaces</CODE>的設置如下(適用于Woody及后繼版本)
<PRE> 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
</PRE>
<P>修改了<CODE>/etc/network/interfaces</CODE>后,可執行下面的命令使其生效: <PRE> # /etc/init.d/networking restart
</PRE>
<P>注意:在Woody及其后繼版本中的<CODE>/etc/network/interfaces</CODE>文件不適用于Potato。(同樣的差異會出現在Sarte和Woody之間。)
<P>如果系統使用PCMCIA
NIC,則在Potato系統中需要設置<CODE>/etc/pcmcia/network.opts</CODE>而不是interfaces,在Woody就不必了,系統已解決了這個問題。
<P>想檢查設置結果可查看下列命令輸出: <PRE> # ifconfig
# cat /proc/pci
# cat /proc/interrupts
# dmesg | more
</PRE>
<P>有時,DSL(PPPoE)連接存在MTU問題,參閱<CODE><A
href="http://www.tldp.org/HOWTO/DSL-HOWTO/">DSL-HOWTO</A></CODE>。如果存在無法訪問某些站點的問題,參閱<A
href="http://qref.sourceforge.net/Debian/reference/ch-install.zh-cn.html#s-killecn">無法訪問某此站點的怪問題,
第 3.7.5 節</A>。
<HR>
<A name=s-ip-check></A>
<H3>10.1.2 網絡設置檢查</H3>
<P>典型的軟件集合: <PRE> # apt-get install nfs samba dhcpd dhcp-client bind squid procmail fetchmail
# apt-get install ssh cvs
</PRE>
<P>檢查下列文件: <PRE> /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)
</PRE>
<P><CODE>bind</CODE>創建一個本地的cache DNS server并且changes DNS to
localhost。檢查<CODE>/etc/resolv.conf</CODE>: <PRE> nameserver 127.0.0.1
search lan.aokiconsulting.com
</PRE>
<HR>
<A name=s-netfilter></A>
<H2>10.2 Netfilter設置</H2>
<P>在Linux 2.4及其后繼版本中加入了netfilter/iptables項目,作為一個防火墻子系統。參閱<CODE><A
href="http://www.netfilter.org/">Netfilter</A></CODE>,那兒有許多有關其配置的討論和解釋。
<HR>
<A name=s-netfilter-basics></A>
<H3>10.2.1 netfilter基礎</H3>
<P>Netfilter內建了5條鏈路來處理數據包,它們分別是:PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTING: <PRE> 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
</PRE>
<HR>
<A name=s-netfilter-table></A>
<H3>10.2.2 過濾表(Netfilter table)</H3>
<P>數據包在每條內建的鏈路中傳輸時按如下過濾表中的規則進行處理。
<UL>
<LI>filter(數據包過濾器,鏈路中默認的過濾器)
<UL>
<LI>INPUT(作用于進入本機的數據包)
<LI>FORWARD(作用于路由到本機的數據包)
<LI>OUTPUT(作用于本地產生的數據包) </LI></UL>
<LI>nat(網絡地址翻譯)
<UL>
<LI>PREROUTING(作用于剛進入的待轉換數據包)
<LI>OUTPUT(作用于在路由之前待轉換的本地產生的數據包)
<LI>POSTROUTING(作用于待發出的已轉換的數據包) </LI></UL>
<LI>mangle (network address mangling, good only after 2.4.18)
<UL>
<LI>適用于所有5條鏈路。 </LI></UL></LI></UL>
<HR>
<A name=s-netfilter-target></A>
<H3>10.2.3 過濾目標(Netfilter target)</H3>
<P>Firewall rules have several targets:
<UL>
<LI>4個基本目標:
<UL>
<LI>ACCEPT 允許數據包通過。
<LI>DROP 阻攔數據包。
<LI>QUEUE 允許數據包進入用戶空間(userspace)(如果內核支持的話)。
<LI>RETURN means stop traversing this chain and resume at the next rule in
the previous (calling) chain. </LI></UL>
<LI>擴展目標:
<UL>
<LI>LOG 打開內核日志。
<LI>REJECT 回送錯誤數據包并阻攔該數據包。
<LI>SNAT 修改數據包源地址,僅作用于POSTROUTING鏈路。(僅適用于nat過濾表) <PRE> --to-source ipaddr[-ipaddr][:port-port]
</PRE>
<LI>MASQUERADE 作用和SNAT一樣,但面向使用動態IP請求建立的連接(拔號連接)。(僅適用于nat過濾表) <PRE> --to-ports port[-port]
</PRE>
<LI>DNAT 修改數據包目的地址,僅作用于PREROUTING、OUTPUT鏈路以及由它們調用的用戶自定義鏈路。(僅適用于nat過濾表) <PRE> --to-destination ipaddr[-ipaddr][:port-port]
</PRE>
<LI>REDIRECT 修改數據包目標地址使其發送給本機。 <PRE> --to-ports port[-port]
</PRE></LI></UL></LI></UL>
<HR>
<A name=s-netfilter-command></A>
<H3>10.2.4 網絡過濾器命令</H3>
<P><CODE>iptables</CODE>的基本命令有: <PRE> iptables -N <VAR>chain</VAR> # create a <VAR>chain</VAR>
iptables -A <VAR>chain</VAR> \ # add rule to <VAR>chain</VAR>
-t <VAR>table</VAR> \ # use <VAR>table</VAR> (filter, nat, mangle)
-p <VAR>protocol</VAR> \ # tcp, udp, icmp, or all,
-s <VAR>source-address[/mask]</VAR> \
--sport <VAR>port[:port]</VAR> \ # source port if -p is tcp or udp
-d <VAR>destination-address[/mask]</VAR> \
--dport <VAR>port[:port]</VAR> \ # dest. port if -p is tcp or udp
-j <VAR>target</VAR> \ # what to do if match
-i <VAR>in-interface-name</VAR> \ # for INPUT, FORWARD, PREROUTING
-o <VAR>out-interface-name</VAR> # for FORWARD, OUTPUT, POSTROUTING
</PRE>
<HR>
<A name=s-ip-masq></A>
<H3>10.2.5 IP偽裝(IP-masquerade)</H3>
<P>一個運用IP偽裝(NAT)的網關可實現LAN內的機器通過共享一個單獨的可訪問外網的IP地址來訪問Internet資源。 <PRE> # apt-get install ipmasq
</PRE>
<P>執行樣例規則來加強<CODE>ipmasq</CODE>的保護機制。參閱<CODE>/usr/share/doc/ipmasq/examples/stronger/README</CODE>。對于使用2.4版內核鏡像的Debian,請確認加載了相應的模塊。有關的必要設置參閱<A
href="http://qref.sourceforge.net/Debian/reference/ch-kernel.zh-cn.html#s-kernel-net">網絡功能,
第 7.2.3 節</A>。
<P>對于使用2.2版內核鏡像的Debian,可按下面的方法編輯<CODE>/etc/masq/rules</CODE>中的<CODE>Z92timeouts.rul</CODE>文件,以保證可長時間連接遠程站點(如發送大容量的email,等):
<PRE> # tcp, tcp-fin, udp
# 2hr, 10 sec, 160 sec - default
# 1 day, 10 min, 10 min - longer example
$IPCHAINS -M -S 86400 600 600
</PRE>
<P>同樣,如果是通過PCMCIA
NIC訪問網絡,<CODE>ipmasq</CODE>需要從<CODE>/etc/pcmcia/network.opts</CODE>啟動。參閱<CODE>/usr/share/doc/ipmasq/ipmasq.txt.gz</CODE>.
<HR>
<A name=s-ip-redirect></A>
<H3>10.2.6 重定向SMTP聯接(2.4版內核)</H3>
<P>假設你將一臺筆記本電腦重新配置成可連入其它的LAN環境,而你不想再重新配置用戶郵件代理,即:想直接用原來的配置收發郵件。
<P>使用<CODE>iptables</CODE>命令向網關機器中加入下面的規則,就可以實現重定向與網關機器的SMTP連接。 <PRE> # 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
</PRE>
<P>想使用更完備的重定向規則集,建議安裝<CODE>ipmasq</CODE>軟件包,并在<CODE>/etc/ipmasq/rules/</CODE>目錄中添加<CODE><CODE><A
href="http://qref.sourceforge.net/Debian/reference/examples/">M30redirect.def</A></CODE></CODE>文件。
<HR>
<A name=s10.3></A>
<H2>10.3 管理多重網絡聯接</H2>
<P>[FIXME] 路由策略(by Phil Brutsche <CODE><A
href="mailto:pbrutsch@tux.creighton.edu">pbrutsch@tux.creighton.edu</A></CODE>):
詳情參閱<CODE><A href="http://lartc.org/">iproute manual</A></CODE>。Traffic control
(tc) 也很有趣。
<P>Environment: <PRE> 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.
</PRE>
<P>Special magic:
<OL type=1>
<LI>ip rule add from 192.168.1.2 lookup 1
<LI>ip rule add from 10.0.0.2 lookup 2
<LI>ip route add to default via 10.0.0.1 metric 0
<LI>ip route add to default via 192.168.1.1 metric 1
<LI>ip route add table 1 to 192.168.1.0/24 via eth0
<LI>ip route add table 1 to 10.0.0.2/24 via eth1
<LI>ip route add table 1 to default via 192.168.1.1
<LI>ip route add table 2 to 192.168.1.0/24 via eth0
<LI>ip route add table 2 to 10.0.0.2/24 via eth1
<LI>ip route add table 2 to default via 10.0.0.2 </LI></OL>
<P>[FIXME] 我沒親自做過。如何利用自動拔號特性使拔號連接保持高速?如果你知道請發補丁我:)
<HR>
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-tune.zh-cn.html">上一頁</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/reference.zh-cn.html#contents">目錄</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-preface.zh-cn.html">1</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-system.zh-cn.html">2</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-install.zh-cn.html">3</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-tutorial.zh-cn.html">4</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-woody.zh-cn.html">5</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-package.zh-cn.html">6</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-kernel.zh-cn.html">7</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-tips.zh-cn.html">8</A> ] [
<A href="http://qref.sourceforge.net/Debian/reference/ch-tune.zh-cn.html">9</A>
] [ 10 ] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-edit.zh-cn.html">11</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-vcs.zh-cn.html">12</A> ] [
<A
href="http://qref.sourceforge.net/Debian/reference/ch-program.zh-cn.html">13</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-gnupg.zh-cn.html">14</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-support.zh-cn.html">15</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ap-appendix.zh-cn.html">A</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-edit.zh-cn.html">下一頁</A> ]
<HR>
<P>Debian 參考手冊
<ADDRESS>CVS, 星期三 四月 28 19:36:38 UTC 2004<BR><BR>Osamu Aoki <CODE><A
href="mailto:osamu@debian.org">osamu@debian.org</A></CODE><BR>Translator: Hao
"Lyoo" Liu <CODE><A
href="mailto:iamlyoo@163.net">iamlyoo@163.net</A></CODE><BR><A
href="http://qref.sourceforge.net/Debian/reference/ap-appendix.zh-cn.html#s-authors">作者,
第 A.1 節</A><BR><BR></ADDRESS>
<HR>
</BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -