初版: 2008-06-12
最終更新日:
2008-06-12
+-----------+
|PPTP server|
+-----------+
|172.16.1.1
|
Internet
|
+---------+
|RT series| with packet filtering
+---------+
|172.16.2.1/28
|
|172.16.2.2/28 (fxp0)
+-----------+
|FreeBSD box| ↑ipfw(8)+natd(8)
+-----------+
|192.168.0.1/24 (em0)
|
+-----+----+-----------+ Intranet 192.168.0.0/24
|
|192.168.0.5
+----------+
|Windows PC| PPTP client
+----------+
ipfw: 65500 Deny P:47 192.168.0.5 172.16.1.1 in via em0これは、GREパケットを通す設定がされていないからです。 ちなみに、「P:47」はGREパケットを意味します。 詳しくは/etc/protocolsを見てください。
なお、PPTP (1723/tcp) パケットは、
# Allow TCP through if setup succeeded
${fwcmd} add pass tcp from any to any established
<中略>
# Reject&Log all setup of incoming connections from the outside
${fwcmd} add deny log tcp from any to any in via ${oif} setup
# Allow setup of any other TCP connection
${fwcmd} add pass tcp from any to any setup
の3番目のルールと1番目のルールで通過します。
もし、1723/tcpのパケットについて監視したいのであれば、とりあえず
${fwcmd} add pass log tcp from 192.168.0.0/24 1024-65535
to not 192.168.0.0/24 1024-65535 via ${iif} setup
みたいなルールをどこかに書いておけばいいでしょう。
すると、
ipfw: 番号 Accept TCP 192.168.0.5 172.16.1.1:1723 in via em0のようなログが残ります。
${fwcmd} add pass gre from 192.168.0.0/24 to 172.16.1.1
${fwcmd} add pass gre from 172.16.1.1 to 192.168.0.0/24
${fwcmd} add pass gre from ${oip} to 172.16.1.1
${fwcmd} add pass log gre from any to any
4番目のルールは失敗したときのための保険です。
実際にはないほうがいいでしょう。
また、最初に試すときは「add pass」の代わりに
「add pass log」としてもいいかもしれません。
その代わり、大量のログが出てくるかもしれないので、
うまく接続できた後は、
ログをださないように「add pass」にして「log」を外すといいでしょう。
ip filter 番号 pass * 172.16.2.0/28 established * *内→外のルールで
ip filter 番号 pass * * * * *のようなものが設定されているでしょうから、 追加設定なしで1723/tcpのパケットはとおるはずです。 しかし、GREパケットについては、特段の設定がないので、
Rejected at IN(番号) filter: proto=47 172.16.1.1 > 172.16.2.2というログがでて、パケットが破棄されるでしょう。
そこで、適当な番号で以下のルールを設定します。
ip filter 番号 pass 172.16.1.1 172.16.2.0/28 gre * *もちろん、
ip pp secure filter in … 番号 …みたいな設定を追加するのをお忘れなく。