UbuntuでNATを有効にしてルータ化する

PCの環境
Ubuntu 14.04.2 LTS

条件
NICが2枚以上あること

構成図

[Client-PC] ----- eth1 [NAT-RT(※)] eth0 ---- [Internet]

※ がここで構築するNATルータ。eth1にはプライペートアドレスが設定されている。NATルータのeth1でDHCPサーバを動作させて、Client-PCにプライベートアドレスを割り当てている。今回は、Client-PCがInternetに接続するために、NAT変換とルーティングの設定をする。


手順

1.ubuntuでパケットをルーティングさせるため、forwardingの設定をします。

$ sudo -i
# echo "1" > /proc/sys/net/ipv4/ip_forward

これだけだとPCを再起動すると設定が元に戻ってしまうため、設定ファイルも変更します。

# vi /etc/sysctl.conf 

net.ipv4.ip_forward=1


2.NATの設定をする

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

インターネットに接続しているIFを指定。
これでプライベートアドレスをインターネットに送信する際に送信元アドレスが変換される。


3.iptables起動スクリプトの作成

$ sudo /sbin/iptables-save -c > /etc/iptables.rules
$ sudo vi /etc/network/if-pre-up.d/iptables_start

#!/bin/sh
/sbin/iptables-restore < /etc/iptables.rules
exit 0
$ sudo chmod +x iptables_start


直接、iptables.rulesを編集して読み込むこともできます

iptables.rulesを編集後、読み込む

# iptables-restore < /etc/iptables.rules 

iptables-save を実行すると、変更後の設定が表示されます



参照サイト
まさおのブログ (表): Ubuntu でルータ (IPv4)

iptablesテンプレート集 改訂版(8):知らなきゃ損するiptablesのTips (1/3) - @IT

Routing - Ubuntu 14.04のルーター化 - Qiita

How To Set Up a Firewall Using Iptables on Ubuntu 14.04 | DigitalOcean


DHCPサーバの設定は以下で書いてます
ubuntu で dhcp-server を構築 - maruchan_shiro123’s blog


補足

現在の iptables の設定を確認する方法に戸惑ったのでメモ。

iptable-saveコマンドについて
・一般ユーザから iptables-save を実行しても何も表示されない
・sudo -i で特権ユーザになって、iptables-save を実行すれば、現在の設定が表示さえる

iptableコマンドについて
iptables -L -n では何も表示されなくても、iptatable-saveでは表示される
iptables -L -n で何も表示されないのは、一般ユーザでも特権ユーザでも同様


iptables の設定を追加する際は、 sudo -i で特権ユーザになって、通常の iptables コマンドを実行すれば良いみたい

$ sudo -i

# iptables -A INPUT -i lo -j ACCEPT

# iptables-save

これで追加したチェーンが、iptables-saveコマンドで表示される(iptables-saveをオプションなしで実行すると、現在のiptablesの設定が表示される)
それを上記のiptables-saveコマンドで保存すればok