トップページunix
1001コメント377KB

FreeBSDでBBルータを作ろう互助会 3Gbps

■ このスレッドは過去ログ倉庫に格納されています
0001名も無きfxp25NGNG
高い金出して最近のへぼなブロードバンドルータ買うより全然いいと思うぞ。
「PPPoEの方法」
「NATにする方法」
「NICを2枚使う方法」
「ファイヤーウォール設定・セキュリティ対策」
その他なんでもいいからここで質問&アドバイスして輪を広げてこう。
悪質ブロードバンドルーター製品逝ってよし!

最近のブロードバンドルータは安くて速いぞ。遅くてヘボいルーター作るなよ。

前スレ
 FreeBSDでBBルータを作ろう互助会
 http://pc.2ch.net/test/read.cgi/unix/1038060563/
FreeBSDでBBルータを作ろう互助会 2Mbps
http://pc5.2ch.net/test/read.cgi/unix/1060660932/

関連サイト
pf:http://www.openbsd.org/faq/pf/ja/index.html
0164名無しさん@お腹いっぱい。2005/04/04(月) 16:58:40
>163
素材は他にもあるんだから自分でしましょう
0165名無しさん@お腹いっぱい。2005/04/04(月) 17:10:38
>>163
できるっしょ。
0166名無しさん@お腹いっぱい。2005/04/09(土) 21:31:35
FreeBSDに特化した質問でもないんですけど。

FreeBSD鯖にNICが3枚刺さってて、うち1枚は外と繋がってます。
で、あとの2枚が中(イントラ側)となってるんですが、2枚のIFに同じネットワークのIPを割り当てては
ダメなんでしょうか?ググって調べても、必ずといって良いほど違うネットワークになるようにIP
が振られているので。

右側---192.168.0.0/24----(192.168.0.253)[鯖](192.168.0.254)----192.168.0.0/24---左側

としてはダメ?
0167名無しさん@お腹いっぱい。2005/04/09(土) 21:53:59
言ってることがよくわか欄のだが。
ifconfig_fxp0="inet 192.168.0.1 netmask 255.255.255.0"
ifconfig_fxp1="inet 192.168.0.2 netmask 255.255.255.0"
ifconfig_fxp2="inet 192.168.0.3 netmask 255.255.255.0"
は当然できる。
ifconfig_fxp0="inet 192.168.0.1 netmask 255.255.255.0"
ifconfig_fxp1="inet 192.168.0.1 netmask 255.255.255.0"
ifconfig_fxp2="inet 192.168.0.1 netmask 255.255.255.0"
はできない。
0168名無しさん@お腹いっぱい。2005/04/09(土) 22:15:54
>>166
そーゆー構成にしたい場合は鯖をブリッジにする
01691662005/04/09(土) 22:26:33
>>167
その場合

右側---192.168.0.0/24----(192.168.0.1)[FreeBSD鯖](192.168.0.2)----192.168.0.0/24---左側

右側にぶら下がっているマシンから左側にぶら下がっているマシンへパケットを飛ばしたい場合、
鯖に何も設定しなくても良きに計らってくれるんでしょうか?(右側も左側も同一ネットワークだから
設定不要?)


>>168
えと、ブリッジ、とはちょっと目的が違うので。
単に

外---[鯖]---[HUB]====[PC数台]

で済む所を、HUBのポートが足りなかったのでHUBを買いなおす代わりに鯖にNICをもう1枚追
加しただけなんで・・・なのでネットワークを分けるとかそういう意図は全然ないんです。
0170名無しさん@お腹いっぱい。2005/04/09(土) 23:44:53
>>169
> 鯖に何も設定しなくても良きに計らってくれるんでしょうか?

良きに計らってはくれませんので、ブリッジの設定が必要です。
そうでないと左右のネットワーク間でARPパケットが到達できません。

つーか、試せるならとりあえずいろいろ試してみればいいかと。
これ以上はスレ違いな気がしないでもないが。
01711662005/04/10(日) 00:12:19
>>170
Thanks
FreeBSDに特化した話じゃなくなってきたので適切スレに移動します。アドヴァイスサンクス!
0172名無しさん@お腹いっぱい。2005/04/10(日) 11:48:29
LAN側が4portのスヰッチになっているブロードバンドルータの様なことをさせたいってことなんで、すれ違いでもないかも。

うちはWAN側にem0、LAN側にre0,re1,re2があって、re0,re1,re2はブリッジ設定だ。

--- sysctl.conf
net.link.ether.bridge.config=re0,re1,re2
net.link.ether.bridge.ipf=1
net.link.ether.bridge.enable=1

--- start_if.re0
ifconfig re0 up

--- start_if.re1
ifconfig re1 inet 192.168.12.1 netmask 0xffffff00

--- start_if.re2
ifconfig re2 up

ってな感じ。

さらにここにath0を足して無線アクポにしようとした。一応機能するんだが、不安定でイライラしたので外してある。
01731662005/04/11(月) 23:01:37
>>172
な、なるほどぉぉぉッッッッ!!
そういう設定にすればいいのかぁぁぁァッ!!!

re0, re1, re2 は同一ネットワークだからIPもre1のみに振れば良いと言うわけですね。
早速試して見ます。アドバイスありがとうございます。
0174名無しさん@お腹いっぱい。2005/04/12(火) 17:37:24
ipfwのmanを見るとマッチ条件をorで繋ぐ記述はあるのですがandで繋ぐ記述がありません.
マッチ条件に

port 5000-9999 のうち、port 8888を除いた全て

という指定は出来ないのでしょうか?

ipfw add 100 deny tcp from any to me {5000-9999 and not 8888}

だとエラーになってしまうんですが・・・

# {5000-8887 or 8889-9999} という記述は無しで
0175名無しさん@お腹いっぱい。2005/04/12(火) 23:10:54
dhcpでwan側グローバルアドレスを動的に取得しているので
ifconfigの出力かなんかからシェルで
・アドレス
・ネットワークアドレスを
・ネットマスク
を取得してipfwの設定に渡したいんですけどね。

ifconfigの出力にはアドレス、ネットマスクはあるけど
ネットワークアドレスはないですね。
ブロードキャストアドレスはあるけど・・・

ネットマスクの値をゲットするのにどうやってます?
0176名無しさん@お腹いっぱい。2005/04/12(火) 23:19:39
>>175
pf使ってるから、そのあたりの面倒なことで苦労しなくて済んでる。
0177名無しさん@お腹いっぱい。2005/04/12(火) 23:26:14
>>174
ファーストマッチなんだから
port 8888の処理
port 5000-9999の処理
とかじゃだめ?
0178名無しさん@お腹いっぱい。2005/04/13(水) 08:04:12
>>175
ifconfigの出力をPerlなどで切り出す。
アドレスとネットマスクのandを計算すればネットワークアドレスも得られるし
そんなに難しいか?
0179名無しさん@お腹いっぱい。2005/04/13(水) 23:07:01
>178

perlを使えばそりゃ簡単。
シェルだけでできないかっつー質問
0180名無しさん@お腹いっぱい。2005/04/13(水) 23:42:50
>>179
アホ?
そんぐらいシェルでも余裕だけど。アホ?
01811782005/04/14(木) 00:48:28
>>179
そんなことどこにも書いてないぞ、という突っ込みはおいておいて。
Perlを使えない理由は?
まあ、awkとsedを駆使すればPerlは要らないけど、Perlの方が書きやすい。
0182名無しさん@お腹いっぱい。2005/04/15(金) 09:11:16
WAN--(FreeBSD+pf)-- client
          └ ftp server
firefoxのbookmarks synchronizerがftpのPASVと非PASVを選択できないせいで
clientからftp serverに接続しようとするとFreeBSDのWAN側のアドレスを返されてしまうので
当然のごとく接続できません
pfでうまくリダイレクトできないものかと考えてみたもののいい方法が思いつかない。
何かいい方法ないでしょうか
0183名無しさん@お腹いっぱい。2005/04/15(金) 14:06:22
ftp serverはどこにあるの? WAN側?
よくわからないが、FreeBSD boxにftp proxyを置くのはどうか。
/usr/ports/ftp/ftpproxyとか。
0184名無しさん@お腹いっぱい。2005/04/15(金) 21:10:07
>>183
ftpserverはclientと同じLAN内です。FreeBSDにぶらさがってます
ftp-proxy(8)試してみました。inetd.confとpf.confにそれぞれ
ftp stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy
rdr on fxp0 inet proto tcp from 192.168.0.0/16 to (ng0) port = ftp -> 127.0.0.1
としましたが、rdrはされているものの(pf -ssで確認
$ ftp XXXXXXXXX
Connected to XXXXXXXXX
421 Service not available, remote server has closed connection
正直ftp-proxyのことよくわかってません。
あとはftpserver側でPASVに使うポートを制限しておいてから最初からng0に接続しにいって
connection portもdata portも両方FreeBSD boxのinetdでncしてみたり。
これだとログインはできるもののPASV接続に使うポートを全てinetd.confに書かないといけない…
0185名無しさん@お腹いっぱい。2005/04/16(土) 02:20:40
>>182
以前、Daemon Newsでそういうネタを見たことがあるけれど、
次のような構造にしてWANからFTPができるようにしてたね。
WAN-NAT1-(LAN)-NAT2-ftpserver
ftpserverにはWAN側のIPアドレスがつけてあって、
外からの接続はNAT1でprivate IPアドレスへの変換、NAT2でglobal IPアドレスへの
変換を行う。

ここで、ftpserverにはglobalなIPアドレスがついているのでPASVの時には
それについているglobalなIPアドレスを返し、WAN側に居るクライアントと通信ができる。
0186名無しさん@お腹いっぱい。2005/04/20(水) 22:40:38
PPPoEを高速化したくてmpdでやってみようとしたのですが、
mpd -b を実行するとコンソールにこんなメッセージが出て
ppp が動いてくれませぬ・・・

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

カーネルには
options NETGRAPH
options NETGRAPH_PPPOE
options NETGRAPH_SOCKET
を加えて再構築してます
0187名無しさん@お腹いっぱい。2005/04/20(水) 22:48:13
外せ
0188名無しさん@お腹いっぱい。2005/04/20(水) 23:34:09
カーネルコンフィグに NETGRAPH を追加する必要はないってこと?
0189名無しさん@お腹いっぱい。2005/04/21(木) 00:07:29
っていうかにくちゃんねるで過去ログ読んで。
懐かしい話題だから。
0190名無しさん@お腹いっぱい。2005/04/21(木) 00:52:32
525 名前:名無しさん@お腹いっぱい。[] 投稿日:03/06/01(日) 05:04
ppp+ipfw+natd から ppp+ipf+ipnat にして、さらに mpd なるものを知って
mpd+ipf+ipnat にしてみたところ

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

こんなエラーが出て接続出来ません。
ちなみに FreeBSD4.8-stable でカーネルコンフィグファイルに

options NETGRAPH
options NETGRAPH_PPPOE
options NETGRAPH_SOCKET
options NETGRAPH_ETHER

を加えて再構築しました。
どうすれば解決出来ますでしょうか?
533 名前:名無しさん@お腹いっぱい。[sage] 投稿日:03/06/01(日) 10:34
>>525>>528

そのエラーメッセージは、カーネルにNETGRAPHが組み込まれているのに
さらに動的モジュール版のNETGRAPHをロードしようとして、同じ物が既にあるから
ロードに失敗したということを示している。
従ってこれはウザい警告なだけであって、その後の動作には影響ない。

pppを使う場合もNETGRAPHを使うけど、この場合はコンフィグにそれらを追加しても
しなくてもよい。ただし、それら4つのうち例えばNETGRAPHだけなどのように
中途半端な追加をするとやはり同じメッセージが出る。たぶん足りない他の3つを
ロードする際にNETGRAPHもロードしようとしてしまうからだと思う。
まあいずれにしてもその後の動作に影響はないけどね。
0191名無しさん@お腹いっぱい。2005/04/21(木) 22:44:23
影響がないならばなぜmpdが動かないのかな・・・
0192名無しさん@お腹いっぱい。2005/04/21(木) 23:43:10
原因が別だから
0193名無しさん@お腹いっぱい。2005/04/22(金) 10:41:19
options NETGRAPH
options NETGRAPH_BPF
options NETGRAPH_ETHER
options NETGRAPH_IFACE
options NETGRAPH_PPP
options NETGRAPH_PPPOE
options NETGRAPH_SOCKET
options NETGRAPH_VJC
してみれ。
0194名無しさん@お腹いっぱい。2005/04/22(金) 10:50:24
更にPPPoEがCPU食い過ぎの場合
options MSGBUF_SIZE=65536
を追加するとレスポンスが上がりました
0195名無しさん@お腹いっぱい。2005/04/22(金) 14:18:38
mpd+pf+altq使おうとしてpfctl: ng0: driver does not support altqってエラーに遭遇した後
man altqしてみたらサポートしてるDeviceにngが無い・・・
もしかしなくてもmpdでaltqって使えない・・・?
0196名無しさん@お腹いっぱい。2005/04/22(金) 14:44:09
mpdとpfの起動順番のってみなさんどうしてます?
/etc/rc.confにpfの設定しても、pf起動時にng0がなくて怒られるし。

0197名無しさん@お腹いっぱい。2005/04/23(土) 00:17:57
/etc/start_if.fxp0
とかにmpdの起動スクリプトを書いている。
0198名無しさん@お腹いっぱい。2005/04/23(土) 14:57:29
mpd.confに
set iface up-script /usr/local/libexec/mpd.linkup
って書いてその中で起動してる。pfじゃなくてipf使ってるけど。
0199名無しさん@お腹いっぱい。2005/04/24(日) 01:25:08
/etc/rc.d/pf の REQUIRE に mpd を加えたんじゃ駄目?
0200名無しさん@お腹いっぱい。2005/04/24(日) 04:06:54
FreeBSD 5-STABLE で、pf, mpd 使ってますが、tcpdump -n -e -tttt -i pflog0 で
日本時間で表示されるのはどうやるのでしょうか?

0201名無しさん@お腹いっぱい。2005/04/24(日) 04:49:39
>>200
BBルータ作ってないユーザですが、RELENG_5 の tcpdump.c で
if (tflag > 0)
thiszone = gmt2local(0);
というそれっぽい行があったので、 "tflag tcpdump" でぐぐったところ
http://www.tcpdump.org/lists/workers/2004/06/msg00034.html
これが引っかかったよ。
net/tcpdump のほうはビルドできないね orz

pf2xml
http://www.monkey.org/~jose/software/pf2xml/
というのもあった(awk スクリプト)

http://www.freebsd.org/send-pr.html
なぜか貼っておきますw
02022002005/04/24(日) 05:12:58
http://cvs.tcpdump.org/cgi-bin/cvsweb/tcpdump/tcpdump.c?rev=1.253.2.1
もう本家 3.9 alpha で反映されてますた。

http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/71619
本家で直ってるし、こういう場合 FreeBSD send-pr しないほうがいいのか。
スマソ
02032012005/04/24(日) 05:14:18
202 = 201 です。 ○| ̄|_
02042002005/04/24(日) 13:14:22
>>201, 202, 203
サンクス
02051952005/04/24(日) 17:02:19
kernel pppoeとpf+altqが使える環境は無いのか・・・
0206名無しさん@お腹いっぱい。2005/04/28(木) 03:43:44
NICの2枚挿しルータでNATトラバーサルのIPSecを通してやりたいのだが
ipfwのルールで次の書いてやっても通りませぬぅ・・・

${fwcmd} add pass udp from ${inet}:${imask} to any 500
${fwcmd} add pass udp from any 500 to ${inet}:${imask}
${fwcmd} add pass udp from ${inet}:${imask} to any 10000
${fwcmd} add pass udp from any 10000 to ${inet}:${imask}

このIPsecのisakmpはudpのport 500、実通信はudpの port 10000 という仕様なのは
確認してるのだが。
isakmpはdst,srcともにportは500なんだけど、ひよっとして1023より小さい
port番号のパケットは通さないとかあったりします?
0207名無しさん@お腹いっぱい。2005/04/28(木) 04:02:51
ipfw show
0208名無しさん@お腹いっぱい。2005/04/28(木) 08:33:48
03600 12 7444 allow udp from 192.168.1.0/24 to any 500
03700 0 0 allow udp from any 500 to 192.168.1.0/24
03800 0 0 allow udp from 192.168.1.0/24 to any 10000
03900 0 0 allow udp from any 10000 to 192.168.1.0/24

LAN(192.168.1.0/24)からWANへ抜けていかないのでisakmp(port 500)の
パケットが返りも来ない状態です。WAN側、LAN側を同時にtcpdumpして
確認もしてます。
0209名無しさん@お腹いっぱい。2005/04/28(木) 13:19:09
${fwcmd} add pass udp from any to any 500
${fwcmd} add pass udp from any 500 to any
${fwcmd} add pass udp from any to any 10000
${fwcmd} add pass udp from any 10000 to any
これで抜けない?。
02102082005/04/28(木) 22:22:49
通りました。
しかしinside側のプライベートセグメントはNAT変換されるから
指定しても無意味ってことでしょうか。。
0211名無しさん@お腹いっぱい。2005/04/30(土) 12:09:00
NAT 通った後なら既にアドレスは変換された状態になってるはず。
気持ち悪ければ NAT 通る前にあらかじめ対象外のパケットを落としちゃえば?
もっとも既に他のルールで落ちちゃってるかもしれないけど。
0212名無しさん@お腹いっぱい。2005/05/07(土) 11:40:40
# mpd
[PPPoE] ppp node is "mpd80015-PPPoE"
[PPPoE] using interface ng0
[PPPoE] IPCP: peer address cannot be zero
[PPPoE] IFACE: Open event
[PPPoE] IPCP: Open event
[PPPoE] IPCP: state change Initial --> Starting
[PPPoE] IPCP: LayerStart
[PPPoE:PPPoE] [PPPoE] bundle: OPEN event in state CLOSED
[PPPoE] opening link "PPPoE"...
[PPPoE] link: OPEN event
[PPPoE] LCP: Open event
[PPPoE] LCP: state change Initial --> Starting
[PPPoE] LCP: LayerStart
[PPPoE] device: OPEN event in state DOWN
[PPPoE] PPPoE originate option is not enabled
[PPPoE] device is now in state OPENING
[PPPoE] device: DOWN event in state OPENING
[PPPoE] device is now in state DOWN
[PPPoE] link: DOWN event
[PPPoE] LCP: Down event
[PPPoE] device: OPEN event in state DOWN
[PPPoE] pausing 4 seconds before open
[PPPoE] device is now in state DOWN
[PPPoE] device: OPEN event in state DOWN
[PPPoE] pausing 2 seconds before open
[PPPoE] device is now in state DOWN

と繰り返します。何が悪いのか・・・
0213名無しさん@お腹いっぱい。2005/05/07(土) 13:49:54
mpd.conf晒せ
0214名無しさん@お腹いっぱい。2005/05/07(土) 17:00:57
# cat /usr/local/etc/mpd/mpd.conf
default:
load PPPoE

PPPoE:
new -i ng0 PPPoE PPPoE
set iface route default
set iface disable on-demand
set iface idle 0
set iface mtu 1492
set bundle disable multilink
set bundle authname tp25077@tpc1.fiberbit.net
set link no acfcomp protocomp
set link disable pap chap
set link accept chap
set link mtu 1492
set link mru 1492
set ipcp yes vjcomp
set ipcp ranges 0.0.0.0/0 0.0.0.0/0
open iface
0215名無しさん@お腹いっぱい。2005/05/07(土) 21:26:55
>>214
ユーザID晒すのはあんまりよろしくねぇ行為だなw
0216名無しさん@お腹いっぱい。2005/05/07(土) 23:27:29
set iface mtu 1454
じゃないの?
0217名無しさん@お腹いっぱい。2005/05/08(日) 12:49:00

フレッツじゃないから MTU は 1454 でなくても大丈夫なんじゃないか?

PPPoEのヘッダは8Byteだから1492は正解と思われ
0218名無しさん@お腹いっぱい。2005/05/10(火) 15:20:02
>>212
なんかうちと同じ症状かも
pppの設定してpppで一旦ダイアルしてからだったら上手くいったりしない?
0219名無しさん@お腹いっぱい。2005/05/10(火) 15:59:34
>>212 >>214
mpd.linksで
 set pppoe enable originate
が入ってないのなら入れてみたら?またはわざわざdisableしてるとか。
> [PPPoE] PPPoE originate option is not enabled
PPPoEのサーバ側(?)をやってるわけでない以上、これがなんか変なので。

あと、
> set ipcp yes vjcomp
は、PPPoEの場合noにした方が帯域は出るかも。
yesにしてても相手が蹴るだけかもしれないけど。

0220名無しさん@お腹いっぱい。2005/05/14(土) 20:43:20
現在pfを使ってルータを作っているのですがうまくいきません。
どなたか教えてください。

WAN---BBルータ---FreeBSD---client

FreeBSDの稼動サービス
named,dhcp,ssh,http

BBルータ内側 192.168.1.1
FreeBSD外側 192.168.1.216
FreeBSD内側 192.168.10.1
client 192.168.10.2

FreeBSDから外部へのping,digともに問題ありません。
clinetは外部へのdigの結果は返ってくるもののpingを打つと戻ってこず、
tracerouteすると"1 * * *"となっています。
clientからFreeBSDへのpingは応答があります。



0221名無しさん@お腹いっぱい。2005/05/14(土) 20:45:28
pfの設定は、ほぼレファレンスどおりです

# macros
int_if = "sk0"
ext_if = "sk1"

tcp_services = "{ 22, 53, 113 }"
icmp_types = "echoreq"

priv_nets = "{ 127.0.0.0/8, 172.16.0.0/12, 10.0.0.0/8 }"

# options
set block-policy return
set loginterface $ext_if

# scrub
scrub in all
scrub out all max-mms 1414

# nat/rdr
nat on $ext_if from $int_if:network to any -> ($ext_if)
#rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 \
port 8021
02222202005/05/14(土) 20:45:59
続きです

# filter rules
#block all

pass quick on lo0 all

#block drop in quick on $ext_if from $priv_nets to any
#block drop out quick on $ext_if from any to $priv_nets

pass in on $ext_if inet proto tcp from any to ($ext_if) \
port $tcp_services flags S/SA keep state

pass in inet proto icmp all icmp-type $icmp_types keep state

pass in on $int_if from $int_if:network to any keep state
pass out on $int_if from any to $int_if:network keep state

pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto { udp, icmp } all keep state

長々となりましたが、どこがおかしいか教えてください。
0223名無しさん@お腹いっぱい。2005/05/14(土) 20:47:26
>>220
pf以前の問題でそもそもforwardingしていないとか。
02242202005/05/14(土) 21:39:11
あげてしまっていました。すみません。

>>223
そのとおりですた。ありがとう。
0225名無しさん@お腹いっぱい。2005/05/14(土) 22:19:31
厨っぽい質問ですみません。5.4R + mpd が動いてくれません。mpdを起動させると

server# mpd
Multi-link PPP for FreeBSD, by Archie L. Cobbs.
Based on iij-ppp, by Toshiharu OHNO.
mpd: pid 570, version 3.18 (root@server.localnet 20:22 14-May-2005)
[PPPoE] ppp node is "mpd570-PPPoE"
[PPPoE] exec: /sbin/ifconfig fxp0 up
[PPPoE] Cannot send a netgraph message: fxp0::No such file or directory
[PPPoE] Error in creation ng_pppoe node on fxp0:
(略)

と出ます。`ifconfig -a`でng0がいないのが原因じゃないかとは思うのですが、以下の4行を追加して
kernelを再構築してインスコ→rebootすればとりあえずng0って出来ませんでしたっけ?
4.xではこれでよかった気がするんですが・・・

options NETGRAPH
options NETGRAPH_ETHER
options NETGRAPH_PPPOE
options NETGRAPH_SOCKET

server# kldstat
Id Refs Address Size Name
(略)
4 1 0xc23c1000 5000 ng_socket.ko
5 5 0xc23d6000 12000 netgraph.ko
6 1 0xc23ec000 4000 ng_iface.ko
7 1 0xc23f9000 8000 ng_ppp.ko
8 1 0xc2401000 4000 ng_bpf.ko
9 1 0xc2405000 5000 ng_vjc.ko
0226名無しさん@お腹いっぱい。2005/05/14(土) 22:26:10
>>225
GENERICでやってみそ
0227名無しさん@お腹いっぱい。2005/05/14(土) 22:46:15
>>225
それでできるのはmpdじゃなくてuserland-pppによるPPPoEの場合だと思うな。
mpdの場合はkldstatしてもわかるようにもっと色んなものをkernelに組み込まないと
いけないのでその部分ですでに入っているものとkldloadしたものとで競合が起きて
うまくいかないのではないかと思う。

ちゃんと調べて自分で全部入れるかnetgraph関係をはずして完全に自動でやってもらうか
どちらかだな。
0228名無しさん@お腹いっぱい。2005/05/15(日) 00:03:35
>>226
試して見ました。全く変わりません。kldstatで見るとちゃんとng_*.koは読み込まれてる
んですけど、それでも "Cannot send a netgraph message: fxp0〜" と言われます。


>>227
すみません、書き方が足りなかったです。
既にmpdで通信できているFreeBSD 4.10R鯖があって、これと並行試験をするために
今回別途5.4R鯖を立てて、4.10Rのときと全く同じ手順でmpdを導入しようとしてハマッ
ている最中なのです。4.10Rの時は上記の手順でmpdが動きました。
0229名無しさん@お腹いっぱい。2005/05/15(日) 00:19:07
fxp0は生えてるの?
0230名無しさん@お腹いっぱい。2005/05/15(日) 00:54:03
解決しますた。

>>229
生えてます。

という訳でこんなページを見つけたので、↓

ttp://lists.freebsd.org/pipermail/freebsd-questions/2003-June/008570.html

mpd起動前にあらかじめkldloadで "ng_ether.ko" を手動で読み込ませておいてからmpdを起動
させたら問題なく動くようになりました。4.xではこんなことは必要なかったような・・・
5.xでnetgraphの仕様が変わった事に対してmpdが追従できてない?とかなんでしょうか。

とりあえず根本的な解決法ではないかもしれませんが、しばらくこれで運用してみます。

0231名無しさん@お腹いっぱい。2005/05/16(月) 12:33:55
mpd + natd + ipfw な構成で 自宅PPPoEルータを4.8releaseで作ってます。
tcpmssdなんですが、

# tcpmssd -p **** -m 1454

の **** の数値って何にすればいいんでしょう。
/etc/servicesの中のnatdの8668にしくのがいいんですかね?
ぐぐってみると1234とか適当につけてる例も出てるし
02322312005/05/16(月) 12:37:02
もう一つ。

速度を上げたいので mpd + ipf に変えようかと思ったら
カーネルで bpf を外せとのこと。
LAN側はdhcpサーバ動かしたいし、時にはtcpdumpしたい
こともあるんで bpf は外したくないんだけどそれって
mpd + ipf では無理なんですかね。
0233名無しさん@お腹いっぱい。2005/05/16(月) 13:44:30
外さなくてok
0234名無しさん@お腹いっぱい。2005/05/16(月) 14:43:46

# tcpmssd -p 8668 -m 1492
tcpmssd: can't bind divert socket: Address already in use

となる。natdが既に動いているから8668にしてはダメってことか。
しかし -p 1234 とかやっても windows update に接続できないし
mss書き換えてくれない。どうしたもんだろー
0235名無しさん@お腹いっぱい。2005/05/16(月) 15:58:40
>>231
-p で指定したポートで tcpmssd を待ち受けさせて
ipfw の divert でそこに流し込むという使い方じゃなかったっけか

4.11 とか使えば tcpmssd はもう要らなかったと思うが
0236名無しさん@お腹いっぱい。2005/05/16(月) 17:00:08
正直、mpd, pf のがよくね?
0237名無しさん@お腹いっぱい。2005/05/18(水) 07:58:52

# tcpmssd -p 8669 -m 1492
を実行して、
/etc/rc.firewallに
${fwcmd} add divert 8669 tcp from any to any out recv ${oif} xmit ${iif} tcpflags syn
を追加してみましたが、
mssの書き換えを実施してくれませんでした。

一応 /etc/servicesに、
tcpmssd 8669/divert
と追加もしてみましたが(これは関係ないか・・・)。
0238名無しさん@お腹いっぱい。2005/05/18(水) 10:24:19
>>237
mssの値ってISDNなら1000でADSLなら1454じゃないっけ?

というのはさておき、
firewallの設定はまず大域的にやってそれから高速化を目指して限定的にやる
というアプローチがいいと思います。
つまり、これくらいのルールでまずやってみて、それから限定していったほうが
よいかとおもいます。
${fwcmd} add divert 8669 tcp from any to any
これだと出て行く場合も入ってくる場合もtcpmssdに飛ばされますけれど。

tcpflags synとついているのでsynパケットだけtcpmssdに渡されて
正規化されて、他のパケットは渡されないからsynは通るけれど他が通ってない
ということだとおもう。
あと、recv ${oif} xmit ${iif}ってほんと?$oifから来て、${iif}に行くパケットを
正規化しても仕方が無いと思うんだけど、oifというのは内側のNICを指しているんだろうか?
0239名無しさん@お腹いっぱい。2005/05/19(木) 21:33:18
すみません。またつまずいてしまいました。
今度はWANからclientの80番に接続できずにいます。

WAN---FreeBSD---client

FreeBSD内側 192.168.10.1
client 192.168.10.2

WANからつないで見るとタイムアウトしているような感じです。
pfの設定はこうなってます。

# macros
ext_if = "sk0"
int0_if = "sk1"

tcp_services = "{ ssh }"
icmp_types = "{echoreq, unreach, squench, timex}"

priv_nets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"
local_nets = "192.168.0.0/16"

# options
set block-policy return
set loginterface $ext_if

# scrub
scrub in all
scrub out all max-mss 1414

02402202005/05/19(木) 21:34:43
続きです

# nat/rdr
nat on $ext_if from $local_nets to any -> ($ext_if)
rdr on $int0_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021

# filter rules
block all

pass quick on lo0 all

block drop in quick on $ext_if from $priv_nets to any
block drop out quick on $ext_if from any to $priv_nets

pass in quick on $ext_if inet proto tcp from any to ($ext_if) port $tcp_services \
flags S/SA keep state

pass in inet proto icmp all icmp-type $icmp_types keep state

pass out quick on $ext_if proto tcp all modulate state flags S/SA
pass out quick on $ext_if proto { udp, icmp } all keep state

pass quick on $int0_if all
02412202005/05/19(木) 21:37:41
すみません。またあげてしまいました。orz
239 = 220です。
02422202005/05/20(金) 20:11:19
とりあえず

# macros
ext_if = "sk0"
int0_if = "sk1"
local_nets = "192.168.10.0/24"
# options
set block-policy return
set loginterface $ext_if
# scrub
scrub in all
scrub out all max-mss 1414
# nat/rdr
nat on $ext_if from $local_nets to any -> ($ext_if)
rdr on $int0_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021
rdr on $ext_if proto tcp from any to ($ext_if) port 80 -> 192.168.10.2 port 80

これでは届くようになりました。
後はフィルタリングをうまくすればいいようです。
02432202005/05/24(火) 01:22:59
pfの評価の順番がフィルタリング→フォワーディングなんですね。
逆だと思っていました。これで解決します。
0244名無しさん@お腹いっぱい。2005/05/24(火) 09:58:56
>>243
自分のやったところだと逆にリダイレクト->フィルタリングだった。
総合して考えて、
quickフィルタリングルール->リダイレクト->普通のフィルタリングルール

quickの方が高速なんだけれど、quick無しのほうが処理時間が一定になるね。
02452202005/05/24(火) 20:14:14
ほとんどレファレンスと一緒なんですが微妙な違いに悩まされました。
最終的にはこうなりました。

# macros
ext_if = "sk0"
int_if = "sk1"
tcp_services = "{ ssh, http }"
icmp_types = "{echoreq, unreach, squench, timex}"
priv_nets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"
# options
set block-policy return
set loginterface $ext_if
# scrub
scrub in all
scrub out all max-mss 1414
# nat/rdr
nat on $ext_if from $int_if:network to any -> ($ext_if)
rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021
rdr on $ext_if proto tcp from any to ($ext_if) port http -> 192.168.10.2 port http
# filter rules
block all
pass quick on lo0 all
block drop in quick on $ext_if from $priv_nets to any
block drop out quick on $ext_if from any to $priv_nets
pass in quick on $ext_if proto tcp from any to any port $tcp_services flags S/SA \ modulate state
pass in inet proto icmp all icmp-type $icmp_types keep state
pass in quick on $int_if from $int_if:network to any keep state
pass out quick on $int_if from any to $int_if:network keep state
pass out quick on $ext_if proto tcp all modulate state
pass out quick on $ext_if proto { udp, icmp } all keep state

誰かの参考になればと思います
0246名無しさん@お腹いっぱい。2005/05/27(金) 02:14:16
4.11ipfw+ipfilter 5.4+pfにしたら無茶区茶はまった
10年早かったかorz....ガンガロ...
0247名無しさん@お腹いっぱい。2005/05/30(月) 02:02:41
初めてFreeBSD5.4とpfでブリッジ作ろうとしたらはまった。

int_if = "sis1"
ext_if = "sis0"
priv_nets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"
int_nets = "{ 内側ネットワークのIPアドレス群 }"
tcp_services = "{ ssh, domain }"
udp_services = "{ domain, ntp }"
icmp_types = "{echoreq, unreach, squench, timex}"
set block-policy return
set loginterface $ext_if
scrub in all
# filter rules
block log all
pass quick on lo all
block drop in quick on $ext_if from $priv_nets to any
block drop out quick on $ext_if from any to $priv_nets
pass in on $ext_if inet proto tcp from any to $ext_if \
port $tcp_services flags S/SA keep state
pass in on $ext_if inet proto udp from any to $ext_if \
port $udp_services
pass in inet proto icmp all icmp-type $icmp_types keep state
pass in on $int_if from $int_nets to any keep state
pass out on $int_if from any to $int_nets keep state
pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto { udp, icmp } all keep state

上記だと内側ネットワークの端末からTCP通信が出来なかった(UDP,ICMPは可能)
下から二行目のmodulateをkeepに変えたら通信できるようになった。
PF: OpenBSD パケットフィルタに載っていたとおり書いたつもりだったんだけど・・・
何が原因なのか、現状の設定で問題ないか、教えてエロい人!
02482472005/05/30(月) 02:06:38
>下から二行目のmodulateをkeepに変えたら通信できるようになった。
flags S/SAも消してました・・・
0249名無しさん@お腹いっぱい。2005/06/06(月) 18:44:26
保守
0250中の人2005/06/07(火) 12:29:16
ふがいない管理者のせいでドメイン落としてしまいました。
全然更新していませんが、いまだに参考にしてくれている人もいるみたいなので
新しいURLをはっておきます。
ttp://www.daily-labo.com/ygg14.html
0251名無しさん@お腹いっぱい。2005/06/07(火) 12:35:49
>>250
0252名無しさん@お腹いっぱい。2005/06/07(火) 14:45:06
>>250
週末探してました。ありがとう。
0253名無しさん@お腹いっぱい。2005/06/08(水) 00:03:19
>>250
もれもmpd使うときは参考にしたよ。
でも、もれはipfilterの人嫌いだからpf使ったよ。
pfの場合はscrub max-mssでやるね。
ちなみにinだけ設定すれば十分。
0254名無しさん@お腹いっぱい。2005/06/08(水) 00:18:16
>もれはipfilterの人嫌いだからpf使ったよ。
喧嘩売ってますか?
02552532005/06/09(木) 01:40:32
>>254
表現が誤解を生んだね。すまん。
もれはTheo教なのでipfilterの作者を嫌いなんです。
ipfilterの利用者にはなんとも思ってません。
0256名無しさん@お腹いっぱい。2005/06/09(木) 02:04:14
りょうかい
0257名無しさん@お腹いっぱい。2005/06/13(月) 01:21:05
おまいら、Flet'sと使ってるプロバイダの両方に繋いでいるときの
ルーティングはどうしてますか?

ちなみに、もれはdefault routeをプロバイダにしてFlet's側として見つかったものを
whoisしてnetmaskを求め、一つ一つmpd.confに加えてる。
でも、書いてないものはルーティングされないし、そもそもいちいち設定するのが
面倒くさいので何とかしたいのだが。
0258名無しさん@お腹いっぱい。2005/06/13(月) 01:40:57
>>257
ttp://www.flets.com/square/routing.html
02592572005/06/13(月) 22:20:35
>>258
Thx!
0260名無しさん@お腹いっぱい。2005/06/15(水) 19:03:47
FreeBSD 4-STABLEでipfwを使っています。
/var/log/auth.log を見ると短時間に数百から数千の
不正アクセスを試みている形跡が山盛りあるのですが
こういうアクセスを遮断する、おおげさでない良い方法はありますか?

今は/var/log/auth.logを10分おきに調べて不正アクセス
が多いものを自動でipfw add denyするようにしています。
0261名無しさん@お腹いっぱい。2005/06/15(水) 22:16:50
>>260
ipfw add 1 dny from any to any
02622612005/06/15(水) 22:17:19
こういう事書きながら、typoしてると痛いな
0263名無しさん@お腹いっぱい。2005/06/15(水) 22:53:42
>>260
攻撃がssh経由のログインなら、sshdを外へのインタフェースアドレスに
bind(2)しないように設定するとか?
sshd_config(5)のListenAddressの説明が参考になるかも。

外からログインしたい場合はこれじゃダメだけど。
自分は外へのインタフェースに対してはポート番号を22以外にしたりしてる。
■ このスレッドは過去ログ倉庫に格納されています