初版: 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 any4番目のルールは失敗したときのための保険です。 実際にはないほうがいいでしょう。 また、最初に試すときは「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 … 番号 …みたいな設定を追加するのをお忘れなく。