ねもぷらす

ふぁいんでぃんぐねもの日記。プログラミングとか育児とか

Ubuntu Desktop 8.10 をルータ化

目的は達成できたけど、例によって未完*1の情報。いつかまとめる…


以下のようなネットワーク構成を想定。

インターネット
  |
  | (PPP)
ブロードバンドルータ
  | (DHCP)
  |
  | (xxx.xxx.xxx.xxx @ WAN)
LANルータ (192.168.1.1 @ LAN)
  |  |
  |  | (DHCP)
  |  |
  |  +->他マシン(192.168.1.xxx)
  |
  +Ubuntu (192.168.1.2 @ eth0)
      | (192.168.0.1 @ eth1)
      | (DHCP)
      |
      +->Ubuntu にぶら下がる他マシン(192.168.0.xxx)

上記でUbuntu にぶら下がるマシンが

  1. インターネットに接続できる
  2. IPアドレスが自動で割り当てられる

ことを想定して、以下を実施。

  1. iptables を設定
  2. DHCPサーバを構築

ちなみに Ubuntu 機は NAS を2つ持ってます。
eth1 -> WAN
eth0 -> LAN 側
として設定。

iptables を設定

iptables設定をクリア

$ sudo iptables -F
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

これで全部許可されてるからOK、と思ったらダメらしい。
Ubuntu下のネットワーク(192.168.0.xxx) から WAN側のネットワーク (192.168.1.xxx) にパケットを転送できるよう設定。

$ sudo vi /etc/sysctl.conf
... 以下のコメントアウトを解除
#net.ipv4.conf.default.forwarding=1net.ipv4.conf.default.forwarding=1
...
$ sudo /sbin/sysctl
$ sudo /etc/init.d/networking restart


iptablesも通るように設定。これやらんでも良いの?よくわからなかった。

$ sudo iptables -A FORWARD -i eth1 -o eth0 -s 192.168.0.0/24 -j ACCEPT
$ sudo iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE

IPマスカレードは必要な気がしたので実行。
結果を確認。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  192.168.0.0/24       anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

とりあえずインターネット共有はコレでOK、のはず。

DHCPサーバを構築

先ずはDHCPサーバをインストール

$ sudo apt-get install dhcp3-server


/etc/dhcp3/dhcpd.conf を編集。PXEサーバを目的としています。

ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;

subnet 192.168.0.0 netmask 255.255.255.0 {
        option routers                  192.168.0.1;
        option subnet-mask              255.255.255.0;
        option domain-name-servers      192.168.1.1;
        option domain-name              "ubuntu";
        option time-offset              -18000; # Eastern Standard Time
        range dynamic-bootp 192.168.0.2 192.168.0.3;
        default-lease-time 21600;
        max-lease-time 43200;
        filename "pxelinux.0";
}

で、DHCPサーバを起動

$ sudo /etc/init.d/dhcp3-server start

あっさり終了。
でもここに至るまでが長かった…方針決めるのに半日かかった。

今後

やりたいことはだいたい誰かがやっている。

*1:ネットワーク解放し過ぎでセキュリティ的に NG。