いますぐ実践! Linuxシステム管理

いますぐ実践! Linux システム管理 / Vol.269 / 読者数:2828名

またしてもまたしてもまたしても、大変おひさしぶりです。うすだです。

おそろしいことに、2015年は2回しか発行していない、という事実を目の当たりにして、 季刊には勝てないとしても、せめてもう1回くらいは発行せねばと思い、書いております。

さて、もうすぐ今年も終わりますが、どのような年でしたでしょうか。

今年は、人工知能、IoT、マイナンバーあたりが盛況だったようですが、 いずれにも乗っかることができなかったという、 おのれがオールドタイプであることを猛烈に感じた1年でした。

とはいえ、すべてに乗っかるなどという器用なことはできません。

毎年、あれもこれもやらねばと思い、どれもやらなくて落ち込む、 という負のスパイラルを繰り返してきました。
ですので、2016年は、1つに絞り、集中してがんばろうと思っています。

ええ、問題は、どれに絞ればいいか、ビシっと決断できない、 ということでしょうか。自分の今後の方向性を決めることにもつながるため、 余計に決断を躊躇してしまうようです…。

優柔不断なまま、今年最後の今回も、はりきってまいりますよ。

今回のお題 - UFW と NAPT を両立させる (レベル:中級)

前回、UFW(Uncomplicated FireWall) のさわりをご紹介しました。

Vol.268 - UFW を使ってみる
http://www.usupi.org/sysad/268.html

UFW を使えば、あるポートへのアクセスの許可や拒否が簡単に行えます。

ですが、簡単に行えるのは、Ubuntuをデスクトップとして使っている場合で、 自分自身へのアクセスを設定するだけだからです。
ルータやファイアウォールとして使っているマシンに UFW を導入しようとすると、 やや一筋縄ではいきません。

実は、UFWを有効にして、「NAPT(Network Address Port Translation)」 (いわゆる「IPマスカレード」のことです…念のため)の設定も行いたい、 という事案が2回ほど立て続けに発生しました。

これはニーズがあるかもしれないと思いましたので、今回のネタにさせていただきます。

…誠に消化試合っぽいですが、お付き合いいただけますと幸いです。

まずは前提です

これから設定しようとする Ubuntu マシンは、以下であると仮定します。

  • ネットワークインタフェースが2つある
  • 「eth0」はインターネットに直接つながっている
  • 「eth1」はプライベートなネットワークにつながっている
  • eth1 のプライベートネットワークは、「192.168.1.0/24」
  • eth1 から来たパケットを NAPT で書き換えて eth0 に出す

特に説明は不要と思いますが、ようするに、 外の(eth0 の)ネットワークから中のネットワーク(192.168.1.0/24) が見えないようにしつつ、中からアクセスはできるよう、 NAPT を設定しているということです。

そして、さらに UFW がそのまま使えるように、ということですね。

淡々と設定手順を説明します

まず、IPフォワーディングを有効にするため、 「/etc/ufw/sysctl.conf」の以下の行の先頭の「#」を削除します。(以下は削除前の状態)

#net/ipv4/ip_forward=1

「/etc/sysctl.conf」でも構いませんが、その場合、起動時にのみ設定が行われます。

次に、FORWARD のデフォルトのポリシーを設定します。
eth0〜eth1 の間を、NAPT の対象のパケットが行き来できないといけないため、 「/etc/default/ufw」の「DEFAULT_FORWARD_POLICY」を、 「DROP」から「ACCEPT」に変更します。(以下は変更後の状態)

DEFAULT_FORWARD_POLICY="ACCEPT"

そして、NAPT の設定を追加します。
フィルタとは関係ありませんので、 「/etc/ufw/before.rules」もしくは「/etc/ufw/after.rules」のどちらかの末尾に、 以下を追加します。

# for NAPT
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
COMMIT

2行目で、「nat」テーブルを指定しています。
3行目で、「POSTROUTING」のポリシーを「ACCEPT」に設定します。
4行目で、NAPTの設定を追加します。 (ソースアドレスが192.168.1.0/24で eth0 へ出て行くパケットを対象とします。)
5行目で、これらの設定を反映します。

上記ができたら、UFWを再起動します。

  $ sudo restart ufw

IPフォワーディングが有効であること、FORWARD が ACCEPT であること、 NAPT の設定が追加されていること、などを確認します。

  $ sysctl net.ipv4.ip_forward
  net.ipv4.ip_forward = 1

  $ sudo iptables -nL FORWARD
  Chain FORWARD (policy ACCEPT)
  ...

  $ sudo iptables -t nat -nL POSTROUTING
  Chain POSTROUTING (policy ACCEPT)
  target     prot opt source               destination         
  MASQUERADE  all  --  192.168.1.0/24       0.0.0.0/0           

あとは、 プライベートなネットワークのマシンから外部へアクセスできることが確認できたら、 すべて OK です。

おわりに

以上、UFW を有効にしたまま、NAPT を設定する方法をご紹介しました。

ちょっと凝った? ことをしようと思うと、 UFW をブラックボックスで使い続けることは難しく、 iptables の知識が必要になってくるようです。

技術者や管理者の方は、いずれ必要になることもあると思います。 これをよい機会と思って、理解してみてくださいませ。

宿題の答え

前回の宿題は、

  UFWにアプリケーションを追加してみましょう。

でした。

ここでは、「ROS(Robot OS)」で使われている「11311/tcp」を、 「ROS」という名前で登録し、使えるようにしてみたいと思います。

まず、「/etc/ufw/applications.d/ros」というファイルを作成します。
中身は、以下の通りです。ports 以外は適当で構いません。

[ROS]
title=Robot OS
description=The Robot Operating System (ROS) is a flexible framework for writing robot software. It is a collection of tools, libraries, and conventions that aim to simplify the task of creating complex and robust robot behavior across a wide variety of robotic platforms.
ports=11311/tcp

…あ、以上です。このファイルさえあれば、利用できてしまいます。
たとえば、ROS を許可するには、以下のように実行します。

  $ sudo ufw allow ros
  ルールを追加しました
  ルールを追加しました (v6)

status を見ると、ちゃんと追加されています。

  $ sudo ufw status
  状態: アクティブ

  To                         Action      From
  --                         ------      ----
  OpenSSH                    ALLOW       Anywhere
  Apache Full                ALLOW       Anywhere
  ...
  ROS                        ALLOW       Anywhere
  OpenSSH (v6)               ALLOW       Anywhere (v6)
  Apache Full (v6)           ALLOW       Anywhere (v6)
  ...
  ROS (v6)                   ALLOW       Anywhere (v6)

ちなみに、「ufw app info」で title や description を確認できます。

  $ sudo ufw app info ROS
  プロファイル: ROS
  タイトル: Robot OS
  Description: The Robot Operating System (ROS) is a flexible framework
  for writing robot software. It is a collection of tools, libraries,
  and conventions that aim to simplify the task of creating complex
  and robust robot behavior across a wide variety of robotic platforms.

  Port:
    11311/tcp

今回の宿題

今回の宿題は、

  UFW を無効にしたとき、NAPT の設定も無効にしましょう。

です。

実は、UFW の再起動の度に、NAPT の設定が増えます。
その度に手動で消せばいいのですが、それだと醜いので、 無効にしたとき NAPT の設定を消すようにしてみましょう。

目処をつけず、えいやーで宿題にしています。できますように…。

あとがき

依然として、Ubuntu 14.04 を使い続けています。

特に設定をごろっと変えることなく、 ときどきパッケージを追加する程度の使い方をしているだけなのですが、最近、 Chrome の動作が重たく感じられるようになってきました。

原因はわかりません。履歴などをごそっと消してみたりもしているのですが、 若干速くなったように感じられた後は、 またもとのもっさりした動作に戻っているようです。

他の似たような環境で、Chrome の同期をしたらどうなるか試してみたいのですが、 その環境でももっさりしてしまうと困るため、 同期する勇気がいまのところ湧いてきません。

…という煮え切らない状態のまま、2016年を迎えようと思います。
わたしらしいと言えば、まったくその通りです。
そして、次回発行日もはっきりさせないまま、もやっと終わりにしたいと思います。 すみません、ごめんなさい。

2016年の豊富は、曖昧にせずはっきりさせる、にしようかな…。
…あああ、ぜんぜん、はっきりしていませんね…。

 

今回も、ここまで読んでいただき、誠にありがとうございました。
来年は月2回発行のペースに戻していきます。きっと。たぶん…。

 

「いますぐ実践! Linux システム管理」はこちらです。
メルマガの解除、バックナンバーなども、以下からどうぞ。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

その他、作者に関するページは、概ね以下にございます。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://twitter.com/kuriking/ (twitter)
http://facebook.com/kuriking3 (facebook)
https://jp.pinterest.com/kuriking/ (pinterest)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本