ブログ ランキング
インターネットサーバー設定・運用
HOME  | MYBlog  | MAIL 

IP Filter

Solaris10 にバンドルされている IP Filter を有効にする手順です。

環境

 
IPFilter-4.1.9
Solaris 10 5/09 x86
VMware Server 1.0.8

VMware 仮想ネットワーク構成

VMware Server 上でSolaris が動作し、ホストOSの中で閉じた仮想ネットワーク 内のクライアントから IP Filter で NAT 変換して外部にアクセスする構成になります。 仮想OS(Solaris)はインストール済みとし、単一インターフェースで物理ネットワークを経由して 外部にアクセスできているものとします。
インターネットへのアクセスは家庭内ルータの LAN側(192.168.1.1)を経由してアクセスします。

以下、VMware の管理コンソールから、仮想OS(Solaris)に VMwareの仮想NICを一つ追加して IP Filterを有効化する方法手順のメモです。      
ネットワーク情報
IPアドレス ネットワーク構成
Solaris(pcn0:物理LAN側) 192.168.1.29/24 VMnet0(ブリッジ構成)
Solaris(pcn1:仮想LAN側) 192.168.2.2/24 VMnet1(ホスト構成)
仮想クライアント 192.168.1.x/24 VMnet1(ホスト構成)

LAN インターフェースの追加

VMware の管理コンソール上で Solaris にVMnet1(ホスト構成)を追加して Soalris を起動します。


Solaris にログインして、追加された仮想 NIC 名を調べます。

# dladm show-link
pcn0            タイプ: レガシー        mtu: 1500       デバイス: pcn0
pcn1            タイプ: レガシー        mtu: 1500       デバイス: pcn1

pcn0 は元から設定されている「ブリッジ構成」のネットワークで、追加した NIC が pcn1 で認識されています。

ifconfig -a コマンドでインターフェースの状態を表示します。

# ifconfig -a
lo0: flags=2001000849 mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
pcn0: flags=1100843 mtu 1500 index 2
        inet 192.168.1.29 netmask ffffff00 broadcast 192.168.1.255
        ether 0:c:29:1e:d2:b5

ifconfig -a の出力結果から lo0 と pcn0 の2つのみが表示されています。 追加した pcn1 を有効にするため plumb します。

# ifconfig pcn1 plumb

ifconfig -a コマンドで pcn1 が表示されることを確認

# ifconfig -a
lo0: flags=2001000849 mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
pcn0: flags=1100843 mtu 1500 index 2
        inet 192.168.1.29 netmask ffffff00 broadcast 192.168.1.255
        ether 0:c:29:1e:d2:b5
pcn1: flags=1100843 mtu 1500 index 4
        inet 0.0.0.0 netmask ff000000
        ether 0:c:29:1e:d2:bf

追加した pcn1 に IPアドレスを設定します。

# ifconfig pcn1 192.168.2.2 netmask 255.255.255.0 up
# ifconfig -a
lo0: flags=2001000849 mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
pcn0: flags=1100843 mtu 1500 index 2
        inet 192.168.1.29 netmask ffffff00 broadcast 192.168.1.255
        ether 0:c:29:1e:d2:b5
pcn1: flags=1100843 mtu 1500 index 6
        inet 192.168.2.2 netmask ffffff00 broadcast 192.168.2.255
        ether 0:c:29:1e:d2:bf

リブート後もインタフェースの構成が保持されるように /etc/hostname.pcn1 を作成します。

vi /etc/hostname.pcn1
192.168.2.2

追加した pcn1 インタフェース用のエントリを /etc/inet/hosts ファイルに追加します。

# vi /etc/inet/hosts
::1     localhost
127.0.0.1       localhost
192.168.1.29    primetower      loghost
192.168.2.2     primetower.pcn1

再起動して pcn1 の構成が保持されていることを確認します。

# reboot -- -r

IP Filter の設定

SMF を使用して ipfilter を起動します。

# svcs -a|grep filter
disabled 20:01:26 svc:/network/ipfilter:default

# svcadm enable ipfilter
# svcs -a|grep filter
online 20:35:55 svc:/network/ipfilter:default

IP Forward をオンにします。

# svcadm enable /network/ipv4-forwarding

フィルタリングルールを /etc/ipf/ipf.conf に記述します。

例として pcn1 -> pcn0(内側 -> 外側)のアクセスは無条件で許可するという簡単なルールを以下に示します。

[ipf.conf]
block in from any to any
pass in on pcn1 from 192.168.2.0/24 to any keep state
block out from any to any

1行目はすべてのインターフェースに入ってくるパケットを拒否するルールです。
2行目は pcn1 側のネットワーク(始点アドレス 192.168.2.0/24)からのパケットを許可します。
"keep state" は、戻りのパケットを許可するオプションです。
3行目は出て行くパケットを拒否します。

IP Filter の特徴として、最後にマッチしたルールが適用されます。
最初の行ですべて拒否するルールを入れて、以降の行で許可するルールを記述します。
ただし、quick キーワードを付けたルール行にマッチすると、以降のルール検索は行わないません。
同じ内容のルールを以下の順に記述することができます。

pass in quick on pcn1 from 192.168.2.0/24 to any keep state
block in from any to any
block out from any to any

次に NAT の設定を記述します。

[ipnat.conf]
map pcn0 192.168.2.0/24 -> 192.168.1.29/32 portmap tcp/udp 40000:60000
map pcn0 192.168.2.0/24 -> 192.168.1.29/32

上記 NAT ルールは pcn0 から出て行くパケットで始点アドレスが192.168.2.0/24の場合、始点アドレスを192.168.1.29に変換します。


新しいルールを読み込みます


# ipf -Fa -f /etc/ipf/ipf.conf