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を指定。
これでプライベートアドレスをインターネットに送信する際に送信元アドレスが変換される。
$ 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