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)を経由してアクセスします。
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=2001000849mtu 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=2001000849mtu 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=2001000849mtu 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