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

FreeBSDでBBルータを作ろう互助会 2Mbps

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

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

最近のブロードバンドルータは安くて速いぞ。遅くてヘボいルーター作るなよ。
0002乙彼NGNG
      ∧ ∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ( ゚Д゚) < ムーンウォークで2ゲトー!!
     ./ つ つ  \_____________
  〜(_⌒ヽ      (´⌒(´
     .)ノ `J≡≡≡(´⌒;;;≡≡≡
         (´⌒(´⌒;;
    ズザーーーーーッ
0003名無しさん@お腹いっぱい。NGNG
upnp実装お願いしまつ。
0004あぼーんNGNG
あぼーん
0005名無しさん@お腹いっぱい。NGNG
0006名無しさん@お腹いっぱい。NGNG
>>3
cd /usr/ports/net/linuxigd ; make install
0007名無しさん@お腹いっぱい。NGNG
http://plaza.rakuten.co.jp/gobakuomedeto/
0008前スレの986NGNG
rc.confは
network_interfaces="xl0 xl1 lo0"
tcp_extensions="YES"
ifconfig_xl0="media 100baseTX mediaopt full-duplex up"
ifconfig_xl1="inet 192.168.1.1 netmask 255.255.255.0"
gateway_enable="YES"
ipfilter_enable="YES"
ipfilter_rules="/etc/ipf.rules"
ipfilter_flags=""
ipmon_enable="YES"
ipnat_enable="YES"
ipnat_rules="/etc/ipnat.rules"

/etc/ipf.rulesに
pass in all
pass out all
と書いてます。
これでもつながりません。
あとは何がたりないのでしょうか?
0009名無しさん@お腹いっぱい。NGNG
>>8
/etc/ipnat.rulesは?
0010名無しさん@お腹いっぱい。NGNG
network_interfaces="xl0 xl1 lo0"
に ng0 はいらないんだっけ?

つうか FreeBSD のバージョンは?

あとは、やっぱ ipnat だろうね
0011前スレの986NGNG
>>9
ありがとうございます。
map ng0 192.168.1.0/24 -> 0/32 portmap tcp/udp auto
map ng0 192.168.1.0/24 -> 0/32
を追加したら無事つながりました。
0012名無しさん@お腹いっぱい。NGNG
>>11
mssclamp 1414
付けとけ
0013名無しさん@お腹いっぱい。NGNG
ipfwとipfilter両方使いたいんだけど、
pseudo-device bpf
っている?
0014名無しさん@お腹いっぱい。NGNG
>>13
いらねー… はず。
0015名無しさん@お腹いっぱい。NGNG
あちこちのサイトを見てpppでPPPoEルーターを作ってるんだけど、現在は/etc/ppp/ppp.linkup
なしで下のようにtun0の表示がネットワークアドレスになっています。(network_addressの部分)

ifconfig -a
nic0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet host_ip_address netmask 0xfffffff8 broadcast ***.***.***.***
ether **:**:**:**:**:**
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
nic1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether **:**:**:**:**:**
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1454
inet network_address --> provider_side netmask 0xffffffff
Opened by PID **
次に続く
0016名無しさん@お腹いっぱい。NGNG
PPPoEルーター製作サイトを見るとppp.linkupについては全く触れていない人もいるが、
ppp.linkupを下のように書いて無理やりtun0にホストIPアドレスをつけている人もいる。
provider:
! ifconfig tun0 delete
! ifconfig tun0 host_ip_address netmask 255.255.255.248 HISADDR
add! default HISADDR

この場合は下のようにnetwork_addressではなくhost_ip_addressになる。
ifconfig tun0
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1454
inet host_ip_address --> provider_side netmask 0xffffffff
Opened by PID **

動作上はどちらも変わらない見えるが、どちらが良いのだろう。
あるサイトではネットワークアドレスなのが「気持ち悪い」と書いていたが、
nic0とtun0と両方に同じIPアドレスを指定するのも気持ち悪い気がするのだが・・
0017名無しさん@お腹いっぱい。NGNG
>>15-16
ならつけなきゃ良いじゃん。
0018あぼーんNGNG
あぼーん
0019名無しさん@お腹いっぱい。NGNG
/etc/ipnat.rules
map ng0 from 192.168.1.0/24 ! to 192.168.0.0/16 -> 0/32 proxy port 1720 h323/tcp mssclamp 1414
map ng0 from 192.168.1.0/24 ! to 192.168.0.0/16 -> 0/32 proxy port ftp ftp/tcp mssclamp 1414
map ng0 from 192.168.1.0/24 ! to 192.168.0.0/16 -> 0/32 portmap tcp/udp auto mssclamp 1414
map ng0 from 192.168.1.0/24 ! to 192.168.0.0/16 -> 0/32 mssclamp 1414

うちはこんな感じ。
192.168.x.0/24で別拠点にIPsecトンネルがあったりもする。
0/32は固定IPを書いたりもする。
IPv6も貰っていたりする。
0020名無しさん@お腹いっぱい。NGNG
>>13
ではこのへんで感想をひと言だけ述べて挨拶に代えさせていただきます。

「ルータにbpfは入れたくない」
0021名無しさん@お腹いっぱい。NGNG
前スレ>>845がbpfいらなくするパッチを作れ。
0022名無しさん@お腹いっぱい。NGNG
DHCPやるのに必要なんだよな
0023名無しさん@お腹いっぱい。NGNG
いいじゃんBPF。なしてルーターには入れたくない?

@BPF自体が穴を増やすことになるから
A他の穴が原因でルータを乗っ取られた場合、BPFがあると悪用されるから

さあ DOTCH? できれば具体例を知りたい。
それに「ルータに」ということだけど、
「ルータ」であるマシンだから余計に危ないのかどうかも気になる。
0024名無しさん@お腹いっぱい。NGNG
FreeBSD-4.8Rでbirdgeがまともに動いた香具師いますか?

このバグがまだ治ってないような気がするのだが、、、
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/59520
0025名無しさん@お腹いっぱい。NGNG
ipf は設定しなおしても 再起動 (ipf -Fa -Z -f /etc/ipf.rules)させても 、
まぁ今開いてるセッションとじないじゃないですか(当たり前だけど)

でも ipnat のほうは -CF しちゃうと全部切れちゃういますよね

-r で 特定のルールのみ消し、-f だけで重複しないルールだけ読み込
ませればいいのでしょうか?

やってみれば判るといわれりゃソレまでなんですかw
0026名無しさん@お腹いっぱい。NGNG
>>23
UNIX版でわざわざ機種依存文字を使うのは如何なものかと
0027名無しさん@お腹いっぱい。NGNG
>>25 自己レス

できました、重複しても既に有ると文句を言われるだけで今生きてるNATセッション
は切れませんでした
0028名無しさん@お腹いっぱい。NGNG
だめだ ipnat で 0.0.0.0/0 でも IPフォワードしてくれない・・・
実値じゃないとダメなのか
0029名無しさん@お腹いっぱい。NGNG
>>28 調べ方
・tcpdumpしてNATしてるか調べる。
・ipfilterでブロックしたものは全部ログる。
0030名無しさん@お腹いっぱい。NGNG
>>29 うーんそれ以前にipnat -l でルールとして認識されてないんですよ・・・
前スレ >904 に加筆

FreeBSD 4.8R + mpd + ipfilter(+ipnat)
(A)rdr ng0 0.0.0.0/32 port XXXX -> 192.168.0.3 port XXXX tcp
(A)rdr ng0 0.0.0.0/24 port XXXX -> 192.168.0.3 port XXXX tcp
(A)rdr ng0 0.0.0.0/0 port XXXX -> 192.168.0.3 port XXXX tcp
(B)rdr ng0 0/32 port XXXX -> 192.168.0.3 port XXXX tcp
(B)rdr ng0 0/24 port XXXX -> 192.168.0.3 port XXXX tcp
(B)rdr ng0 0/0 port XXXX -> 192.168.0.3 port XXXX tcp
(C)rdr ng0 (※)/32 port XXXX -> 192.168.0.3 port XXXX tcp
※ mpdを実行して割り当てられた動的IPを設定して、-CFオプションでipnatを再起動

と(C)の方法でしかNATが有効になりません

ipnat -l で見ても、 C のときしか有効ルールに認識されません(泣きが入ってます)

でもCの設定の時はちゃんとうまくルールに認識されるしIPフォワードされてるんです
もうなんか暑いしこれだけで夏ばてしちゃいそうですw

ちなみに、もう最悪の対処方法ですが rc.network の ipnat を -CF で呼び出す所の前に
NG0_IP=`/sbin/ifconifg ng0 | awk '{if($1=="inet")print $2}'`
/usr/bin/sed -e "s/NNGG00/$NG0_IP/" /etc/ipnat.def > /etc/ipnat.rules
※ /etc/ipnat.def は "rdr ng0 NNGG00/32 port XXXX -> 192.168.0.3 port XXXX tcp"
なんてことをしてます・・・(非常に泥臭いですw)
0031名無しさん@お腹いっぱい。NGNG
>>30
まだやってたのか

rdr ng0 0/0 port XXXX -> 192.168.0.3 port XXXX tcp

の一行だけ書いた/etc/ipnat.rulesで、ipnat -CF -f /etc/ipnat.rules
実行したらどうなるわけ? 問題切り分けろよ
0032名無しさん@お腹いっぱい。NGNG
>>30
登録できて、NATされてる。
# echo 'rdr ng0 0.0.0.0/0 port 21 -> 192.168.0.3 port 21 tcp' | ipnat -f -
# ipnat -l |grep rdr
rdr ng0 0.0.0.0/0 port 21 -> 192.168.0.3 port 21 tcp
した後、pcflank(195.131.4.164)からftpにコネクトしてみる。外からのftpへの接続要求はブロックしてるからipfilterで引っかかる。

Aug 13 13:43:26 xxx ipmon[58]: 13:43:25.239185 ng0 @0:16 b 195.131.4.164,3357 -> 192.168.0.3,21 PR tcp len 20 60 -S I
0033名無しさん@お腹いっぱい。NGNG
>>31 はい、それだと ルール 0 になります
当然、NATなんかできるわけ無いですよね

>32 そうですよね・・・そうならなきゃいけないんです

ちなみに、FTPですがPASVでしか駄目ですよね
ルーター自身がFTP鯖ではなく、ルーター下のPC-FTP鯖では?
0034名無しさん@お腹いっぱい。NGNG
>>33
32のようにechoでSTDINから入力しても登録されないの? なんだそれ
ifconfig ng0は? ちなみにmapは正しく登録されて動作するの?
0035名無しさん@お腹いっぱい。NGNG
>>34 map の方も 0/0.0.0.0 は駄目ですね
FTTHで2セッションでこのPCルーター+専用ルーター
で外から回ってFTP鯖のモニターでみてますが
0.0.0.0のほうでは外には出ますがNATが働いてません
グローバルIPをCの方法で割り当てると、モニターにNATされて
いるのが確認できるんですけど

とにもかくにも 0 に関してはなにをやっても駄目な状態です・・・

ipfilter を最新にしてみたほうがいいのかな?

やっぱカーネルにネットグラフいれたのがまずいのだろうか
なんか疑心暗鬼になってきてましてw

4.8Rクリーンインストール+mpdのみでやり直したほうがいいかな
0036名無しさん@お腹いっぱい。NGNG
>>35
mapは0/0使わないだろう? で、ifconfigは?

4.8-RELEASEてことは3.4.31だろ、最新ではないけど別に問題ない
0037名無しさん@お腹いっぱい。NGNG
あぁぁ、前スレ保存しそこなった。うp希望

>>35 お前mapとrdrの違いわかってる?
外に出るのを変換するのがmap
外から入ってくるのを変換するのがrdr

まず
echo 'rdr ng0 0.0.0.0/0 port 21 -> 192.168.0.3 port 21 tcp' | ipnat -f -
ipnat -l |grep rdr
の結果を貼れ。
0038名無しさん@お腹いっぱい。NGNG
>>36 それなにか関係あります? 実値で成功してるんですよ?
ng0が生きてなければipnatどころかipfilterも動かないと思うけど

>>36 あの・・・わかりました 結果は張るけどちょっとまてください
   (生きてるセッション閉じるのは相手に断らないと・・・)

map/rdr つまり NATとIPマスカレード(IPフォワーディング)の
違いは当然理解しているつもりです

mapで ftp などを NATで外に出したりしませんか?

LocalPC[192.168.0.3] --- [Router] GlobalIP ---- ISP

の場合、FTPが1台だけなら map で 192.168.0.3 にGlobalIP
を割り当てたりしないの?

map ng0 192.168.0.3/32 -> 0.0.0.0/32 proxy port ftp ftp/tcp
本当は 0.0.0.0/32 は ng0 のグローバルIPになってほしいがそ
ういう設定はできないのが今の環境の現状です・・・

今はCの方法なんで、実GlobalIPを入れているから、FTPを
受けるモニター側ではGlobalIPが見えるけど、0.0.0.0/0or24or32
ではNATが無効なようでモニターで見ると 192.168.0.3 とLocalIPが
見える

なんで外に出れるかというと
map ng0 192.168.0.0/24 -> 0.0.0.0/32
が一応効いてるからだと思う(NAT変換してないが・・・)
0039名無しさん@お腹いっぱい。NGNG
rc.conf に

ipmon_enable="YES"
ipmon_flags="-D /var/log/ipf.log"

の2行を追加してLOGを出してるんですが
途中で出力をやめてしまいました

ps -ax でみると

52 ?? Ss 0:00.07 /sbin/ipmon -D /var/log/ipf.log

といるんですがlogファイルが増えていきません
なにかほかに設定がいるんでしょうか?

環境は mpd+IPF+IPNATです
0040名無しさん@お腹いっぱい。NGNG
>>39
/etc/syslog.confにて、

local0.* /var/log/ipf.log
#
*.err;kern.debug;auth.notice;mail.crit;local0.none /dev/console
*.notice;kern.debug;lpr.info;mail.crit;news.err;local0.none /var/log/message
s
security.* /var/log/security
auth.info;authpriv.info /var/log/auth.log
mail.info /var/log/maillog
lpr.info /var/log/lpd-errs
cron.* /var/log/cron
*.err;local0.none root
*.notice;news.err;local0.none root
*.alert;local0.none root

こんな感じでかけば出力される。
0041名無しさん@お腹いっぱい。NGNG
ずっと単発質問スレだと思って無視してたんだけど、結構情報集まってたみたいね。
すまんが誰か過去ログ持ってない?
■ このスレッドは過去ログ倉庫に格納されています