HOME / コンピュータTips / FreeBSD / FreeBSDでPPPoEを設定する(ipfwとnatdつき)

Date: 2001/07/14 |  このエントリーをはてなブックマークに追加  |  Tags: FreeBSD, PPPoE, ipfw, natd, BA512, バーチャルコンピュータ, virtualcomputer, ダイナミックDNS, ddns, bind, nsupdate

もはやいろんな人が書いているので今更書く必要が無いが、自分用のメモも含めて。

ADSLになったときに予定していたInfosphereのBizADSL8が神奈川県でオープンしなかったので、wakwak.comの固定IPアドレスサービス(1IPのみ)を繋ぎとして申し込んでいた。そのときのメンテナンスでルータNTT-MEのBA512を付け、サーバの外側の足に丸無げ(バーチャルコンピュータ)を設定していたのだが、このバーチャルコンピュータの設定がなにをしているのかイマイチ不明という問題が起きていた。そもそもBA512のマニュアルには大したことが書いてなく、まるで「こんなに簡単よ」と言わんがために多くのものを語らない設定になっているのだ。

フレッツISDNでのときのように、最終的にはIPアドレスを8つもつ(Biz8)ので、ルータはunnumbererd対応でなくてはならない。実はこれに対応しているルータは少なく、1万円台では私が買うときにはほぼBA512しか選択肢がなかった。そういうことでルータはこれにせざるを得なかったのだ。ちなみに、BA512の設定優先順位は、

  1. メンテナンスページのMACアドレス指定
  2. ポートフォワーディング
  3. 丸投げ

の順であることは忘れないようにしておこう。セキュリティのためにルータは内側のマシンのMACアドレスからしか設定ページを表示不可能にしておく。この設定をしてルータの外側の足(つまり丸無げされて直結されたサーバの外側の足につながる)を叩く。当然、インターネットからは80番が叩かれたら内側のサーバのapacheのページが見える。ところが、メンテナンスページのMACアドレスの指定が一番上にあるということは、LANの中からそのマシン経由で見ると、絶対に設定画面にしか行けない。これを防ぐためには中からの名前解決を偽るとか、そういう姑息なことをしなくてはならないのだが、普通、ルータの外側の足を叩くか、ルータの中側の足を叩くかでそれを区別しないか?

まあよいことにしよう。

PPPoEの設定をしてルータに一時的に眠ってもらう必要があったのは、そういう理由だけではなく、ダイナミックDNSがこのネットワーク構造では動かないらしいこともあった。nsupdateのログを見ると、更新をしようとしたマシンrevfromに対してコネクションを貼ろうとして届かないというようなエラーがでる。確かにdnsはルータの外の足のIPアドレスということになっているから、一度ルータの外の足を叩いて帰ってくる。バーチャルコンピュータというルータの機能が何をやっているのかわからないので、ここでなにかが起きていてもイマイチ謎なのだ。dnsの動くマシンにとっての外側の足がグローバルIPではなく、namedに登録されているものとも違うというトリックとも関係があるような気がするし。

それも今月末までだと思ってたので良いかなと思っていたのだが、Infosphereが8月上旬まで工事が伸びたというからあと1ヶ月ということになってしまった。ということでPPPoEに入れ換えて、ネット構成を返る必要が出たというわけだ。(ああ、長い前振り)

PPPoEはそれほど難しくなく、ほとんどハンドブックの通りで動く。面倒なのは外のIPが変ったので、ipfwやnatd、squid、namedの書き換えだったりする。

まず最初にやらなくてはならないのはコネクションの切断だ。いいかげんに切断するとペナルティなのか、数分は復旧しないのでルータから素直に切断する。そして物理的な配線を変更。うっかりADSLモデムとクロスでつないでハマる。ちゃんとストレートでつなごう。

そしてカーネルをリコンフィグする。こんな感じなものを追加しよう。

--------------カーネル設定ファイルの一部抜粋。
options         IPFIREWALL              #firewall
options         IPDIVERT                #divert sockets
options         NETGRAPH
options         NETGRAPH_ETHER
options         NETGRAPH_PPPOE
options         NETGRAPH_SOCKET
--------------カーネル設定ファイルの一部抜粋。

ここでのキモは、NETGRAPH_ETHER以下がないとモジュール達がうまくいかんと怒られることだ。

module_register: module netgraph already exists!
linker_file_sysinit "netgraph.ko" failed to register! 17

バージョン固有の問題なのかもしれないしmake cleanをきっちりやらないとならなかったのかもしれないが、上記のように設定して解決した。ハンドブックにはNETGRAPH_ETHERが記述されて無いので注意。IPFIREWALLとIPDIVERTはipfwとnatd用。両者を使わないならばこのページを見るよりも他の人のページを見たほうが楽だと思う。

ppp.confの設定は次のとおり。

--------------/etc/ppp/ppp.conf
default:
 set device PPPoE:vr0
 set mru 1454
 set mtu 1454
 set log Phase Connect TUN command
 add default HISADDR
 accept CHAP

demand:
 set authname USERNAME@provider.ne.jp
 set authkey PASSWORD
--------------/etc/ppp/ppp.conf

vr0は外側の足。mruとmtuは1454にするほうがフレッツADSLでは効率がよいそうだ。ドリームキャストのPSOが動かなそうだが持って無いので良い事にしよう。ほかにキモはない。

案外簡単なのだが、rc.confも弄る。

--------------/etc/rc.confの抜粋。
hostname="necromancer.justplayer.com"
network_interface="lo0 vr0 fxp0"
ifconfig_lo0="inet 127.0.0.1"
ifconfig_vr0="up"
ifconfig_fxp0="inet 192.168.1.254 netmask 255.255.255.0"

ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="demand"
ppp_nat="NO"
firewall_enable="YES"
firewall_quiet="NO"
firewall_type="simple"
natd_enable="YES"
natd_interface="tun0"
gateway_enable="YES"
--------------/etc/rc.confの抜粋。

ここでキモが少し。バグかもしれないが、外側の足のvr0をupでむりやり起こしておかずにpppに任せると、pase not presentでカーネルが落ちる。そういうもんなのかも知れないが、こんなもんで落ちてよいものなのかは疑問が残る。まぁ偉い人がそのうち判断するに違いない。upで起こしておかなくても落ちないNICもあるようなのだが、落ちるNICの人は試してみるとよいかもしれない。

natはnatdにやらせるので、ppp_natはNO。また、firewallがsimpleなのだがfirewallは別のスクリプトを持っていてrc.localの時に閉じている。

natdがきどうするときに、ppp -ddial demandがダイアルをコネクトしないとどうやらnatdが立ち上がらない気がする。仕方がないのでrc.localで現在は上げているが、そのうち気が向いたらもう少しメンテする予定。あと、gateway_enable="YES"でなくてはうまくいかない。そのあたりはnatdのマニュアルに記載されている。以上。


コンピュータTips/FreeBSD

Recent Updates

openjdk(SPARC)

SPARC用のJAVA。 最近は新しいバージョンがSPARCでリリースされず、苦労している人も多いのですが、SPARC Solarisの界隈人達がビルドして代わりに使われているものです。 Solaris 11 SPARC jdk builds
»続きを読む

Solaris11のCPU(Critical Patch Unit)の当て方

コンピュータTips/Solaris/Solaris11のCPU(Critical Patch Unit)の当て方

Solaris 11.4には4つのリビジョンがあります。 2024年4月現在、Solaris自体の開発はメンテナンスフェーズになったわけでもなく、SRU毎に、最新機能がモリモリ入っていきます。 GA(Release 版) 一応、無償のOTNライセンスの利用も可能 いわゆる、リリース時点のバージョンのことですが、現在は 利用しません 。 以前は、1〜2年に1度の頻度でリリ …
»続きを読む

Emacs.appで書類(Documents)がアクセス出来ないとき

コンピュータTips/MacOSX/Emacs.appで書類(Documents)がアクセス出来ないとき

Catalina以降の権限問題なので、システム設定のセキュリティとポリシーの中にあるプライバシー内のFull Disk Accessに、Emacs.appと/usr/bin/rubyを入れればすむ。 /usrフォルダを、プライバシーの+から入れるのは、ちょっと面倒なので、あらかじめFinderのお気に入りの中に入れておくと良いでしょう。   rubyが入るのは、Emac …
»続きを読む

SONY WH-1000XM3

自分用メモです。 ノイズキャンセラーの性能が良い。 WH-1000Xのころは、ノイズキャンセラーを有効すると、音は聞こえないのに妙な音圧があったが、それがかなり軽減。個人的には気にならなくなった。 また、WH-1000Xのころは、ノイズキャンセラーを無効にしても、なんか作られたような音が出ていたような気がしたが、割と普通に聞こえる。 USB-Cになったのも良い。飛行機でも使う …
»続きを読む

Catalina(10.15)

Catalina Beta を入れ始めたので、自分用のまとめ。 2019/10/8、Catalinaが振ってきたので製品版用に記載を変えました。 32bitアプリを確認すること。 Activity Monitorで32bitアプリがわかるので、そういうアプリがあるなら代替品を見つけておくこと。 /etc以下のいくつかのファイルをバックアップしておくこと。 /etc …
»続きを読む

ディスクの不良を確認する(iostat -EnのError等)

ディスク関係のスタックをざっくり書くと次の様になっています 例、SAS Expanderを使う場合、 例、AHCIなどを使う場合、 これらのエラーは、次の様なコマンドで知ることができます。 出力結果例 このなかで、 たとえば、SATAディスクを利用している際に負荷が上がってしまい、ディスクの応答が間に合わないシチュエーションでは、Transport Errorが一気に …
»続きを読む

2017年、新年明けまして、おめでとうございます。

日記/2017年、新年明けまして、おめでとうございます。

新年明けまして、おめでとうございます。今年もよろしくお願いします。 昨年中は、皆様にお世話になりました。 昨年は、コツコツと3年程前から行ってきた改革がある程度完成された年で、この先5年、10年を見据えて、次のフェーズへと進む為の土台が完成した年でもありました。 それにキャッチアップする形で、個々の従業員一同が、役割を自覚し、明確に動けた年であったかと考えています。 …
»続きを読む

RSA鍵認証のみにし、Password認証を無効化する

意外に覚えきれなくて、いつも忘れるので、メモついでに残しておきます。 古いOpenSSHや、SunSSHの場合は、これも無効にします。 ユーザ目線でのザックリとした説明を。OpenSSHではなく別のSSH実装も含めて考えているので、OpenSSHのソースをじっくり読んだわけではないため、間違ってたらすみません。 まず、Password認証を無効にする場合、 PasswordAut …
»続きを読む

最新  |  << 前ページ  |  次ページ >>  |  最初