2008年9月27日土曜日

フレッツ光で、FreeBSDをルータにしたときのメモ (自分用)

今月、ADSLから





んですが、ルータがレンタルされるのかと思ってたら、ただのVDSLモデムだけでした。そこで、急遽、FreeBSDをルータにして、複数のパソコンでインターネットにアクセスできるようにしました。



自分でルータを手作りということで・・・とはいっても、そんなたいしたことじゃないですけど、そこそこの





を味わえ、おもしろかったです。



しかし、ひかり電話を申し込んで、昨日、なにやらルータみたいなものが届いたので、FreeBSDなルータも、不要になりそう。でも、せっかくなので、自分用のメモだけ残しておきます。



■ FreeBSDのドキュメント



FreeBSDハンドブックで、PPPoEについての記述があります。



http://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/pppoe.html



http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/pppoe.html



薄々そんな気はしていたんですが、日本語訳のFreeBSDハンドブックよりも、英語で書かれたFreeBSD Handbookのほうが、内容が新しかったりすることがあります。



■ イーサネットの接続



ルータにするFreeBSDでは、



VDSLモデムとの接続用



自宅内のパソコンがぶらさがっているLANとの接続用



の2つのイーサネットのポートが必要です。



■ /usr/sbin/pppでPPPoE



通信速度があまりでないので、すぐにmpdにしてしまったんですが、/usr/sbin/pppは標準でインストールされているし、比較的簡単にセットアップできました。



/etc/ppp/ppp.conf



default:
set log Phase tun command
set device PPPoE:vr0
set mru 1448
set mtu 1448
set dial
set login
nat enable yes



ocn:
set authname なんとか@かんとか.ocn.ne.jp
set authkey ほにゃらら
add default HISADDR



flets:
set authname guest@flets
set authkey guest
enable dns
add 220.210.194.0      255.255.255.128 HISADDR
add 220.210.199.160    255.255.255.224 HISADDR
add 220.210.196.192    255.255.255.224 HISADDR
add 220.210.196.0      255.255.255.128 HISADDR
add 220.210.196.128    255.255.255.192 HISADDR
add 220.210.199.208    255.255.255.240 HISADDR
add 220.210.198.0      255.255.255.192 HISADDR
add 220.210.199.144    255.255.255.240 HISADDR
set server /var/run/flets "" 0177



補足

set device PPPoE:vr0



VDSLモデムとつながっている側のネットワークインターフェイスがvr0だったので、vr0と書く。


set mru 1448
set mtu 1448



FreeBSDハンドブックには、1492とか書いてあったんですが、それだと、ダメでした。「ウェブサイトによっては、いつまでたっても、ページが表示されない」、という現象が発生しました。


ocn:



ラベル名なのでなんでもよいのですが、うちがOCNなので、そう書いただけ。



set authname なんとか@かんとか.ocn.ne.jp
set authkey ほにゃらら



プロバイダから指定されたものをここに書く。


flets:
set authname guest@flets
set authkey guest



フレッツ網に接続するための設定。authnameとauthkeyは、このままでいい。
addでルーティング設定を列挙しているが、このネットワークアドレスはたまに変化するらしい。ここにルーティング情報が載っている?
http://flets.com/square/routing.html





/etc/rc.conf



ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"
ppp_profile="ocn"



gateway_enable="YES"



VDSLモデム側のネットワークインターフェイス(上の例ではvr0)にはIPアドレスは割り当てる必要がないので、/etc/rc.confでは何も書かなくてよい。



■ named



ふつうのインターネットとフレッツ網の両方を同時に利用できるようにするために、namedを立ち上げた。





/etc/namedb/named.conf にはこんなことを書き加えた。
http://euc.jp/network/pppoe.ja.html に書いてあったもの。



zone "flets" {
     type forward;
     forward only;
     forwarders {
        220.210.194.67; // ns1.flets
        220.210.194.68; // ns2.flets
        };
};
zone "194.210.220.in-addr.arpa" {
     type forward;
     forward only;
     forwarders {
                220.210.194.67;
                220.210.194.68;
                };
};


■ mpd5でPPPoE



通信速度があまりでないので/usr/sbin/pppをやめて、mpd5にした。



portsにある/usr/ports/net/mpd5 をインストール。



ドキュメントは、/usr/local/share/doc/mpd5/ にある。



/usr/local/etc/mpd5/mpd.conf



むずかしかった(笑)。もう忘れかけている。



フレッツ網用の設定。



flets_square:
        create bundle static bFLETS
        set iface idle 0
        set iface enable tcpmssfix
        set iface enable nat
        #set iface route default
        set iface route 220.210.194.0/25
        set iface route 220.210.199.160/27
        set iface route 220.210.196.192/27
        set iface route 220.210.196.0/25
        set iface route 220.210.196.128/26
        set iface route 220.210.199.208/28
        set iface route 220.210.198.0/26
        set iface route 220.210.199.144/28
        set iface disable on-demand
        #set ipcp enable req-pri-dns req-sec-dns
        set ipcp disable vjcomp
        set ipcp ranges 0.0.0.0/0 0.0.0.0/0
        #set ipv6cp enable



        create link static lFLETS pppoe
        set link action bundle bFLETS
        set auth authname guest@flets
        set auth password guest
        set link max-redial 0
        set link mtu 1454
        set link mru 1454
        set link keep-alive 10 60
        set pppoe iface vr0
        set pppoe service ""
        open



プロバイダ用の設定。



ocn:
        create bundle static bOCN
        set iface idle 0
        set iface enable tcpmssfix
        set iface enable nat
        set iface route default
        set iface disable on-demand
        #set ipcp enable req-pri-dns req-sec-dns
        set ipcp disable vjcomp
        set ipcp ranges 0.0.0.0/0 0.0.0.0/0



        create link static lOCN pppoe
        set link action bundle bOCN
        set auth authname なんとか@かんとか.ocn.ne.jp
        set auth password ほにゃらら
        set link max-redial 0
        set link mtu 1454
        set link mru 1454
        set link keep-alive 10 60
        set pppoe iface vr0
        set pppoe service ""
        open



FreeBSDが起動したときに、自動的に接続するように。



default:
#       load dialup
        load ocn
        load flets_square



/usr/local/etc/rc.d/mpd5



FreeBSDをブートしたとき、自動的にmpdが起動するようにしたけど、一部のネットワークデーモンが、どうもうまくネットワークアクセスできなかったので、/usr/local/etc/rc.d/mpd5の末尾に、sleep 15 という1行を付け加えた。



/etc/rc.conf



「ppp_なんとか」をコメントアウトして、
mpd_enable="YES"


■ pfの設定



pfは使ったことがなかったので、実はよく理解できていない。



おっと、以下の設定だと、フレッツ網に通じない・・・使ってなかったんで気がつかなかった。ng1を通すように追加すればOK



あと、うちではvtundによるVPN接続があるんで、ほかの人には参考にならないところが多い。



http、https、ssh、vtundを外から通すようにしてる。sshは、ポート22であげておくと、しらみつぶしでログインしようとアタックされて、ログがふくれるので、22以外のポート番号を使うとよい。



/etc/pf.conf



ext_if="ng0"    # replace with actual external interface name i.e., dc0
int_if="fxp0"   # replace with actual internal interface name i.e., dc1



table <foo> { 10.0.0.0/8, 192.168.0.0/24, 192.168.1.0/24 }



block in log all



pass out quick on $ext_if all



pass in quick on $int_if all
pass out quick on $int_if all



pass in quick on lo0 all
pass out quick on lo0 all



pass in on { tun0, tun1, tun2 } all
pass out on { tun0, tun1, tun2 } all



block out quick on $ext_if proto {tcp udp} from any to any port 135
block out quick on $ext_if proto {tcp udp} from any to any port 137:139
block out quick on $ext_if proto {tcp udp} from any to any port 445
#block in log quick on $ext_if from any to any port smtp
#block in log quick on $ext_if from any to any port 22
pass  in  on $ext_if proto tcp from any to $ext_if port {22221 80 443 5000} keep state



pass  in  on $int_if proto tcp from any to $ext_if port 22 keep state



/etc/rc.conf



pf_enable="YES"                 # Set to YES to enable packet filter (pf)
pflog_enable="YES"              # Set to YES to enable packet filter logging



/etc/ssh/sshd_config



前述のように、22以外のポートでsshを使うようにするために、listenするポート番号を増やしておく。LAN側からは22で接続できてもいいので、変更するんではなく、増やす。



Port 22
Port 22221



みたいにPortの行を複数書けばいいそうだ。



■ その他



ネームサーバとデフォルトルートに、このFreeBSDなルータを指定する。



必要なら、dhcpdを立ち上げる。/usr/ports/net/isc-dhcp3-server/ をインストールした。





0 件のコメント:

コメントを投稿