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 分で出来ますよ。