ufw でルータをつくる

早速ですが、Ubuntu 10.04 の ufw でルータを作ってみたいと思います。
iptables でルータを作るというのはネットでよく見るのですが、ufw ですとあまり見かけないので紹介します。
ufw というのは iptables のラッパーです。
ラッパーですから、ufw に出来て iptables に出来ないことは(多分)ないですが、残念ながら iptables に出来て ufw に出来ないことはあります。
そんなときは /etc/ufw/*.rules などを編集して iptables を直接叩けますので、くやしいですがそうしましょう。個人的には ufw の方がシンプルに感じるのでオススメします。
あ、あくまで機能の紹介なのでセキュリティについては触れてません。

            インターネット
                  │ gw [192.168.0.254]
                  │
──────┬──┴────────── 192.168.0.0/24
            │
            │ eth1 [192.168.0.1]
        ┌─┴─┐
        │  gw  │
        └─┬─┘
            │ eth0 [10.0.0.1]
            │
──────┴──┬────────── 10.0.0.0/24
                  │
                 │ eth0 [10.0.0.2]
              ┌─┴─┐
              │  w1  │
              └───┘
ubuntu@gw:~$ cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 10.0.0.1
  netmask 255.255.255.0

auto eth1
iface eth1 inet static
  address 192.168.0.1
  netmask 255.255.255.0
  gateway 192.168.0.254
ubuntu@w1:~$ cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 10.0.0.2
  netmask 255.255.255.0
  gateway 10.0.0.1

環境は上記のようになります。

まずはパケットの転送を許可します。
パケットの転送を許可するためには、/etc/default/ufw と /etc/ufw/sysctl.conf を下記のように編集します。

ubuntu@gw:~$ sudo vi /etc/default/ufw
#DEFAULT_FORWARD_POLICY="DROP"
DEFAULT_FORWARD_POLICY="ACCEPT"

sysctl については、通常 /etc/sysctl.conf を編集しますが、ufw では /etc/ufw/sysctl.conf を編集します。
/etc/ufw/sysctl.conf の 10 行目あたりのコメントアウトを外してください。

ubuntu@gw:~$ sudo vi /etc/ufw/sysctl.conf
net/ipv4/ip_forward=1

次に IP マスカレードの設定を /etc/ufw/before.rules に記述して、ufw を有効にして完成です。
下記のコードを最初のコメントブロックの後 (11行目あたり) に記述してください。
*nat から COMMIT までが nat テーブルの設定になるので、きちんと記述してください。
10.0.0.0/24 からのパケットを eth1 に転送するという意味です。

ubuntu@gw:~$ sudo vi /etc/ufw/before.rules
# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]

# Forward traffic from eth0 through eth1.
-A POSTROUTING -s 10.0.0.0/24 -o eth1 -j MASQUERADE

# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT
ubuntu@gw:~$ sudo ufw disable && sudo ufw enable

以上です。
慣れれば 3 分で出来ますよ。