Ubuntu 16.04 ufw と連係し、 Linux ルーター 設定

ufw を有効にしてFirewall 設定も有効に

unnumber 固定IP 設定は このリンクからどうぞ。

この記事を書いたのは、ブログ形式のメモ程度の設定記事がUbuntuの環境を考慮せず、ufw などの設定をすれば、『使えなくなってしまうもの』が増える一方なので ブロガー記事に対して一石を投じるかたちで記述した。

  • カーネル動作で IP Forward を有効にする。

Linuxカーネルはかなり以前より上手くできており proc デバイスを変更するだけで 機能設定が可能になっている。 IP Forward を有効にするには /proc/sys/net/ipv4/ip_forwar を ‘1’にするだけでOKだ。

ただし、これだけだと再起動するたびにデフォルトの ‘0’ に戻ってしまう。 この設定を 恒久的に変更するには /etc/sysctl.conf を編集して #net.ipv4.ip_forward=1 をコメントアウトする。

$ sudo vi /etc/sysctl.conf

編集後、すぐに結果を反映させたい時は、

$ sudo sysctl -p

を実行すればいいだろう。

この部分は、一般的なルーター設定でunnumber と同様だ。

$ sudo apt install pppoeconf
$ sudo pppoeconf


pppoeconf execution
クリックして拡大

pppoeconf がインストールされていなければ 上記、1行目を忘れず実行する。

  • pppoeの設定は pppoeconf を使用すれば簡単に設定が可能だ。

この画像でenp3s0と表示されている部分は各自のイーサネットのインターフェース名でことなる。初めに示した図の構成では eth0 と表示してくれる。ここで注意しなくてはいけないのは実際に ONU(光電話機能内蔵ルータの場合はPPPoEブリッジを使用するを選択する) に接続しておかなければ自動検出できないことだ。

  • ネットワークインターフェースの設定と確認

Networkmanager を停止しているので マニュアル記述するのは当たり前のことだ。編集はこんな感じだ。 ポイントは eth1 の設定をルーターのグローバルIPに設定し、 eth2 をLAN側の ルーター(GW) IP に設定する。 eth0 は dsl-provider となっているがFTTH(ひかり)でもADSLでも同じ表現でOKだ。

$ sudo vi /etc/network/interfaces

この中で以下の部分は pppoeconf が自動的に追加してくれる。

auto dsl-provider
iface dsl-provider inet ppp
pre-up /bin/ip link set eth0 up # line maintained by pppoeconf
provider dsl-provider

auto eth0
iface eth0 inet manual

 

  • MASQUERADE (nat テーブル)の設定

よくシステムを知らない輩は、 iptables コマンドを iptables -t nat -A POSTROUTING -s 192.168.2.0/255.255.255.0 -j MASQUERADE などを 実行して iptables-save している例が多々、見受けられるがこれは 全く良くない!

MASQUERADE (nat テーブル)の設定

よくシステムを知らない輩は、 iptables コマンドを iptables -t nat -A POSTROUTING -s 192.168.2.0/255.255.255.0 -j MASQUERADE などを 実行して iptables-save している例が多々、見受けられるがこれは 全く良くない!

これは ufw コマンドと連係が取れないからだ。はっきり言って ubuntu で使って Firewall 設定たる ufw の使用方法を知らない、おバカな方法だ。

$ sudo vi /etc/ufw/before.rules

vi_before-rules

クリックして拡大

ここで LANのIP 192.168.1.0/24 は各自の環境に応じて設定する。 出力指定 例えば -o ppp0 などは特に書く必要はない。

*nat
:POSTROUTING ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
COMMIT
# Don't delete these required lines, otherwise there will be errors
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
  • ufwの設定

ufwのコマンド解説は 他のサイト(リンクは一例)に任せることにして要点を記述しておく。

  1. apache のポートを開く際に ‘ufw allow 80/tcp’ とするのではなく /etc/ufw/applications.d/apache2-utils.ufw.profile に記述されている[Apache]の部分を使い ‘ufw allow Apache’ を実行する。[Apache Full]などのようにスペースが含まれたものは ‘ ufw allow “Apache Full” ‘ のようにダブルコーテーションでくくると良い。  このコマンド一つで portsが80と443のtcpが許可される。
  2. ssh のポートを1022に変更したい場合を例にした手順は
    1. /etc/ufw/applications.d/openssh-server を編集して ports=22/tcp を ports=1022/tcp に変更する。
    2. ‘ufw allow OpenSSH’ を実行する。他のサービスのポート番号を変更する場合も同様の手順でOKだ。
  3. ipv6を使用しない場合は /etc/default/ufw 内の IPV6=yes を no に変更する。
  4. 初めて ufw enable を 行ったあとは再起動する。

 

  • UFWのdefaukt foward policy 設定

よくこの設定を忘れてしまうのだ。この記事を書いいていても忘れがちなのがこれだ。

$ sudo vi /etc/default/ufw
  1. 19-20行目の部分を
  2. DEFAULT_FORWARD_POLICY=”DROP” から
  3. DEFAULT_FORWARD_POLICY=”ACCEPT” に変更する。
  4.  再起動を行ってみてすべてが動作しているか確認する。