Ubuntu Server 10.04 + bridge-utils + dhcp3-server 設定メモ


※この記事は過去の記事「Ubuntu Server 9.04 + bridge-utils + dhcp3-server 設定メモ - 新芽の手、ほんとの手」を加筆修正したものです。こちらのがより正確な情報です。

背景

自宅のサーバを Ubuntu Server 9.04 から 10.04 へアップグレードしたので環境を入れ直し。その過程で表題の環境も入れ直した。ちなみに自分で書いた過去記事は驚くほど適当で役に立たず、結局また情報を探し回るハメになった。ので今度こそ備忘録。

参考

今回はドンピシャな記事を見つけたので、これが最も参考になりました。
Internet/ConnectionSharing - Community Help Wiki

前回は説明していなかった dhcp3-server の設定ですが、こちらが参考になります。
dhcp3-server - Community Help Wiki

前回参考にした記事も断片的に参考になる。
Ubuntuルーター構築 : sa-sa-ki.jpのblog
VirtualBox on Ubuntu でブリッジ接続のまとめ (簡単設定)

構成

  • WAN側
    • 家のルータと接続、IPは固定
  • LAN側
    • DHCP で自動配布
    • 複数の NIC をさせるようにブリッジを構築
WAN:
  eth0
    IP: 192.168.1.2/24
    GW: 192.168.1.1

LAN:
  br0
    IP: 192.168.100.1/24
    GW: 192.168.1.2
    bridge_ports: eth1

必要なパッケージのインストール

apt-get で以下のパッケージをインストール。

sudo apt-get install bridge-utils dhcp3-server

これでそれぞれブリッジの設定、dhcpd サービスの開始が出来るようになる。

IP マスカレード(NAPT)

マスカレードを設定し、内側の LAN から外側の WAN へ通信が行えるようにする。

;; iptables でマスカレードを設定
$> sudo iptables -A FORWARD -o eth0 -i eth1 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
$> sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$> sudo iptables -A POSTROUTING -t nat -j MASQUERADE 

;; 設定した iptables を保存
$> sudo iptables-save | sudo tee /etc/iptables

;; 設定を反映
$> iptables-restore < /etc/iptables

設定が反映されているか確認する。

$> sudo iptables -t nat -L
----
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  192.168.100.0/24     anywhere            
MASQUERADE  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  

sysctlファイルにあるIPv4パケット転送を有効にする。

$> vim /etc/sysctl.conf
(以下の宣言をコメント解除)
net.ipv4.ip_forward=1

----
(設定が反映されているか確認)
$> sysctl -p
net.ipv4.ip_forward = 1

network サービス開始時、interface の up 前に iptables の設定を読み込むようスクリプトを追加

$> vi /etc/network/if-pre-up.d/iptables
----
#!/bin/sh
sudo /sbin/iptables-restore < /etc/iptables
----
$> chmod 755 /etc/network/if-pre-up.d/iptables

/etc/network/interface の設定

ブリッジ br0 の記述を /etc/network/interface に追加し、Ubuntu 起動時に自動でブリッジが利用可能になるよう設定する。

$> vim /etc/network/interfaces
----
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
	address 192.168.1.2
	netmask 255.255.255.0
	network 192.168.1.0
	broadcast 192.168.1.255
	gateway 192.168.1.1
	dns-nameservers 192.168.1.1

iface eth1 inet manual

auto br0
iface br0 inet static
	address 192.168.100.1
	netmask 255.255.255.0
	bridge_ports eth1
----
dhcp3-server, dhcpd の設定
  • dhcp3-server
$> sudo nano -w /etc/default/dhcp3-server

# 以下の一行を追加
INTERFACES="br0"
  • dhcpd
nano -w /etc/dhcp3/dhcpd.conf

# 以下の記述を追加
ddns-update-style none;
log-facility local7;

subnet 192.168.100.0 netmask 255.255.255.0 {
	option routers			192.168.100.1;
	option subnet-mask		255.255.255.0;
	option broadcast-address 	192.168.100.255;
	option domain-name		lan;
	option domain-name-servers	192.168.1.1;
	range dynamic-bootp		192.168.100.2 192.168.100.254;
	default-lease-time		21600;
	max-lease-time			43200;
}
サービスの再起動

ネットワークと dhcp3-server を再起動する。

$> /etc/init.d/networking restart
$> /etc/init.d/dhcp3-server restart

# 再起動後に route コマンドで状態を確認できる
$> route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 br0
192.168.1.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         192.168.1.1    0.0.0.0         UG    100    0        0 eth0

ifconfig -a などを実行して ネットワークの設定を確認するのもよい。

終わり

おかげさまでまた自前ルータが動くようになりました。費用対効果は悪いですが知識量の増加と充実感は結構あります。まぁ一度設定してしまうとまた次のクリーンインストール時くらいまでやらないので忘れちゃうんですが。

結論

お金を出して有線LANルータを買いましょう。時間・電気代などを考えると総合的に得です。*1

*1:この結論は変わりなし