FreeBSDでNAT(IP アドレス変換)の設定法1999.9.7 zioi


FreeBSD 2.2.8/3.2 でOK

man natを読む

外側アドレス1個に対して、内側複数ネットワーク機器の使用が可能となる。
同じ相手に同じアプリケーション(telnet,netscape等)を動かしても問題ない。

1 kernel 作成

cd /usr/src/sys/i386/conf

cp GENERIC NATKERNEL

edit NATKERNEL; add options IPFIREWALL

                               options IPDIVERT

/usr/sbin/config NATKERNEL

>cd ../../compile/NATKERNEL

make depend

make

make install /これで、/kernel ができる。古いのは/kernel.oldになる。

2 NAT 動作環境設定

edit /etc/rc.conf

              add gateway_enable="YES"

              network_intefaces="ed0 lo0 FE0" 必要なものを追加

                      ifconfig_fe0="inet 192.168.1.1 netmask255.255.255.0"

                      firewall_enable="YES"

必要な場合には、

                      create /ROOT/NATD.CONF

                      interface ed0 /外側のインターフェース

                      redirect_address 192.168.1.2 0.0.0.0

                      /内側受信先が不明で、外から来たものはすべて192.168.1.2

3 rebootして、NATKERNELで立ち上げる。

network interface は使えなくなる。

                      ipfw -f flush

                      ipfw add divert natd all from any to any via ed0

                      ipfw add pass all from any to any

                      natd -interface ed0 もしくは、natd -f NATD.CONF

                      (-v option を付けると、変換の様子が分かる)

以上を、/ROOT/NAT というファイルにしておくとよい。

4 boot 直後自動立ち上げするには

/etc/rc.local に/ROOT/NAT を書いておく

もしくは、

/etc/rc.conf local_startup="/ROOT/LOCAL_STARTUP" を書き

/ROOT/LOCAL_STARTUP/NAT.sh /ROOT/NAT の内容を書いておく。

5 kernel を元に戻す。

chflags nosch /kernel    で/lock をはずす

mv /kernel /kernel.nat

mv /kernel.old /kernel

chflags sch /kernel



WWWproxy.yzの設定法

帯域制御 (1999.11.24)
 
 
 

+------------<< wwwproxy >>------<< bw >>-------(NCV側)
|        de0:             de1:                  10.225.1.2
|        133.24.114.250   10.225.65.1
|                                              << Summit >>
|
+-----------------------------------------------(YUnet側)
                                                133.24.114.253
 

bwマシンにて帯域幅を 128kbit/s に制限して NCV につなげる。

OS          : FreeBSD 3.3-RELEASE
application : dummynet (FreeBSD 3.3R には標準で装備。)
 

1) kernel の再構築。

        # cd /sys/i386/conf
        # cp GENERIC DUMMYNET
        # vi DUMMYNET
        # config DUMMYNET
        # cd ../../compile/DUMMYNET
        # make depend ; make ; make install

/sys/i386/conf/DUMMYNET には下記を追加する。

options         DUMMYNET
options         BRIDGE
options         IPFIREWALL              #firewall
options         IPFIREWALL_VERBOSE      #print information about
                                        # dropped packets
options         IPFIREWALL_FORWARD      #enable transparent proxy support
options         "IPFIREWALL_VERBOSE_LIMIT=100" #limit verbosity
options         IPFIREWALL_DEFAULT_TO_ACCEPT #allow everything by default
options         IPDIVERT                #divert sockets
options         IPFILTER                #kernel ipfilter support
options         IPFILTER_LOG            #ipfilter logging
 

2) /etc/rc.conf 及び /etc/rc.firewall を編集。

/etc/rc.conf

firewall_enable="YES"                   # Set to YES to enable firewall functionality
firewall_script="/etc/rc.firewall"      # Which script to run to set up the firewall
firewall_type="open"                    # Firewall type (see /etc/rc.firewall)
firewall_quiet="YES"                    # Set to YES to suppress rule display
firewall_method="dummynet"
 

/etc/rc.firewall

# Prototype setups.
if [ "${firewall_type}" = "open" -o "${firewall_type}" = "OPEN" ]; then

    if [ "${firewall_method}" = "dummynet" ]; then

#        $fwcmd add pipe 1 ip from any to any via lo0
#        $fwcmd add pipe 2 ip from any to any via de0
        $fwcmd add pipe 3 ip from any to any via de1
        $fwcmd add pipe 4 ip from any to any via de2
#        $fwcmd pipe 1 config bw 128kbit/s
#        $fwcmd pipe 2 config bw 128kbit/s
        $fwcmd pipe 3 config bw 128kbit/s
        $fwcmd pipe 4 config bw 128kbit/s

    else

        $fwcmd add 65000 pass all from any to any

    fi

elif [ "${firewall_type}" = "client" ]; then
 

3) bridge を有効にする。
        # sysctl -w net.link.ether.bridge=1
        # sysctl -w net.link.ether.bridge_ipfw=1
 
 

帯域制御の制限下における http proxy server のネットワーク負荷状況。
http://eatklein.yz.yamagata-u.ac.jp/mrtg/stats/wwwproxy/wwwproxy.1.html
http://eatklein.yz.yamagata-u.ac.jp/mrtg/stats/wwwproxy/wwwproxy.2.html

戻る。