重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

FreeBSD の IPFirewall で NAT を記述する際にどこに書いても動作は同じでしょうか?

NAT を適応したいルールのすぐ上に書くのか,それともルールの最初に書いても一緒なのでしょうか?

ちなみにローカルプロセスも稼動しています.

A 回答 (4件)

まず、念のため確認しますが、


ルータマシンから直接外部へのアクセスすることは出来ているんですよね?
それから以下は4.10-RELEASEで確認しています。
5.3-RELEASE等では細かい点が異なるかもしれません。

ルータマシンがパケットの中継(フォワーディング)をするように設定されていますか?
(rc.confで「gateway_enable="yes"」と設定していれば以下のようになるはずです)
>sysctl -a | grep forward
net.inet.ip.forwarding: 1
net.inet.ip.fastforwarding: 0

natdはdivertソケットを受け取るように準備されていますか?
>ps -auxww |grep natd
root 40464 0.0 0.8 424 224 ?? Ss 141204 6:31.50 natd -n fxp0
>sockstat |grep div4
root natd 40464 3 div4 *:8668 *:*

外部側NIC(fxp0ですよね?)へパケットは出ていますか?
「tcpdump -i fxp0」で確認してみてください。
    • good
    • 0

カーネルの再構築はしましたか?



「option DIVERT」だったと思いますが、IPFWも含めてカーネルに追加し、再構築しなおしましょう。
    • good
    • 0

自分の環境からNATするために必要最低限と思しき設定を抜きだすと、


(仮に外部NICをed1とします。)

/etc.rc.conf
|defaultrouter="192.168.1.1"
|ifconfig_ed1="inet 192.168.1.33 netmask 255.255.255.0"
|ifconfig_ed2="inet 192.168.2.33 netmask 255.255.255.0"
|gateway_enable="YES"
|firewall_enable="YES"
|firewall_script="/etc/rc.firewall.local" (←firewall_typeでもOKです。)
|natd_enable="YES"
|natd_interface="ed1"

/etc/rc.firewall.local
|ipfw add 50 divert 8668 ip from any to any via ed1
...その他フィルタルール設定

のような感じになります。
何か抜けてる設定はありませんか?

あと、NAT処理ルールが実行されていることを確認してください。
>ipfw show
00050 2252636 482181603 divert 8668 ip from any to any via ed1
00200 3388 722784 allow ip from any to any via lo0
...
の2列目、3列目の数字がそれぞれ処理パケット数、処理バイト数です。

この回答への補足

ルールで
add divert 8668 ip from any to any via fxp0
add allow ip from any to any
でも通りません。

補足日時:2004/12/21 22:32
    • good
    • 0
この回答へのお礼

毎回すいません。
NAT処理ルールが実行されていることを確認しました。
>ipfw show
00050 47 7045 divert 8668 ip from any to any via fxp0
00150 12 844 allow ip from any to any via rl0
65535 41 6663 deny ip from any to any
という結果になりました。

しかし内部LANからpingも外にでられない状態です。
2行目が処理されているということはNATはできているということでいいんですかね?
だとしたらナゼ外部LANにアクセスできないのでしょうか?
アドバイスをお願いします。

お礼日時:2004/12/21 22:18

> FreeBSD の IPFirewall で NAT を記述する際にどこに書いても動作は同じでしょうか?


(ルール)番号順に処理されますので、場所によって動作は変わります。

> NAT を適応したいルールのすぐ上に書くのか,それともルールの最初に書いても一緒なのでしょうか?
特殊な事情がなければ、一番最初のルールとして書くので良いと思います。
natd(8)のマニュアルを見ても一番上に書くように説明されています。

> ちなみにローカルプロセスも稼動しています.
lo0を使うプロセスで問題が起こらないか?という意味でしょうか?
もしそうであれば、
「ipfw add 50 divert 8668 ip from any to any via ed1」
とNAT変換するデバイス(この場合ed1)を指定するので
lo0を使うパケットには影響は無いと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
最近NATを適応しようとしているのですがうまく動かないものですね。
ちなみに /etc/rc.firewall は使わず、自作のファイル(/etc/ipfw.conf)でNATを適応しようとした時、なぜかNATができません。
firewall_type="/etc/ipfw.conf"としているのですが…

お礼日時:2004/12/20 19:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!