閘道器是連結多個網路的系統。此名詞通常用於本地網路通往外部 IP 位址的 “出口”。閘道器把每個網路連結在一起,且做為路由器在不同介面間傳送 IP 封包。
區域網路接在私人網址範圍內 (不在網路網路的路由上),閘道器就需要 位址掩蔽 讓其經由網路與外界溝通。掩蔽作業是網路層次的代理工作:內部機器,都被閘道器取代 (因為閘道器有外部的路由位址),藉由掩蔽連結,資料送出出去,進來的資料經由掩蔽連結至內部機器。閘道器以指定的 TCP 埠執行此工作,通常是較高的號碼 (超過 60000)。對外部而言,經由內部機器的連結,就是來自此等保留埠號。
閘道器有兩種 網路位址轉換 (英文縮寫 NAT) 的功能。第一種是 目的 NAT (DNAT),改變封包目的 IP 位址 (與 TCP 或 UDP 埠)。連結追蹤機制同時改變後續封包的連結。第二種 NAT 是 來源 NAT (SNAT),其中的 偽裝 是特例之一;SNAT 改變出去連結的來源 IP 位址 (與 TCP 或 UDP 埠)。如同 DNAT,所有的封包由連結追蹤機制處理。NAT 祗用於 IPv4 及其限制的位址空間;在 IPv6 內,其寬廣的位址技術允許直接在網際網路路由 (並不表示可以近用內部機器,因為防火牆可以過濾流量) 減少 NAT 的用途。
理論講多了,看看實務怎麼做。system into a gateway is a simple matter of enabling the appropriate option in the Linux kernel, 經由 /proc/
虛擬檔案系統,從 Linux 核心進入 Debian 系統的閘道器:
#
echo 1 > /proc/sys/net/ipv4/conf/default/forwarding
This option can also be automatically enabled on boot if /etc/sysctl.conf
or a configuration file in /etc/sysctl.d/
sets the net.ipv4.conf.default.forwarding
option to 1
.
範例 10.1. /etc/sysctl.conf
檔案
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
在 IPv6 也能取得同樣的效果,把手冊中的 ipv4
換為 ipv6
,並使用 net.ipv6.conf.all.forwarding
於 /etc/sysctl.conf
檔案內。
啟用 IPv4 偽裝就有點複雜,涉及組態 netfilter 防火牆。