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

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

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

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

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

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

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

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

Nexus7 2013をMarshmallow(Android 6.0)化

OTAでない方法で。 だいたい ここに書いてある方法 なんだけど、adbなどが一式使えている状態で。 まずは自分の機種のものをダウンロードする。僕のは、 Android 6.0 Marshmallow for Nexus 7 2013 Wi-Fi 。tgzを展開し、zipも解いておく。 まずはboot loaderへ。 bootloader自体のアップデート。一式、updat …
»続きを読む

OS X 10.11 El Capitanで、phpのモジュールインストール

Yosemiteからのアップデートは割と簡単です。なぜならYosemite時に、すでにapache 2.4になり、php 5.5になっているから(笑 アップデート前に、まずはphp.iniとhttpd.confをバックアップしておきましょう きになるなら、hostsとかapache以下全てをバックアップしておいてもいいかも。 後はEl Capitanにアップデートする。 アッ …
»続きを読む

EasyAcc Powerbank PB4000CB

スマフォTips/モバイルバッテリー/モバイルバッテリー製品レビュー/EasyAcc Powerbank PB4000CB

薄型のモバイルバッテリーEasyAcc Powerbank PB4000CBです。 今や、モバイルバッテリーは大型のものが好まれるのか、隙間無く商品があります。20,000mAh越えで、「でけえ!」とか言ってますけど、大きいのを探せば、100Wh(27,000mAh)、200Wh当たり前、探せば500Wh(135,000mAh)とか、もっともっとあるのです。用途がどんどん異なっていくので …
»続きを読む

EC Technology Sports Headsets S10-JWH07B

デバイスTips/Bluetooth/EC Technology Sports Headsets S10-JWH07B

Bluetoothのスポーツヘッドセット、 S10-JWH07B について。 今までブログに記載することはなかったのですが、実は割とBluetoothと言うか無線型のヘッドフォンを沢山持っています。赤外線や独自物、Bluetoothなどいくつもストックを持っていたりします。普通の人からするとマニアです。でも、マニアからみるとそうでもないレベルです。 ただ「ヘッドフォンの音質」というの …
»続きを読む

静岡県内をVPNでつなぐ(割と特殊な例)

静岡というのはある意味特殊な土地で、ほとんどのインターネットプロバイダのPOIは静岡でつながれておらず、NTT西圏内のどこかで繋がっているので、大抵大阪折り返しになる。仮に静岡県内にPOIがあっても、だいたい静岡でルーティングしてないので、やっぱり東京折り返しになってたりする。例え 同じプロバイダを使っていたとしても 。 だから静岡←→静岡のVPNは、静岡←→東京や、静岡←→大阪よりも遅 …
»続きを読む

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