Oracle Solaris 11 ExpressでPPPoEルータとかIPv6ルータとか @n12i nakaji@jp.freebsd.org
用意するもの Oracle Solaris 11 Express(以後、S11)を動かすマシン 例えば、FUJITSU PRIMERGY MX130 S1 S11のインストールメディア http://www.oracle.com/technetwork/server-storage/solaris11/downloads/index.html ロープロファイルのPCIまたはPCI ExpressのNIC ルータだから物理インターフェースが2個以上あるとやりやすい ウェブが見られる別のマシン(あると便利)
FUJITSU PRIMERGY MX130 S1 NTT-Xストアで2011年3月20日頃、12980円 1990年に発売されたSONY NWS-3460は195万円 2000年に発売されたNEC MC/R550は98000円
おまけ:NWS-3460 and MC/R550 OSC2011@名古屋にて どちらもNetBSD 5.1動作
わが家のネットワーク構成 (図は割愛します)
作業 nwamを無効にする PPPoEでOCNに接続する ipfilter/ipnatを設定する DHCPサーバ for 192.168.1.0/24 IPv6ルータにも 参考文献 http://download.oracle.com/docs/cd/E19963-01/html/821-1453/toc.html オンラインマニュアル
nwamを無効にする svcadm disable svc:/network/physical:nwam svcadm enable svc:/network/physical:default
PPPoEでOCNに接続 e1000gを外界へ /etc/ppp/pppoe.ifにe1000g0と書く /etc/ppp/peers/myispファイルを書く /etc/init.d/pppdに少し書き足す 再起動する
/etc/ppp/peers/myisp それぞれのオプションの意味・役割は、pppd(1M)を参照下さい $ cat /etc/ppp/peers/myisp sppptun mtu 1438 plugin pppoe.so connect "/usr/lib/inet/pppoec e1000g0" noccp noauth user myauthname password password defaultroute aa.bb.cc.dd: OCNさんはaa.bb.cc.(dd+1)をくれるので、書き換えるため
/etc/init.d/pppdをちょっこし加筆 $ LC_TIME=C diff -u /tmp/pppd /etc/init.d/pppd --- /tmp/pppd Thu Mar 4 08:44:54 2010 +++ /etc/init.d/pppd Sun Apr 3 17:07:35 2011 @@ -26,6 +26,7 @@ PATH=/sbin:/usr/bin:/usr/sbin; export PATH PPPDIR=/etc/ppp; export PPPDIR +PPPCALL=myisp; export PPPCALL case "$1" in 'start') @@ -55,6 +56,9 @@ if [ -f $PPPDIR/pppoe ] && [ -x /usr/lib/inet/pppoed ]; then /usr/lib/inet/pppoed >/dev/null fi + if [ -f $PPPDIR/peers/$PPPCALL -a -x /usr/bin/pppd ]; then + /usr/bin/pppd call $PPPCALL >/dev/null 2>&1 + fi ;; 'stop') これで、sppp0ができる
ipadm show-if $ ipadm show-if IFNAME STATE CURRENT PERSISTENT lo0 ok -m-v------46 --- bge0 ok bm--------46 -46 rge0 ok bm--------46 -46 sppp0 ok -mp-------4- ---
ファイアウォールの設定とか 赤色方向でファイアウォールを設定する 黄色方向はアドレス変換(NAT)する 入ってくるものはほぼブロック 出ていくものも全部は通さない 黄色方向はアドレス変換(NAT)する 水色方向はアドレス変換(NAT)しない (bge0) (rge0)
ipfilter/ipnatを設定する あっちとこっちのNICにIPアドレスを設定する ipadm create-addr -T static 192.168.1.1/24 bge0/v4 ipadm create-addr -T static aa.bb.cc.dd/29 rge0/v4 /etc/ipf/ipf.confと/etc/ipf/ipnat.confを適当に書く svc.ipfdにipf.confをわからせる→svc.ipfd(1M)参照 svccfg -s ipfilter:default setprop firewall_config_default/policy = astring: “custom” svccfg -s ipfilter:default setprop firewall_config_default/custom_policy_file = astring: “/etc/ipf/ipf.conf”
ゲートウェイ・ファイアウォール有効 svcadm enable svc:/network/ipv4-forwarding:default svcadm enable svc:/network/ipfilter:default
/etc/ipf/ipf.confの例 sppp0(e1000g)経由の外界との遮断を主に block in log on spp0 all head 100 block in log proto udp all group 100 and so on 出ていくのもちょっと制限 block out log on spp0 all head 150 block out log proto tcp from any to any port = 80 group 150 pass out quick proto tcp from aa.bb.cc.xx/32 to any port = 80 flags S/SA keep state group 150
/etc/ipf/ipnat.conf(*)の例 map spp0 192.168.1.1/24 -> aa.bb.cc.dd/32 ... map spp0 192.168.1.1/24 -> aa.bb.cc.dd/32 mssclamp 1386 and so on (*) /usr/bin/svcprop -p config/ipnat_config_file ipfilter
bge0側にDHCPサーバがないと不便 (bge0) (rge0)
DHCPサーバ pkg install service/network/dhcp pkg install network/dhcp/dhcpmgr /usr/sadm/admin/bin/dhcpmgr で設定 特定のNICに特定のIPアドレスを割り当てたいなら、「アドレスの属性」ダイアログで「クライアントID」を「01xxxxxxxxxxxx」とし、「クライアントがこのアドレスを予約」にチェックする 「xxxxxxxxxxxx」は対象NICのMACアドレスからコロン「:」を除き、英字を大文字にしたもの ether 0:19:99:9c:a:7eなら、0019999C0A7E svcadm enable svc:/network/dhcp-server:default
IPv6も使うようにしとかんとね 2001:xxxx:yyyy:0::/64 2001:xxxx:yyyy:1::/64 bge0=2001:xxxx:yyy:1::1 2001:xxxx:yyyy:1::/64 2001:xxxx:yyyy:0::/64 rge0=2001:xxxx:yyy:0::2
IPv6ルータ FreeBSDのdtcpclientでFeel6へのトンネル既存 あっちとこっちのNICにIPv6アドレスを設定する 2001:xxxx:yyyy:0::/64 (rge0)←→(bge0) 2001:xxxx:yyyy:1::/64 ipadm create-addr -T addrconf bge0/v6 ipadm create-addr -T static -a 2001:xxxx:yyyy:1::1 bge0/v6add ipadm create-addr -T addrconf rge0/v6 ipadm create-addr -T static -a 2001:xxxx:yyyy:0::2 rge0/v6add
IPv6ルータ デフォルトルートを設定 /etc/inet/ndpd.confを適当に書く route -p add -inet6 default 2001:xxxx:yyyy:0::1 /etc/inet/static_routesに記録される /etc/inet/ndpd.confを適当に書く ifdefault AdvSendAdvertisements on prefixdefault AdvOnLinkFlag on AdvAutonomousFlag on if bge0 AdvSendAdvertisements 1 prefix 2001:xxxx:yyyy:1::/64 bge0 ipv6-forwarding, routing/ndpを有効にする
まとめ 以前はFreeBSD/i386やNetBSD/i386にさせていたOCNへのPPPoE接続その他をS11で試みた おおむね実現できる Feel6へのDTCP接続は未検証 *BSD用のdtcpclientはコンパイルできなかった OCNのIPv6トンネル接続を申し込んだので、移行準備中 ドキュメントが公式の英文しかなさそうなので、知りたい情報を発見しづらい