12FF5B8

hico_horiuchiの技術系な覚え書き.

Ubuntuをufw + dnsmasqでルータ化

研究室で,大学NW(グローバル)と研究室内NW(ローカル)を繋ぐルータを運用している.
本日,そのルータのファイルシステムが逝ったので,再インストールした.
せっかくなので,ブログにも構築手順を書いてみる.

環境

ルータ機は,2NICのマシン(i3, 8G, SSD64G)にUbuntu Server 14.04を入れたもの.
インストール時にOpenSSHは入れたけど,それ以外は,何もしていない.

NW構成は以下の通りで,もちろんIPはダミー.
GW(ルータ)のNICは,p1p1を大学側,p3p1を研究室側をしている.
GWの下にL3スイッチがあり,そこから実験用のマシンに繋っている.

    university network
            │ gw [192.168.0.1]
───┬──┴────────── 192.168.0.0/24
      │ p1p1 [192.168.0.241]
  ┌─┴─┐
  │  gw  │
  └─┬─┘
      │ p3p1 [10.0.0.1]
  ┌─┴─┐
  │  sw  │
  └─┬─┘
───┴──┬────────── 10.0.0.0/24
            │
    laboratory network

ufwの設定

今回は,iptablesのラッパであるufwを使ってNATを行う.

  • /etc/network/interfaces

auto p1p1
iface p1p1 inet static
  address   192.168.0.241
  netmask   255.255.255.0
  gateway   192.168.0.1
auto p3p1
iface p3p1 inet static
  address   10.0.0.1
  netmask   255.255.255.0

  • /etc/default/ufw

#DEFAULT_FORWARD_POLICY="DROP"
DEFAULT_FORWARD_POLICY="ACCEPT"

  • /etc/ufw/sysctl.conf: 8行目をコメントイン

net/ipv4/ip_forward=1

  • /etc/ufw/before.rules: ファイルの先頭に追記

# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic from p3p1 through p1p1.
-A POSTROUTING -s 10.0.0.0/24 -o p1p1 -j MASQUERADE
# Don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

ufwを再起動して,設定を適用させれば完了.

$ sudo ufw disable && sudo ufw enable
$ sudo ufw default allow

dnsmasqの設定

研究室内NWから名前解決ができるように,ルータにキャッシュDNSも用意する.
今回は,軽量で設定が簡単なdnsmasqを使う.

$ sudo apt-get install dnsmasq
  • /etc/dnsmasq.conf

interface=p3p1
no-dhcp-interface=p1p1
no-dhcp-interface=p3p1
cache-size=500

設定も必要なのはこれだけで,あとはコメント行だった….
OS起動時にdnsmasqも起動するようにしておく.

$ sudo service dnsmasq restart
$ sudo update-rc.d dnsmasq defaults

まとめ

これだけの設定で,Ubuntuをルータ化することができた.
あとは,L3スイッチのDHCP設定で,GWとDNSを10.0.0.1に向ければOK.