別々のNICに同じIPv4アドレスの割り当て自体はできる。但し、同時に活性化はできない。(自分の予想とおりであった)
<事前準備>
bash-3.00# cp /etc/hostname.e1000g0 /etc/hostname.e1000g1
bash-3.00# cp /etc/hostname.e1000g0 /etc/hostname6.e1000g0
bash-3.00# cp /etc/hostname.e1000g0 /etc/hostname6.e1000g1
bash-3.00# more /etc/hosts
#
# Internet host table
#
127.0.0.1 localhost
::1 localhost
172.16.20.5 sol10 loghost
bash-3.00# reboot
bash-3.00# ifconfig e1000g1 inet6 up
bash-3.00# ifconfig e1000g0 inet6 up
<実行手順>
bash-3.00# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 172.16.20.5 netmask ffffff00 broadcast 172.16.20.255
ether 0:c:29:d2:61:36
e1000g1: flags=1000842<BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
inet 172.16.20.5 netmask ffffff00 broadcast 172.16.20.255
ether 0:c:29:d2:61:40
lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
inet6 ::1/128
e1000g0: flags=2004841<UP,RUNNING,MULTICAST,DHCP,IPv6> mtu 1500 index 2
inet6 fe80::20c:29ff:fed2:6136/10
ether 0:c:29:d2:61:36
e1000g1: flags=2004841<UP,RUNNING,MULTICAST,DHCP,IPv6> mtu 1500 index 3
inet6 fe80::20c:29ff:fed2:6140/10
ether 0:c:29:d2:61:40
bash-3.00# ifconfig e1000g1 inet up
ifconfig: setifflags: SIOCSLIFFLAGS: e1000g1: Cannot assign requested address
なお、以下の場合もダメだった。
(1) /etc/hostsファイルに同じIPアドレス(172.16.20.5)で違うホスト名(sol10以外)を割り当てる。
(2) /etc/hostname.e1000g1も(1)で設定した違うホスト名にしてリブートする。
2012年12月9日日曜日
2012年10月26日金曜日
Solaris10でのDHCPデバッグ
DHCPプロトコルは以下のとおり。矢印の左側がDHCPクライアント、右側がDHCPサーバを指す。
<IPアドレス未取得の場合>
→Message type = DHCPDISCOVER
←Message type = DHCPOFFER
→Message type = DHCPREQUEST
←Message type = DHCPACK
<IPアドレス取得済みマシンがリブートした時>
→Message type = DHCPREQUEST
←Message type = DHCPACK
Solaris10にてDHCPのデバッグとして、2通りのやり方がある。
1.DHCPサーバ側でパケットをキャプチャする
2.DHCPサーバをデバッグモードで動かす
●DHCPサーバ側でパケットをキャプチャする
以下、snoop実行時にDHCPクライアントが再起動した時の例。
bash-3.00# snoop -d e1000g0 -o /tmp/snoop.out udp port 67 or udp port 68
DHCPクライアントが再起動後、DHCPサーバ側にて[Ctrl]+[C]で閉じる。
bash-3.00# snoop -i /tmp/snoop.out -x0 -v
ETHER: ----- Ether Header -----
ETHER:
ETHER: Packet 1 arrived at 5:04:33.73759
ETHER: Packet size = 342 bytes
ETHER: Destination = ff:ff:ff:ff:ff:ff, (broadcast)
ETHER: Source = 0:c:29:67:84:89,
ETHER: Ethertype = 0800 (IP)
ETHER:
IP: ----- IP Header -----
IP:
IP: Version = 4
IP: Header length = 20 bytes
IP: Type of service = 0x00
IP: xxx. .... = 0 (precedence)
IP: ...0 .... = normal delay
IP: .... 0... = normal throughput
IP: .... .0.. = normal reliability
IP: .... ..0. = not ECN capable transport
IP: .... ...0 = no ECN congestion experienced
IP: Total length = 328 bytes
IP: Identification = 0
IP: Flags = 0x4
IP: .1.. .... = do not fragment
IP: ..0. .... = last fragment
IP: Fragment offset = 0 bytes
IP: Time to live = 255 seconds/hops
IP: Protocol = 17 (UDP)
IP: Header checksum = 7aa5
IP: Source address = 0.0.0.0, OLD-BROADCAST
IP: Destination address = 255.255.255.255, BROADCAST
IP: No options
IP:
UDP: ----- UDP Header -----
UDP:
UDP: Source port = 68
UDP: Destination port = 67 (BOOTPS)
UDP: Length = 308
UDP: Checksum = 8943
UDP:
DHCP: ----- Dynamic Host Configuration Protocol -----
DHCP:
DHCP: Hardware address type (htype) = 1 (Ethernet (10Mb))
DHCP: Hardware address length (hlen) = 6 octets
DHCP: Relay agent hops = 0
DHCP: Transaction ID = 0x5b32ba17
DHCP: Time since boot = 0 seconds
DHCP: Flags = 0x0000
DHCP: Client address (ciaddr) = 0.0.0.0
DHCP: Your client address (yiaddr) = 0.0.0.0
DHCP: Next server address (siaddr) = 0.0.0.0
DHCP: Relay agent address (giaddr) = 0.0.0.0
DHCP: Client hardware address (chaddr) = 00:0C:29:67:84:89
DHCP:
DHCP: ----- (Options) field options -----
DHCP:
DHCP: Message type = DHCPREQUEST
DHCP: Requested IP Address = 192.168.10.3
DHCP: IP Address Lease Time = -1 seconds
DHCP: Maximum DHCP Message Size = 1472 bytes
DHCP: Client Class Identifier = "SUNW.i86pc"
DHCP: Requested Options:
DHCP: 1 (Subnet Mask)
DHCP: 3 (Router)
DHCP: 6 (DNS Servers)
DHCP: 12 (Client Hostname)
DHCP: 15 (DNS Domain Name)
DHCP: 28 (Broadcast Address)
DHCP: 43 (Vendor Specific Options)
DHCP: Client Hostname = sol10-dhcp-client
0: ffff ffff ffff 000c 2967 8489 0800 4500 ........)g....E.
16: 0148 0000 4000 ff11 7aa5 0000 0000 ffff .H..@...z.......
32: ffff 0044 0043 0134 8943 0101 0600 5b32 ...D.C.4.C....[2
48: ba17 0000 0000 0000 0000 0000 0000 0000 ................
64: 0000 0000 0000 000c 2967 8489 0000 0000 ........)g......
80: 0000 0000 0000 0000 0000 0000 0000 0000 ................
96: 0000 0000 0000 0000 0000 0000 0000 0000 ................
112: 0000 0000 0000 0000 0000 0000 0000 0000 ................
128: 0000 0000 0000 0000 0000 0000 0000 0000 ................
144: 0000 0000 0000 0000 0000 0000 0000 0000 ................
160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
176: 0000 0000 0000 0000 0000 0000 0000 0000 ................
192: 0000 0000 0000 0000 0000 0000 0000 0000 ................
208: 0000 0000 0000 0000 0000 0000 0000 0000 ................
224: 0000 0000 0000 0000 0000 0000 0000 0000 ................
240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
256: 0000 0000 0000 0000 0000 0000 0000 0000 ................
272: 0000 0000 0000 6382 5363 3501 0332 04c0 ......c.Sc5..2..
288: a80a 0333 04ff ffff ff39 0205 c03c 0a53 ...3.....9...<.S
304: 554e 572e 6938 3670 6337 0701 0306 0c0f UNW.i86pc7......
320: 1c2b 0c11 736f 6c31 302d 6468 6370 2d63 .+..sol10-dhcp-c
336: 6c69 656e 74ff lient.
ETHER: ----- Ether Header -----
ETHER:
ETHER: Packet 2 arrived at 5:04:33.75531
ETHER: Packet size = 342 bytes
ETHER: Destination = 0:c:29:67:84:89,
ETHER: Source = 0:c:29:52:33:cc,
ETHER: Ethertype = 0800 (IP)
ETHER:
IP: ----- IP Header -----
IP:
IP: Version = 4
IP: Header length = 20 bytes
IP: Type of service = 0x00
IP: xxx. .... = 0 (precedence)
IP: ...0 .... = normal delay
IP: .... 0... = normal throughput
IP: .... .0.. = normal reliability
IP: .... ..0. = not ECN capable transport
IP: .... ...0 = no ECN congestion experienced
IP: Total length = 328 bytes
IP: Identification = 21163
IP: Flags = 0x4
IP: .1.. .... = do not fragment
IP: ..0. .... = last fragment
IP: Fragment offset = 0 bytes
IP: Time to live = 255 seconds/hops
IP: Protocol = 17 (UDP)
IP: Header checksum = 0000
IP: Source address = 192.168.10.4, sol10-dhcp-server
IP: Destination address = 192.168.10.3, 192.168.10.3
IP: No options
IP:
UDP: ----- UDP Header -----
UDP:
UDP: Source port = 67
UDP: Destination port = 68 (BOOTPC)
UDP: Length = 308
UDP: Checksum = 969D
UDP:
DHCP: ----- Dynamic Host Configuration Protocol -----
DHCP:
DHCP: Hardware address type (htype) = 1 (Ethernet (10Mb))
DHCP: Hardware address length (hlen) = 6 octets
DHCP: Relay agent hops = 0
DHCP: Transaction ID = 0x5b32ba17
DHCP: Time since boot = 0 seconds
DHCP: Flags = 0x0000
DHCP: Client address (ciaddr) = 0.0.0.0
DHCP: Your client address (yiaddr) = 192.168.10.3
DHCP: Next server address (siaddr) = 0.0.0.0
DHCP: Relay agent address (giaddr) = 0.0.0.0
DHCP: Client hardware address (chaddr) = 00:0C:29:67:84:89
DHCP:
DHCP: ----- (Options) field options -----
DHCP:
DHCP: Message type = DHCPACK
DHCP: DHCP Server Identifier = 192.168.10.4
DHCP: UTC Time Offset = 32400 seconds
DHCP: RFC868 Time Servers at = 192.168.10.4
DHCP: IP Address Lease Time = 86400 seconds
DHCP: Broadcast Address = 192.168.10.255
DHCP: Perform Router Discovery Flag flag = 0x1
DHCP: Subnet Mask = 255.255.255.0
0: 000c 2967 8489 000c 2952 33cc 0800 4500 ..)g....)R3...E.
16: 0148 52ab 4000 ff11 0000 c0a8 0a04 c0a8 .HR.@...........
32: 0a03 0043 0044 0134 969d 0201 0600 5b32 ...C.D.4......[2
48: ba17 0000 0000 0000 0000 c0a8 0a03 0000 ................
64: 0000 0000 0000 000c 2967 8489 0000 0000 ........)g......
80: 0000 0000 0000 0000 0000 0000 0000 0000 ................
96: 0000 0000 0000 0000 0000 0000 0000 0000 ................
112: 0000 0000 0000 0000 0000 0000 0000 0000 ................
128: 0000 0000 0000 0000 0000 0000 0000 0000 ................
144: 0000 0000 0000 0000 0000 0000 0000 0000 ................
160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
176: 0000 0000 0000 0000 0000 0000 0000 0000 ................
192: 0000 0000 0000 0000 0000 0000 0000 0000 ................
208: 0000 0000 0000 0000 0000 0000 0000 0000 ................
224: 0000 0000 0000 0000 0000 0000 0000 0000 ................
240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
256: 0000 0000 0000 0000 0000 0000 0000 0000 ................
272: 0000 0000 0000 6382 5363 3501 0536 04c0 ......c.Sc5..6..
288: a80a 0402 0400 007e 9004 04c0 a80a 0433 .......~.......3
304: 0400 0151 801c 04c0 a80a ff1f 0101 0104 ...Q............
320: ffff ff00 ff00 0000 0000 0000 0000 0000 ................
336: 0000 0000 0000 ......
●DHCPサーバをデバッグモードで動かす
以下、デバッグモードで実行時にDHCPクライアントが再起動した時の例。
bash-3.00# svcadm disable -t svc:/network/dhcp-server
bash-3.00# /usr/lib/inet/in.dhcpd -d -v
50899ead: Daemon Version: 3.5
50899ead: Maximum relay hops: 4
50899ead: Run mode is: DHCP Server Mode.
50899ead: Datastore resource: SUNWfiles
50899ead: Location: /var/dhcp
50899ead: DHCP offer TTL: 10
50899ead: ICMP validation timeout: 1000 milliseconds, Attempts: 1.
50899ead: Name service update enabled, timeout: 15 seconds
50899ead: Maximum concurrent clients: 1024
50899ead: Maximum threads: 256
50899ead: Read 3 entries from DHCP macro database on Fri Oct 26 05:18:53 2012
50899ead: Monitor (0003/e1000g0) started...
50899ead: Thread Id: 0003 - Monitoring Interface: e1000g0 *****
50899ead: MTU: 1500 Type: SOCKET
50899ead: Broadcast: 192.168.10.255
50899ead: Monitor (0004/e1000g1) started...
50899ead: Thread Id: 0004 - Monitoring Interface: e1000g1 *****
50899ead: MTU: 1500 Type: SOCKET
50899ead: Broadcast: 10.20.30.255
50899ead: Netmask: 255.255.255.0
50899ead: Netmask: 255.255.255.0
50899ead: Address: 192.168.10.4
50899ead: Address: 10.20.30.4
★ここで待ち
50899f86: Datagram received on network device: e1000g1(limited broadcast)
50899f86: Datagram received on network device: e1000g0(limited broadcast)
50899f86: e1000g1(limited broadcast): There is no 10.20.30.0 dhcp-network table for DHCP client's network.
50899f86: name_avail: unqualified name
qualified with local domain: sol10-dhcp-client.private.net.
50899f86: name_avail(T): gethostbyname_r failed
50899f86: name service update on behalf of client with ID 000C29678489 failed because requested name was not fully-qualified and no DNS domain name was specified for this client in the dhcptab
50899f86: do_nsupdate: dns_puthostent returned -1
50899f86: Client: 01000C29678489 maps to IP: 192.168.10.3
50899f86: Unicasting datagram to 192.168.10.3 address.
50899f86: Adding ARP entry: 192.168.10.3 == 000C29678489
★[Ctrl]+[C]押下
^C5089a050: Signal: INT received...Exiting
5089a050: Closing interface: e1000g0
5089a050: Monitor (0003/e1000g0): exiting.
5089a050: Interface statistics for: e1000g0 **************
5089a050: Pending DHCP offers: 0
5089a050: Total Packets Transmitted: 1
5089a050: Total Packets Received: 1
5089a050: Total Packet Duplicates: 0
5089a050: Total Packets Dropped: 0
5089a050: Total Packets Processed: 1
5089a050: Total Protocol Errors: 0
5089a050: Closing interface: e1000g1
5089a050: Monitor (0004/e1000g1): exiting.
5089a050: Interface statistics for: e1000g1 **************
5089a050: Pending DHCP offers: 0
5089a050: Total Packets Transmitted: 0
5089a050: Total Packets Received: 1
5089a050: Total Packet Duplicates: 0
5089a050: Total Packets Dropped: 0
5089a050: Total Packets Processed: 0
5089a050: Total Protocol Errors: 0
5089a050: Daemon terminated.
<IPアドレス未取得の場合>
→Message type = DHCPDISCOVER
←Message type = DHCPOFFER
→Message type = DHCPREQUEST
←Message type = DHCPACK
<IPアドレス取得済みマシンがリブートした時>
→Message type = DHCPREQUEST
←Message type = DHCPACK
Solaris10にてDHCPのデバッグとして、2通りのやり方がある。
1.DHCPサーバ側でパケットをキャプチャする
2.DHCPサーバをデバッグモードで動かす
●DHCPサーバ側でパケットをキャプチャする
以下、snoop実行時にDHCPクライアントが再起動した時の例。
bash-3.00# snoop -d e1000g0 -o /tmp/snoop.out udp port 67 or udp port 68
DHCPクライアントが再起動後、DHCPサーバ側にて[Ctrl]+[C]で閉じる。
bash-3.00# snoop -i /tmp/snoop.out -x0 -v
ETHER: ----- Ether Header -----
ETHER:
ETHER: Packet 1 arrived at 5:04:33.73759
ETHER: Packet size = 342 bytes
ETHER: Destination = ff:ff:ff:ff:ff:ff, (broadcast)
ETHER: Source = 0:c:29:67:84:89,
ETHER: Ethertype = 0800 (IP)
ETHER:
IP: ----- IP Header -----
IP:
IP: Version = 4
IP: Header length = 20 bytes
IP: Type of service = 0x00
IP: xxx. .... = 0 (precedence)
IP: ...0 .... = normal delay
IP: .... 0... = normal throughput
IP: .... .0.. = normal reliability
IP: .... ..0. = not ECN capable transport
IP: .... ...0 = no ECN congestion experienced
IP: Total length = 328 bytes
IP: Identification = 0
IP: Flags = 0x4
IP: .1.. .... = do not fragment
IP: ..0. .... = last fragment
IP: Fragment offset = 0 bytes
IP: Time to live = 255 seconds/hops
IP: Protocol = 17 (UDP)
IP: Header checksum = 7aa5
IP: Source address = 0.0.0.0, OLD-BROADCAST
IP: Destination address = 255.255.255.255, BROADCAST
IP: No options
IP:
UDP: ----- UDP Header -----
UDP:
UDP: Source port = 68
UDP: Destination port = 67 (BOOTPS)
UDP: Length = 308
UDP: Checksum = 8943
UDP:
DHCP: ----- Dynamic Host Configuration Protocol -----
DHCP:
DHCP: Hardware address type (htype) = 1 (Ethernet (10Mb))
DHCP: Hardware address length (hlen) = 6 octets
DHCP: Relay agent hops = 0
DHCP: Transaction ID = 0x5b32ba17
DHCP: Time since boot = 0 seconds
DHCP: Flags = 0x0000
DHCP: Client address (ciaddr) = 0.0.0.0
DHCP: Your client address (yiaddr) = 0.0.0.0
DHCP: Next server address (siaddr) = 0.0.0.0
DHCP: Relay agent address (giaddr) = 0.0.0.0
DHCP: Client hardware address (chaddr) = 00:0C:29:67:84:89
DHCP:
DHCP: ----- (Options) field options -----
DHCP:
DHCP: Message type = DHCPREQUEST
DHCP: Requested IP Address = 192.168.10.3
DHCP: IP Address Lease Time = -1 seconds
DHCP: Maximum DHCP Message Size = 1472 bytes
DHCP: Client Class Identifier = "SUNW.i86pc"
DHCP: Requested Options:
DHCP: 1 (Subnet Mask)
DHCP: 3 (Router)
DHCP: 6 (DNS Servers)
DHCP: 12 (Client Hostname)
DHCP: 15 (DNS Domain Name)
DHCP: 28 (Broadcast Address)
DHCP: 43 (Vendor Specific Options)
DHCP: Client Hostname = sol10-dhcp-client
0: ffff ffff ffff 000c 2967 8489 0800 4500 ........)g....E.
16: 0148 0000 4000 ff11 7aa5 0000 0000 ffff .H..@...z.......
32: ffff 0044 0043 0134 8943 0101 0600 5b32 ...D.C.4.C....[2
48: ba17 0000 0000 0000 0000 0000 0000 0000 ................
64: 0000 0000 0000 000c 2967 8489 0000 0000 ........)g......
80: 0000 0000 0000 0000 0000 0000 0000 0000 ................
96: 0000 0000 0000 0000 0000 0000 0000 0000 ................
112: 0000 0000 0000 0000 0000 0000 0000 0000 ................
128: 0000 0000 0000 0000 0000 0000 0000 0000 ................
144: 0000 0000 0000 0000 0000 0000 0000 0000 ................
160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
176: 0000 0000 0000 0000 0000 0000 0000 0000 ................
192: 0000 0000 0000 0000 0000 0000 0000 0000 ................
208: 0000 0000 0000 0000 0000 0000 0000 0000 ................
224: 0000 0000 0000 0000 0000 0000 0000 0000 ................
240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
256: 0000 0000 0000 0000 0000 0000 0000 0000 ................
272: 0000 0000 0000 6382 5363 3501 0332 04c0 ......c.Sc5..2..
288: a80a 0333 04ff ffff ff39 0205 c03c 0a53 ...3.....9...<.S
304: 554e 572e 6938 3670 6337 0701 0306 0c0f UNW.i86pc7......
320: 1c2b 0c11 736f 6c31 302d 6468 6370 2d63 .+..sol10-dhcp-c
336: 6c69 656e 74ff lient.
ETHER: ----- Ether Header -----
ETHER:
ETHER: Packet 2 arrived at 5:04:33.75531
ETHER: Packet size = 342 bytes
ETHER: Destination = 0:c:29:67:84:89,
ETHER: Source = 0:c:29:52:33:cc,
ETHER: Ethertype = 0800 (IP)
ETHER:
IP: ----- IP Header -----
IP:
IP: Version = 4
IP: Header length = 20 bytes
IP: Type of service = 0x00
IP: xxx. .... = 0 (precedence)
IP: ...0 .... = normal delay
IP: .... 0... = normal throughput
IP: .... .0.. = normal reliability
IP: .... ..0. = not ECN capable transport
IP: .... ...0 = no ECN congestion experienced
IP: Total length = 328 bytes
IP: Identification = 21163
IP: Flags = 0x4
IP: .1.. .... = do not fragment
IP: ..0. .... = last fragment
IP: Fragment offset = 0 bytes
IP: Time to live = 255 seconds/hops
IP: Protocol = 17 (UDP)
IP: Header checksum = 0000
IP: Source address = 192.168.10.4, sol10-dhcp-server
IP: Destination address = 192.168.10.3, 192.168.10.3
IP: No options
IP:
UDP: ----- UDP Header -----
UDP:
UDP: Source port = 67
UDP: Destination port = 68 (BOOTPC)
UDP: Length = 308
UDP: Checksum = 969D
UDP:
DHCP: ----- Dynamic Host Configuration Protocol -----
DHCP:
DHCP: Hardware address type (htype) = 1 (Ethernet (10Mb))
DHCP: Hardware address length (hlen) = 6 octets
DHCP: Relay agent hops = 0
DHCP: Transaction ID = 0x5b32ba17
DHCP: Time since boot = 0 seconds
DHCP: Flags = 0x0000
DHCP: Client address (ciaddr) = 0.0.0.0
DHCP: Your client address (yiaddr) = 192.168.10.3
DHCP: Next server address (siaddr) = 0.0.0.0
DHCP: Relay agent address (giaddr) = 0.0.0.0
DHCP: Client hardware address (chaddr) = 00:0C:29:67:84:89
DHCP:
DHCP: ----- (Options) field options -----
DHCP:
DHCP: Message type = DHCPACK
DHCP: DHCP Server Identifier = 192.168.10.4
DHCP: UTC Time Offset = 32400 seconds
DHCP: RFC868 Time Servers at = 192.168.10.4
DHCP: IP Address Lease Time = 86400 seconds
DHCP: Broadcast Address = 192.168.10.255
DHCP: Perform Router Discovery Flag flag = 0x1
DHCP: Subnet Mask = 255.255.255.0
0: 000c 2967 8489 000c 2952 33cc 0800 4500 ..)g....)R3...E.
16: 0148 52ab 4000 ff11 0000 c0a8 0a04 c0a8 .HR.@...........
32: 0a03 0043 0044 0134 969d 0201 0600 5b32 ...C.D.4......[2
48: ba17 0000 0000 0000 0000 c0a8 0a03 0000 ................
64: 0000 0000 0000 000c 2967 8489 0000 0000 ........)g......
80: 0000 0000 0000 0000 0000 0000 0000 0000 ................
96: 0000 0000 0000 0000 0000 0000 0000 0000 ................
112: 0000 0000 0000 0000 0000 0000 0000 0000 ................
128: 0000 0000 0000 0000 0000 0000 0000 0000 ................
144: 0000 0000 0000 0000 0000 0000 0000 0000 ................
160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
176: 0000 0000 0000 0000 0000 0000 0000 0000 ................
192: 0000 0000 0000 0000 0000 0000 0000 0000 ................
208: 0000 0000 0000 0000 0000 0000 0000 0000 ................
224: 0000 0000 0000 0000 0000 0000 0000 0000 ................
240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
256: 0000 0000 0000 0000 0000 0000 0000 0000 ................
272: 0000 0000 0000 6382 5363 3501 0536 04c0 ......c.Sc5..6..
288: a80a 0402 0400 007e 9004 04c0 a80a 0433 .......~.......3
304: 0400 0151 801c 04c0 a80a ff1f 0101 0104 ...Q............
320: ffff ff00 ff00 0000 0000 0000 0000 0000 ................
336: 0000 0000 0000 ......
●DHCPサーバをデバッグモードで動かす
以下、デバッグモードで実行時にDHCPクライアントが再起動した時の例。
bash-3.00# svcadm disable -t svc:/network/dhcp-server
bash-3.00# /usr/lib/inet/in.dhcpd -d -v
50899ead: Daemon Version: 3.5
50899ead: Maximum relay hops: 4
50899ead: Run mode is: DHCP Server Mode.
50899ead: Datastore resource: SUNWfiles
50899ead: Location: /var/dhcp
50899ead: DHCP offer TTL: 10
50899ead: ICMP validation timeout: 1000 milliseconds, Attempts: 1.
50899ead: Name service update enabled, timeout: 15 seconds
50899ead: Maximum concurrent clients: 1024
50899ead: Maximum threads: 256
50899ead: Read 3 entries from DHCP macro database on Fri Oct 26 05:18:53 2012
50899ead: Monitor (0003/e1000g0) started...
50899ead: Thread Id: 0003 - Monitoring Interface: e1000g0 *****
50899ead: MTU: 1500 Type: SOCKET
50899ead: Broadcast: 192.168.10.255
50899ead: Monitor (0004/e1000g1) started...
50899ead: Thread Id: 0004 - Monitoring Interface: e1000g1 *****
50899ead: MTU: 1500 Type: SOCKET
50899ead: Broadcast: 10.20.30.255
50899ead: Netmask: 255.255.255.0
50899ead: Netmask: 255.255.255.0
50899ead: Address: 192.168.10.4
50899ead: Address: 10.20.30.4
★ここで待ち
50899f86: Datagram received on network device: e1000g1(limited broadcast)
50899f86: Datagram received on network device: e1000g0(limited broadcast)
50899f86: e1000g1(limited broadcast): There is no 10.20.30.0 dhcp-network table for DHCP client's network.
50899f86: name_avail: unqualified name
qualified with local domain: sol10-dhcp-client.private.net.
50899f86: name_avail(T): gethostbyname_r failed
50899f86: name service update on behalf of client with ID 000C29678489 failed because requested name was not fully-qualified and no DNS domain name was specified for this client in the dhcptab
50899f86: do_nsupdate: dns_puthostent returned -1
50899f86: Client: 01000C29678489 maps to IP: 192.168.10.3
50899f86: Unicasting datagram to 192.168.10.3 address.
50899f86: Adding ARP entry: 192.168.10.3 == 000C29678489
★[Ctrl]+[C]押下
^C5089a050: Signal: INT received...Exiting
5089a050: Closing interface: e1000g0
5089a050: Monitor (0003/e1000g0): exiting.
5089a050: Interface statistics for: e1000g0 **************
5089a050: Pending DHCP offers: 0
5089a050: Total Packets Transmitted: 1
5089a050: Total Packets Received: 1
5089a050: Total Packet Duplicates: 0
5089a050: Total Packets Dropped: 0
5089a050: Total Packets Processed: 1
5089a050: Total Protocol Errors: 0
5089a050: Closing interface: e1000g1
5089a050: Monitor (0004/e1000g1): exiting.
5089a050: Interface statistics for: e1000g1 **************
5089a050: Pending DHCP offers: 0
5089a050: Total Packets Transmitted: 0
5089a050: Total Packets Received: 1
5089a050: Total Packet Duplicates: 0
5089a050: Total Packets Dropped: 0
5089a050: Total Packets Processed: 0
5089a050: Total Protocol Errors: 0
5089a050: Daemon terminated.
2012年9月17日月曜日
Redmineの構築(その2)
Windows 7上でRedmine2.x系の構築を行う。
・apache
apacheのサイト(http://httpd.apache.org/download.cgi#apache22)から以下をダウンロードして、インストールする。
httpd-2.2.22-win32-x86-no_ssl.msi
・JRE
http://www.oracle.com/technetwork/java/javase/downloads/jre6u35-downloads-1836473.html)より、以下をダウンロードして、インストールする。
jre-6u35-windows-i586.exe
・MySQL
MySQLのGUIを使うため、マイクロソフト(http://www.microsoft.com/ja-jp/net/netfx4/download.aspx)より、.NET Framework 4をインストールする。
MySQLのサイト(http://dev.mysql.com/downloads/)から以下をダウンロードして、インストールする。
mysql-installer-community-5.5.27.2.msi
・Ruby
Rubyのサイト(http://rubyinstaller.org/downloads/)より、以下をダウンロードして、インストールする。
rubyinstaller-1.8.7-p370.exe
DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe
・redmine
redmineのサイト(http://rubyforge.org/frs/?group_id=1850)より、redmine-2.0.3.zipをダウンロードする。
・ImageMagick
rubyのサイト(http://rubyforge.org/frs/?group_id=12)より、RMagick-2.12.0-ImageMagick-6.5.6-8-Q8.zipをダウンロードする。ファイル解凍後、C:\Tempに置く。ImageMagick-6.5.6-8-Q8-windows-dll.exeを実行し、C/C++ のヘッダーファイルも一緒にインストールする。(インストール時のチェックボックスでチェックをつける。)
<事前準備>
①MySQL
・MySQL Workbenchを起動し、[Open Connection to start querying]より、スキーマredmineを作成する。
・[Manage Security]より、ユーザredmineを作成する。Object Rights、DDL Rights、Other Rightsにて、すべての権限を付与する。
②Devkit
DevkitをC:\Devkitにインストール後、以下を実行する。
C:\Devkit> ruby dk.rb init
C:\Devkit> ruby dk.rb install
ダウンロードしたファイルを解凍して、C:\redmineとする。
③Gemfile
・ImageMagick のインストールディレクトリを環境変数の PATH に追加する。
・ImageMagick のインストールディレクトリ内にある include ディレクトリのパスを環境変数 CPATH に追加する。
・ImageMagick のインストールディレクトリ内にある lib ディレクトリのパスを環境変数 LIBRARY_PATH に追加する。
<Webrickでの構築手順>
・C:\redmine> gem install bundler
・C:\redmine> bundle install
・config/database.example.yml をコピーして config/database.yml を作成する。
また、config/database.yml を編集し、"production"環境用のデータベース設定を行う。
====================================
production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: redmine
====================================
・以下のサイトからダウンロードしたlibmysql.dllをC:\Ruby\binにコピーする。
http://www.dll-files.com/dllindex/dll-files.shtml?libmysql
・C:\Program Files\ImageMagick-6.5.6-Q8\CORE_RL_magick_.dllをC:\Ruby\binにコピーする。
・C:\redmine> rake generate_secret_token
・C:\redmine> rake db:migrate RAILS_ENV=production
・C:\redmine> rake redmine:load_default_data RAILS_ENV=production
Select language: ar, bg, bs, ca, cs, da, de, el, en, en-GB, es, et, eu, fa, fi,fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ja
====================================
Default configuration data loaded.
・C:\redmine> ruby script/rails server webrick -e production
[Ctrl] + Cで閉じる。
<Mongrelでの構築手順>
・C:\redmine> gem install mongrel --pre
・C:\redmine\gemfileに以下を追記。
gem 'mongrel', '>= 1.2.0.pre2'
・C:\redmine> ruby script/rails server mongrel -e production
[Ctrl] + Cで閉じる。
・自動起動させたいと考え、管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> mongrel_rails service::install -N "Redmine" -c "C:\redmine" -p 3000 -e production
・MySQLとの依存関係を持たせたいので、管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> sc config Redmine start= auto depend= MySql55
・但し、自動起動は不可の模様。C:\redmine\log\mongrel.logより
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-3.2.8/lib/active_support/dependencies.rb:251:
in `require': no such file to load -- dispatcher (LoadError)
★unicorn、passengerも同様、Windowsでは動かない。
<thinでの構築手順>
・C:\redmine\gemfileに以下を追記。
gem 'thin'
・C:\redmine> bundle install
・C:\redmine> ruby script\rails server thin -e production
[Ctrl] + Cで閉じる。
・自動起動させたいと考え、http://www.microsoft.com/en-us/download/details.aspx?id=17657より、rktools.exeをダウンロードして、インストールする。
・管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> "C:\Program Files\Windows Resource Kits\Tools\INSTSRV.EXE" redmine_service "C:\Program Files\Windows Resource Kits\Tools\SRVANY.EXE"
・regeditを実行して、レジストリを編集する。
1.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\redmine_serviceに、Parametersという名前のキーを追加する
2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\redmine_service\Parametersに、Application、AppParameters、AppDirectoryという名前の文字列値を新規作成する
Applicationは、Ruby.exeのフルパス。例えば、C:\Ruby\bin\ruby.exe
AppParametersは、thinとthinに渡すパラメータ。例えば、C:\Ruby\bin\thin start -p 3000 -e production
AppDirectoryは、redmineをインストールした場所。例えば、C:\redmine
・MySQLとの依存関係を持たせたいので、管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> sc config redmine_service start= auto depend= MySql55
・リブートする。
<subdirectory化> ※rails3のみ
・C:\redmine\config.ruの編集
[変更前]
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment', __FILE__)
run RedmineApp::Application
[変更後]
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment', __FILE__)
map ENV['RAILS_RELATIVE_URL_ROOT'] || "/" do
run RedmineApp::Application
end
・C:\redmine\config\environment.rbの編集
最終行に以下を追記
[変更前]
RedmineApp::Application.initialize!
[変更後]
RedmineApp::Application.initialize!
ENV['RAILS_RELATIVE_URL_ROOT'] = "/redmine"
[変更前]
config.active_support.deprecation = :log
end
・C:\redmine\config\environments\production.rbの編集
最終行より少し前に以下を追記
[変更後]
config.active_support.deprecation = :log
config.action_controller.asset_path = "/redmine%s"
end
・C:\redmine> ruby script/rails server thin -e production -p 3000
http://localhost:3000/redmine
でアクセス可能となる。
<Proxy化>
・httpd.confの修正
LoadModule alias_module modules/mod_alias.so
~省略~
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
~省略~
Alias /redmine/ "C:/redmine/public/"
<Directory "C:/redmine/public">
Options ExecCGI Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ProxyPass /redmine http://localhost:3000/redmine
ProxyPassReverse /redmine http://localhost:3000/redmine
・apache再起動
http://<FQDN>/redmine
でアクセス可能となる。
・apache
apacheのサイト(http://httpd.apache.org/download.cgi#apache22)から以下をダウンロードして、インストールする。
httpd-2.2.22-win32-x86-no_ssl.msi
・JRE
http://www.oracle.com/technetwork/java/javase/downloads/jre6u35-downloads-1836473.html)より、以下をダウンロードして、インストールする。
jre-6u35-windows-i586.exe
・MySQL
MySQLのGUIを使うため、マイクロソフト(http://www.microsoft.com/ja-jp/net/netfx4/download.aspx)より、.NET Framework 4をインストールする。
MySQLのサイト(http://dev.mysql.com/downloads/)から以下をダウンロードして、インストールする。
mysql-installer-community-5.5.27.2.msi
・Ruby
Rubyのサイト(http://rubyinstaller.org/downloads/)より、以下をダウンロードして、インストールする。
rubyinstaller-1.8.7-p370.exe
DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe
・redmine
redmineのサイト(http://rubyforge.org/frs/?group_id=1850)より、redmine-2.0.3.zipをダウンロードする。
・ImageMagick
rubyのサイト(http://rubyforge.org/frs/?group_id=12)より、RMagick-2.12.0-ImageMagick-6.5.6-8-Q8.zipをダウンロードする。ファイル解凍後、C:\Tempに置く。ImageMagick-6.5.6-8-Q8-windows-dll.exeを実行し、C/C++ のヘッダーファイルも一緒にインストールする。(インストール時のチェックボックスでチェックをつける。)
<事前準備>
①MySQL
・MySQL Workbenchを起動し、[Open Connection to start querying]より、スキーマredmineを作成する。
・[Manage Security]より、ユーザredmineを作成する。Object Rights、DDL Rights、Other Rightsにて、すべての権限を付与する。
②Devkit
DevkitをC:\Devkitにインストール後、以下を実行する。
C:\Devkit> ruby dk.rb init
C:\Devkit> ruby dk.rb install
ダウンロードしたファイルを解凍して、C:\redmineとする。
③Gemfile
・ImageMagick のインストールディレクトリを環境変数の PATH に追加する。
・ImageMagick のインストールディレクトリ内にある include ディレクトリのパスを環境変数 CPATH に追加する。
・ImageMagick のインストールディレクトリ内にある lib ディレクトリのパスを環境変数 LIBRARY_PATH に追加する。
<Webrickでの構築手順>
・C:\redmine> gem install bundler
・C:\redmine> bundle install
・config/database.example.yml をコピーして config/database.yml を作成する。
また、config/database.yml を編集し、"production"環境用のデータベース設定を行う。
====================================
production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: redmine
====================================
・以下のサイトからダウンロードしたlibmysql.dllをC:\Ruby\binにコピーする。
http://www.dll-files.com/dllindex/dll-files.shtml?libmysql
・C:\Program Files\ImageMagick-6.5.6-Q8\CORE_RL_magick_.dllをC:\Ruby\binにコピーする。
・C:\redmine> rake generate_secret_token
・C:\redmine> rake db:migrate RAILS_ENV=production
・C:\redmine> rake redmine:load_default_data RAILS_ENV=production
Select language: ar, bg, bs, ca, cs, da, de, el, en, en-GB, es, et, eu, fa, fi,fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ja
====================================
Default configuration data loaded.
・C:\redmine> ruby script/rails server webrick -e production
[Ctrl] + Cで閉じる。
<Mongrelでの構築手順>
・C:\redmine> gem install mongrel --pre
・C:\redmine\gemfileに以下を追記。
gem 'mongrel', '>= 1.2.0.pre2'
・C:\redmine> ruby script/rails server mongrel -e production
[Ctrl] + Cで閉じる。
・自動起動させたいと考え、管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> mongrel_rails service::install -N "Redmine" -c "C:\redmine" -p 3000 -e production
・MySQLとの依存関係を持たせたいので、管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> sc config Redmine start= auto depend= MySql55
・但し、自動起動は不可の模様。C:\redmine\log\mongrel.logより
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-3.2.8/lib/active_support/dependencies.rb:251:
in `require': no such file to load -- dispatcher (LoadError)
★unicorn、passengerも同様、Windowsでは動かない。
<thinでの構築手順>
・C:\redmine\gemfileに以下を追記。
gem 'thin'
・C:\redmine> bundle install
・C:\redmine> ruby script\rails server thin -e production
[Ctrl] + Cで閉じる。
・自動起動させたいと考え、http://www.microsoft.com/en-us/download/details.aspx?id=17657より、rktools.exeをダウンロードして、インストールする。
・管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> "C:\Program Files\Windows Resource Kits\Tools\INSTSRV.EXE" redmine_service "C:\Program Files\Windows Resource Kits\Tools\SRVANY.EXE"
・regeditを実行して、レジストリを編集する。
1.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\redmine_serviceに、Parametersという名前のキーを追加する
2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\redmine_service\Parametersに、Application、AppParameters、AppDirectoryという名前の文字列値を新規作成する
Applicationは、Ruby.exeのフルパス。例えば、C:\Ruby\bin\ruby.exe
AppParametersは、thinとthinに渡すパラメータ。例えば、C:\Ruby\bin\thin start -p 3000 -e production
AppDirectoryは、redmineをインストールした場所。例えば、C:\redmine
・MySQLとの依存関係を持たせたいので、管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> sc config redmine_service start= auto depend= MySql55
・リブートする。
<subdirectory化> ※rails3のみ
・C:\redmine\config.ruの編集
[変更前]
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment', __FILE__)
run RedmineApp::Application
[変更後]
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment', __FILE__)
map ENV['RAILS_RELATIVE_URL_ROOT'] || "/" do
run RedmineApp::Application
end
・C:\redmine\config\environment.rbの編集
最終行に以下を追記
[変更前]
RedmineApp::Application.initialize!
[変更後]
RedmineApp::Application.initialize!
ENV['RAILS_RELATIVE_URL_ROOT'] = "/redmine"
[変更前]
config.active_support.deprecation = :log
end
・C:\redmine\config\environments\production.rbの編集
最終行より少し前に以下を追記
[変更後]
config.active_support.deprecation = :log
config.action_controller.asset_path = "/redmine%s"
end
・C:\redmine> ruby script/rails server thin -e production -p 3000
http://localhost:3000/redmine
でアクセス可能となる。
<Proxy化>
・httpd.confの修正
LoadModule alias_module modules/mod_alias.so
~省略~
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
~省略~
Alias /redmine/ "C:/redmine/public/"
<Directory "C:/redmine/public">
Options ExecCGI Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ProxyPass /redmine http://localhost:3000/redmine
ProxyPassReverse /redmine http://localhost:3000/redmine
・apache再起動
http://<FQDN>/redmine
でアクセス可能となる。
2012年5月18日金曜日
Solaris10でDHCPサーバ構築
Solaris10(x86)でDHCPサーバを構築する。
①DNSの起動
bash-3.00# /usr/local/sbin/named -c /usr/local/etc/named.conf
②DHCPサーバの構成
<前提>
DHCPサーバの固定IPアドレスは192.168.10.4とする。
bash-3.00# /usr/sadm/admin/bin/dhcpmgr &
[1] 1287
bash-3.00# Java Accessibility Bridge for GNOME loaded.
・DHCPサーバとして構成を選択して[了解]をクリックする。
・テキストファイルを選択して[次へ]をクリックする。
・/etc/dhcpを入力して[次へ]をクリックする。
・/etc/hostsを選択して[次へ]をクリックする。
・リース期間を1日とし、「クライアントにリースの更新を許可する」にチェックを入れて[次へ]をクリックする。
・DNSドメインに自ドメインが入っていることを確認して、[次へ]をクリックする。
・ネットワークアドレスとサブネットマスクを設定して、[次へ]をクリックする。
・「ネットワークタイプ:ローカルエリア」、「ルータ検索プロトコルを使用」にチェックを入れて、[次へ]をクリックする。
・NISは使わないので、そのまま[次へ]をクリックする。
・NIS+も使わないので、そのまま[次へ]をクリックする。
・画面内容を確認して、[完了]をクリックする。
・しばらく(2~3分)経過後、以下が表示される。
・IPアドレスの割り当て数を指定する。(例:10個)
・開始IPアドレスやクライアントのホスト名のルールを指定する。
・リースタイプは動的とする。
③DHCPクライアントの設定(Solarisの場合)
# touch /etc/dhcp.e1000g0
# shutdown -y -i6 -g0
※/etc/hosts、/etc/netmask、/etc/defaultrouterには設定不要。/etc/hostname.<NIC>と/etc/nodenameの設定は必要。
リブート後の設定状況(クライアント)は以下のとおり。自動でホスト名とIPアドレスが設定される。
④IPアドレス配布状況の確認
・表示再表示より、IPアドレス配布状況の確認が可能。(例:192.168.10.160が割り当て済み)
※IPアドレスの有効期限などが分かる。
・/etc/dhcp配下には管理ファイルが格納されていた。(書式は不明)
<参考>
http://docs.oracle.com/cd/E24845_01/index.html
→Solaris のシステム管理 (IP サービス)
①DNSの起動
bash-3.00# /usr/local/sbin/named -c /usr/local/etc/named.conf
②DHCPサーバの構成
<前提>
DHCPサーバの固定IPアドレスは192.168.10.4とする。
bash-3.00# /usr/sadm/admin/bin/dhcpmgr &
[1] 1287
bash-3.00# Java Accessibility Bridge for GNOME loaded.
・DHCPサーバとして構成を選択して[了解]をクリックする。
・テキストファイルを選択して[次へ]をクリックする。
・/etc/dhcpを入力して[次へ]をクリックする。
・/etc/hostsを選択して[次へ]をクリックする。
・リース期間を1日とし、「クライアントにリースの更新を許可する」にチェックを入れて[次へ]をクリックする。
・DNSドメインに自ドメインが入っていることを確認して、[次へ]をクリックする。
・ネットワークアドレスとサブネットマスクを設定して、[次へ]をクリックする。
・「ネットワークタイプ:ローカルエリア」、「ルータ検索プロトコルを使用」にチェックを入れて、[次へ]をクリックする。
・NISは使わないので、そのまま[次へ]をクリックする。
・NIS+も使わないので、そのまま[次へ]をクリックする。
・画面内容を確認して、[完了]をクリックする。
・しばらく(2~3分)経過後、以下が表示される。
・IPアドレスの割り当て数を指定する。(例:10個)
・開始IPアドレスやクライアントのホスト名のルールを指定する。
・リースタイプは動的とする。
③DHCPクライアントの設定(Solarisの場合)
# touch /etc/dhcp.e1000g0
# shutdown -y -i6 -g0
※/etc/hosts、/etc/netmask、/etc/defaultrouterには設定不要。/etc/hostname.<NIC>と/etc/nodenameの設定は必要。
リブート後の設定状況(クライアント)は以下のとおり。自動でホスト名とIPアドレスが設定される。
④IPアドレス配布状況の確認
・表示再表示より、IPアドレス配布状況の確認が可能。(例:192.168.10.160が割り当て済み)
※IPアドレスの有効期限などが分かる。
・/etc/dhcp配下には管理ファイルが格納されていた。(書式は不明)
<参考>
http://docs.oracle.com/cd/E24845_01/index.html
→Solaris のシステム管理 (IP サービス)
2012年5月9日水曜日
OpenAM10.0でのSAMLメタデータ入出力
OpenAM10.0(on CentOS5.8)にてSAMLメタデータ入出力仕様を調査する。
メタデータはOpenAM画面(以降、画面とする)からもOpenAMコマンド(以降、コマンドとする)からも登録可能。
※コマンドを利用する場合は別途ssoadmをインストールする必要あり。
1.準備
まず、画面よりトラストサークルをsamlcotとして、ホストアイデンティティープロバイダ(IDP)とホストサービスプロバイダ(SP)を作成する。
メタデータはexportmetadata.jspを使って出力可能である。amadminでログイン後、ブラウザのURLに
http://goodjob-idp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
http://goodjob-sp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
を直打ちしてエキスポートする。
2.画面
OpenAM管理コンソールより、一旦クリーンな状態(IDP、SPが未登録)にする。
ただし、トラストサークルのみ残しておく。
2.1.IDP側での登録
リモートアイデンテティプロバイダ(IDP)を作成する。
2.1.1.アップロード
ローカルPCのメタデータを指定。
[設定] ボタンを押下。化けた。
登録はされている。
2.1.2.URL指定
これはメタデータの交換の時に使う。リモートサービスプロバイダとして、相手(SP側)のURLを指定する。以下のURLを指定。
http://goodjob-sp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
2.2.SP側での登録
リモートサービスプロバイダ(SP)を作成する。
2.2.1.アップロード
ローカルPCのメタデータを指定。
[設定] ボタンを押下。化けた。
登録はされている。
2.2.2.URL指定
これはメタデータの交換の時に使う。リモートアイデンティティープロバイダとして、相手(IDP側)のURLを指定する。以下のURLを指定。
http://goodjob-idp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
3.コマンド
まず、http://www.forgerock.org/openam.html より ssoAdminTools_10.0.0.zip をダウンロードする。
3.1.ssoadmセットアップ
[root@goodjob-idp src]# mkdir /usr/local/ssoAdminTools_10.0.0
[root@goodjob-idp src]# cd /usr/local/ssoAdminTools_10.0.0
[root@goodjob-idp ssoAdminTools_10.0.0]# unzip ssoAdminTools_10.0.0.zip
[root@goodjob-idp ssoAdminTools_10.0.0]# JAVA_HOME=/usr/java/jdk1.6.0_32
[root@goodjob-idp ssoAdminTools_10.0.0]# export JAVA_HOME
[root@goodjob-idp ssoAdminTools_10.0.0]# ./setup
OpenAM サーバーの設定ファイルのパス [/root/openam]:/var/lib/openam
デバッグディレクトリ [/usr/local/ssoAdminTools_10.0.0/debug]:/var/lib/openam/openam/debug
ログディレクトリ [/usr/local/ssoAdminTools_10.0.0/log]:/var/lib/openam/openam/log
スクリプトは次のディレクトリに正しく設定されています: /usr/local/ssoAdminTools_10.0.0/openam
デバッグディレクトリは /var/lib/openam/openam/debug です。
ログディレクトリは /var/lib/openam/openam/log です。
この tools.zip のバージョン: OpenAM 10.0.0 (2012-April-13 10:24)
サーバーインスタンスのバージョン: OpenAM 10.0.0 (2012-April-13 10:24)
※SPも同様。
--------------------------------------------------------------
3.2.IDPメタデータ出力
[root@goodjob-idp ssoAdminTools_10.0.0] #cd /usr/local/ssoAdminTools_10.0.0/openam/bin
[root@goodjob-idp bin]# vi /tmp/pwd.txt
※IDP側のamadminのパスワードを記載する。
[root@goodjob-idp bin]# chmod 400 /tmp/pwd.txt
[root@goodjob-idp bin]# ./ssoadm create-metadata-templ -y "http://goodjob-idp.openam.com:8080/openam" -u amadmin -f /tmp/pwd.txt -i /idp -m ../idp-standard.xml -x ../idp-extended.xml
レルム {1} のホストエンティティー設定が、ファイル ../idp-extended.xml に書き込まれました。
レルム {1} のホストエンティティー記述子が、ファイル ../idp-standard.xml に書き込まれました。
--------------------------------------------------------------
3.3.SPメタデータ出力 ★やってみたが、これは使えなかった★
[root@goodjob-sp ssoAdminTools_10.0.0] #cd /usr/local/ssoAdminTools_10.0.0/openam/bin
[root@goodjob-sp bin]# vi /tmp/pwd.txt
※SP側のamadminのパスワードを記載する。
[root@goodjob-sp bin]# chmod 400 /tmp/pwd.txt
[root@goodjob-sp bin]# ./ssoadm create-metadata-templ -y "http://goodjob-sp.openam.com:8080/openam" -u amadmin -f /tmp/pwd.txt -i /sp -m ../sp-standard.xml -x ../sp-extended.xml
レルム {1} のホストエンティティー設定が、ファイル ../sp-extended.xml に書き込まれました。
レルム {1} のホストエンティティー記述子が、ファイル ../sp-standard.xml に書き込まれました。
出力したファイルの中身を見たところ、SPのメタデータを<IDPSSODescriptor>として出力してしまう。
※OpenAM 10.0のバグと思われる。IDPとSPをサーバ単位で分けた環境で確認済み。
よって、今回は「1.準備」で取得した
http://goodjob-sp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
のメタデータを取得することにする。
3.4.コマンドでの登録
OpenAM管理コンソールより、クリーンな状態(IDP、SPが未登録)にする。
3.4.1.SP側でのトラストサークル作成
[root@goodjob-sp bin]# ./ssoadm create-cot -u amadmin -f /tmp/pwd.txt -t samlcot -e /
トラストサークル samlcot が作成されました。
3.4.2.IDP側でのトラストサークル作成
[root@goodjob-idp bin]# ./ssoadm create-cot -u amadmin -f /tmp/pwd.txt -t samlcot -e /
トラストサークル samlcot が作成されました。
3.4.3.SP側でのSPメタデータ入力
トラストサークルはsamlcotとする。
[root@goodjob-sp bin]# ./ssoadm import-entity -u amadmin -f /tmp/pwd.txt -e / -m ../exportmetadata-sp.xml -t samlcot -c saml2
ファイル ../exportmetadata-sp.xml をインポートしました。
3.4.4.IDP側でのIDPメタデータ入力
トラストサークルはsamlcotとする。
[root@goodjob-idp bin]# ./ssoadm import-entity -u amadmin -f /tmp/pwd.txt -e / -m ../idp-standard.xml -x ../idp-extended.xml -t samlcot -c saml2
ファイル ../idp-standard.xml をインポートしました。
ファイル ../idp-extended.xml をインポートしました。
3.5.登録確認
3.5.1.IDP側の連携タブ押下時
アクセスできたが、インスタンス(サーブレットコンテナ)再起動は不要?
3.5.2.SP側の連携タブ押下時
アクセスできたが、インスタンス(サーブレットコンテナ)再起動は不要?
4.メタデータ登録のチェック処理
[設定] ボタンのForm文のactionは../task/CreateRemoteIDP(またはCreateRemoteSP)
以下が呼ばれる。
\openam_src_10.0.0\products\federation\openfm\source\com\sun\identity\workflow
\CreateRemoteIDP.java(またはCreateRemoteSP.java)
その中でさらに以下が呼ばれる。
\openam_src_10.0.0\products\federation\openfm\source\com\sun\identity\workflow
\ImportSAML2MetaData.javaのimportData()
この中でメタデータを受け取って、getEntityDescriptorElement()で解析している模様。
<チェック内容>
・メタデータがnullでない。
・メタデータ(ドキュメント)のローカル名がEntityDescriptor、もしくは名前空間URIが"urn:oasis:names:tc:SAML:2.0:metadata"である。
・メタデータの署名検証にて問題なし。
※なお、署名値(<ds:Signature>タグ)がない場合は、エラーとしない。
・名前空間に"urn:oasis:names:tc:SAML:2.0:metadata"を持つ<RoleDescriptor>タグを取得し、
名前空間に"http://www.w3.org/2000/xmlns/"を持つtype属性の属性値が"AttributeQueryDescriptorType"、もしくは
":AttributeQueryDescriptorType"で終わる。
<参考>
http://openam.forgerock.org/doc/admin-guide/index.html#chap-federation
および
ssoadmコマンドのヘルプ、OpenAM10.0のソース
メタデータはOpenAM画面(以降、画面とする)からもOpenAMコマンド(以降、コマンドとする)からも登録可能。
※コマンドを利用する場合は別途ssoadmをインストールする必要あり。
1.準備
まず、画面よりトラストサークルをsamlcotとして、ホストアイデンティティープロバイダ(IDP)とホストサービスプロバイダ(SP)を作成する。
メタデータはexportmetadata.jspを使って出力可能である。amadminでログイン後、ブラウザのURLに
http://goodjob-idp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
http://goodjob-sp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
を直打ちしてエキスポートする。
2.画面
OpenAM管理コンソールより、一旦クリーンな状態(IDP、SPが未登録)にする。
ただし、トラストサークルのみ残しておく。
2.1.IDP側での登録
リモートアイデンテティプロバイダ(IDP)を作成する。
2.1.1.アップロード
ローカルPCのメタデータを指定。
[設定] ボタンを押下。化けた。
登録はされている。
2.1.2.URL指定
これはメタデータの交換の時に使う。リモートサービスプロバイダとして、相手(SP側)のURLを指定する。以下のURLを指定。
http://goodjob-sp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
2.2.SP側での登録
リモートサービスプロバイダ(SP)を作成する。
2.2.1.アップロード
ローカルPCのメタデータを指定。
[設定] ボタンを押下。化けた。
登録はされている。
2.2.2.URL指定
これはメタデータの交換の時に使う。リモートアイデンティティープロバイダとして、相手(IDP側)のURLを指定する。以下のURLを指定。
http://goodjob-idp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
3.コマンド
まず、http://www.forgerock.org/openam.html より ssoAdminTools_10.0.0.zip をダウンロードする。
3.1.ssoadmセットアップ
[root@goodjob-idp src]# mkdir /usr/local/ssoAdminTools_10.0.0
[root@goodjob-idp src]# cd /usr/local/ssoAdminTools_10.0.0
[root@goodjob-idp ssoAdminTools_10.0.0]# unzip ssoAdminTools_10.0.0.zip
[root@goodjob-idp ssoAdminTools_10.0.0]# JAVA_HOME=/usr/java/jdk1.6.0_32
[root@goodjob-idp ssoAdminTools_10.0.0]# export JAVA_HOME
[root@goodjob-idp ssoAdminTools_10.0.0]# ./setup
OpenAM サーバーの設定ファイルのパス [/root/openam]:/var/lib/openam
デバッグディレクトリ [/usr/local/ssoAdminTools_10.0.0/debug]:/var/lib/openam/openam/debug
ログディレクトリ [/usr/local/ssoAdminTools_10.0.0/log]:/var/lib/openam/openam/log
スクリプトは次のディレクトリに正しく設定されています: /usr/local/ssoAdminTools_10.0.0/openam
デバッグディレクトリは /var/lib/openam/openam/debug です。
ログディレクトリは /var/lib/openam/openam/log です。
この tools.zip のバージョン: OpenAM 10.0.0 (2012-April-13 10:24)
サーバーインスタンスのバージョン: OpenAM 10.0.0 (2012-April-13 10:24)
※SPも同様。
--------------------------------------------------------------
3.2.IDPメタデータ出力
[root@goodjob-idp ssoAdminTools_10.0.0] #cd /usr/local/ssoAdminTools_10.0.0/openam/bin
[root@goodjob-idp bin]# vi /tmp/pwd.txt
※IDP側のamadminのパスワードを記載する。
[root@goodjob-idp bin]# chmod 400 /tmp/pwd.txt
[root@goodjob-idp bin]# ./ssoadm create-metadata-templ -y "http://goodjob-idp.openam.com:8080/openam" -u amadmin -f /tmp/pwd.txt -i /idp -m ../idp-standard.xml -x ../idp-extended.xml
レルム {1} のホストエンティティー設定が、ファイル ../idp-extended.xml に書き込まれました。
レルム {1} のホストエンティティー記述子が、ファイル ../idp-standard.xml に書き込まれました。
--------------------------------------------------------------
3.3.SPメタデータ出力 ★やってみたが、これは使えなかった★
[root@goodjob-sp ssoAdminTools_10.0.0] #cd /usr/local/ssoAdminTools_10.0.0/openam/bin
[root@goodjob-sp bin]# vi /tmp/pwd.txt
※SP側のamadminのパスワードを記載する。
[root@goodjob-sp bin]# chmod 400 /tmp/pwd.txt
[root@goodjob-sp bin]# ./ssoadm create-metadata-templ -y "http://goodjob-sp.openam.com:8080/openam" -u amadmin -f /tmp/pwd.txt -i /sp -m ../sp-standard.xml -x ../sp-extended.xml
レルム {1} のホストエンティティー設定が、ファイル ../sp-extended.xml に書き込まれました。
レルム {1} のホストエンティティー記述子が、ファイル ../sp-standard.xml に書き込まれました。
出力したファイルの中身を見たところ、SPのメタデータを<IDPSSODescriptor>として出力してしまう。
※OpenAM 10.0のバグと思われる。IDPとSPをサーバ単位で分けた環境で確認済み。
よって、今回は「1.準備」で取得した
http://goodjob-sp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
のメタデータを取得することにする。
3.4.コマンドでの登録
OpenAM管理コンソールより、クリーンな状態(IDP、SPが未登録)にする。
3.4.1.SP側でのトラストサークル作成
[root@goodjob-sp bin]# ./ssoadm create-cot -u amadmin -f /tmp/pwd.txt -t samlcot -e /
トラストサークル samlcot が作成されました。
3.4.2.IDP側でのトラストサークル作成
[root@goodjob-idp bin]# ./ssoadm create-cot -u amadmin -f /tmp/pwd.txt -t samlcot -e /
トラストサークル samlcot が作成されました。
3.4.3.SP側でのSPメタデータ入力
トラストサークルはsamlcotとする。
[root@goodjob-sp bin]# ./ssoadm import-entity -u amadmin -f /tmp/pwd.txt -e / -m ../exportmetadata-sp.xml -t samlcot -c saml2
ファイル ../exportmetadata-sp.xml をインポートしました。
3.4.4.IDP側でのIDPメタデータ入力
トラストサークルはsamlcotとする。
[root@goodjob-idp bin]# ./ssoadm import-entity -u amadmin -f /tmp/pwd.txt -e / -m ../idp-standard.xml -x ../idp-extended.xml -t samlcot -c saml2
ファイル ../idp-standard.xml をインポートしました。
ファイル ../idp-extended.xml をインポートしました。
3.5.登録確認
3.5.1.IDP側の連携タブ押下時
アクセスできたが、インスタンス(サーブレットコンテナ)再起動は不要?
3.5.2.SP側の連携タブ押下時
アクセスできたが、インスタンス(サーブレットコンテナ)再起動は不要?
4.メタデータ登録のチェック処理
[設定] ボタンのForm文のactionは../task/CreateRemoteIDP(またはCreateRemoteSP)
以下が呼ばれる。
\openam_src_10.0.0\products\federation\openfm\source\com\sun\identity\workflow
\CreateRemoteIDP.java(またはCreateRemoteSP.java)
その中でさらに以下が呼ばれる。
\openam_src_10.0.0\products\federation\openfm\source\com\sun\identity\workflow
\ImportSAML2MetaData.javaのimportData()
この中でメタデータを受け取って、getEntityDescriptorElement()で解析している模様。
<チェック内容>
・メタデータがnullでない。
・メタデータ(ドキュメント)のローカル名がEntityDescriptor、もしくは名前空間URIが"urn:oasis:names:tc:SAML:2.0:metadata"である。
・メタデータの署名検証にて問題なし。
※なお、署名値(<ds:Signature>タグ)がない場合は、エラーとしない。
・名前空間に"urn:oasis:names:tc:SAML:2.0:metadata"を持つ<RoleDescriptor>タグを取得し、
名前空間に"http://www.w3.org/2000/xmlns/"を持つtype属性の属性値が"AttributeQueryDescriptorType"、もしくは
":AttributeQueryDescriptorType"で終わる。
<参考>
http://openam.forgerock.org/doc/admin-guide/index.html#chap-federation
および
ssoadmコマンドのヘルプ、OpenAM10.0のソース
2012年5月2日水曜日
Jenkinsのインストール
CentOS5.8にJenkinsをインストールする。
・JDKのインストール
OpenJDK1.6だとWebブラウザアクセス時に「このサーバーは、AWTが正しく設定されていません」が表示されるので、Oracleが提供するJDK1.6を使う。
http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u32-downloads-1594644.html より
jdk-6u32-linux-i586-rpm.binをダウンロードする。
[root@goodjob src]# cp /mnt/hgfs/Desktop/openam/jdk-6u32-linux-i586-rpm.bin /usr/local/src
[root@goodjob src]# ./jdk-6u32-linux-i586-rpm.bin
・JenkinsのRPMパッケージの公開鍵のインポート
[root@goodjob redmine]# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
--2012-05-02 06:35:07-- http://pkg.jenkins-ci.org/redhat/jenkins.repo
pkg.jenkins-ci.org をDNSに問いあわせています... 63.246.20.93
pkg.jenkins-ci.org|63.246.20.93|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 75 [text/plain]
`/etc/yum.repos.d/jenkins.repo' に保存中
100%[======================================>] 75 --.-K/s 時間 0s
2012-05-02 06:35:07 (9.47 MB/s) - `/etc/yum.repos.d/jenkins.repo' へ保存完了 [75/75]
[root@goodjob redmine]# rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
・Jenkinsのインストール
[root@goodjob redmine]# yum install jenkins
<省略>
Transaction Summary
================================================================================
Install 1 Package(s)
Upgrade 0 Package(s)
Total download size: 48 M
Is this ok [y/N]: y
Downloading Packages:
jenkins-1.462-1.1.noarch.rpm | 48 MB 05:17
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : jenkins 1/1
warning: /etc/yum.repos.d/jenkins.repo created as /etc/yum.repos.d/jenkins.repo.rpmnew
Installed:
jenkins.noarch 0:1.462-1.1
Complete!
[root@goodjob redmine]# /sbin/service jenkins start
Starting Jenkins [ OK ]
http://goodjob.openam.net:8080 アクセス時に以下が出力される。
※Winstoneという軽量のServletコンテナが搭載されているため起動可能。
・Tomcatのインストール
[root@goodjob src]# wget http://ftp.riken.jp/net/apache/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.tar.gz
[root@goodjob src]# tar -xzf apache-tomcat-6.0.35.tar.gz
[root@goodjob src]# mv apache-tomcat-6.0.35 /opt/tomcat6
[root@goodjob src]# /usr/sbin/useradd -d /opt/tomcat6 -s /sbin/nologin tomcat
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
[root@goodjob src]# chown -R tomcat /opt/tomcat6
[root@goodjob src]# cp /opt/tomcat6/bin/commons-daemon-native.tar.gz /tmp
[root@goodjob src]# cd /tmp
[root@goodjob tmp]# tar -xzf commons-daemon-native.tar.gz
[root@goodjob tmp]# cd commons-daemon-1.0.7-native-src/unix
[root@goodjob unix]# autoconf
[root@goodjob unix]# ./configure --with-java=/usr/java/jdk1.6.0_32
[root@goodjob unix]# make clean
[root@goodjob unix]# make
[root@goodjob unix]# chown tomcat jsvc
[root@goodjob unix]# mv jsvc /opt/tomcat6/bin
[root@goodjob unix]# cd /tmp
[root@goodjob tmp]# rm -rf commons-daemon*
[root@goodjob tmp]# vi /etc/init.d/tomcat6
---------------------------------------------------------------
#!/bin/sh
#
# chkconfig: - 80 20
# description: tomcat
# Source function library.
. /etc/init.d/functions
JAVA_HOME=/usr/java/jdk1.6.0_32
CATALINA_HOME=/opt/tomcat6
TOMCAT_USER=tomcat
TMP_DIR=/tmp
CATALINA_OPTS=
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar
PIDFILE=/var/run/tomcat.pid
LOCKFILE=/var/lock/subsys/tomcat
DAEMON=$CATALINA_HOME/bin/jsvc
start(){
#
# Start Tomcat
#
echo -n "Starting tomcat: "
$DAEMON \
-pidfile $PIDFILE \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-Djava.awt.headless=true \
-Xms1024m -Xmx2048m \
-Dcatalina.home=$CATALINA_HOME \
-Djava.io.tmpdir=$TMP_DIR \
-outfile $CATALINA_HOME/logs/catalina.out \
-errfile '&1' \
$CATALINA_OPTS \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
#
# To get a verbose JVM
#-verbose \
# To get a debug of tomcat.
#-debug \
RETVAL=$?
if [ $RETVAL = 0 ]; then
echo_success
touch $LOCKFILE
else
echo_failure
fi
echo
}
stop(){
#
# Stop Tomcat
#
echo -n "Shutting down tomcat: "
$DAEMON \
-stop \
-pidfile $PIDFILE \
org.apache.catalina.startup.Bootstrap
RETVAL=$?
if [ $RETVAL = 0 ]; then
echo_success
rm -f $PIDFILE $LOCKFILE
else
echo_failure
fi
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status $DAEMON
RETVAL=$?
;;
*)
echo $"Usage: tomcat {start|stop|restart|status}"
exit 1
;;
esac
---------------------------------------------------------------
[root@goodjob tmp]# chmod +x /etc/init.d/tomcat6
[root@goodjob tmp]# /sbin/chkconfig tomcat6 on
[root@goodjob tmp]# /etc/init.d/tomcat6 start
Starting tomcat: [ OK ]
・TomcatへのJenkins配備
次にhttp://jenkins-ci.org/ よりLatest and greatest (1.462)をクリックして、jenkins.warをダウンロードする。
[root@goodjob tmp]# cd /opt/tomcat6/webapps
[root@goodjob webapps]# wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
[root@goodjob webapps]# chown -R tomcat jenkins.war
[root@goodjob webapps]# vi /opt/tomcat6/conf/server.xml
・変更前
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
・変更後
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
[root@goodjob webapps]# /sbin/chkconfig jenkins off
[root@goodjob webapps]# /sbin/chkconfig --list jenkins
jenkins 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@goodjob webapps]# /sbin/service jenkins stop
Shutting down Jenkins [ OK ]
[root@goodjob webapps]# /etc/init.d/tomcat6 stop
Shutting down tomcat: [ OK ]
[root@goodjob webapps]# /etc/init.d/tomcat6 start
Starting tomcat: [ OK ]
http://goodjob.openam.net:8080/ アクセス時に以下が出力される。
※Winstoneという軽量のServletコンテナは使わないため。
また、http://goodjob.openam.net:8080/jenkins/ アクセス時に以下が出力される。
・JDKのインストール
OpenJDK1.6だとWebブラウザアクセス時に「このサーバーは、AWTが正しく設定されていません」が表示されるので、Oracleが提供するJDK1.6を使う。
http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u32-downloads-1594644.html より
jdk-6u32-linux-i586-rpm.binをダウンロードする。
[root@goodjob src]# cp /mnt/hgfs/Desktop/openam/jdk-6u32-linux-i586-rpm.bin /usr/local/src
[root@goodjob src]# ./jdk-6u32-linux-i586-rpm.bin
・JenkinsのRPMパッケージの公開鍵のインポート
[root@goodjob redmine]# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
--2012-05-02 06:35:07-- http://pkg.jenkins-ci.org/redhat/jenkins.repo
pkg.jenkins-ci.org をDNSに問いあわせています... 63.246.20.93
pkg.jenkins-ci.org|63.246.20.93|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 75 [text/plain]
`/etc/yum.repos.d/jenkins.repo' に保存中
100%[======================================>] 75 --.-K/s 時間 0s
2012-05-02 06:35:07 (9.47 MB/s) - `/etc/yum.repos.d/jenkins.repo' へ保存完了 [75/75]
[root@goodjob redmine]# rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
・Jenkinsのインストール
[root@goodjob redmine]# yum install jenkins
<省略>
Transaction Summary
================================================================================
Install 1 Package(s)
Upgrade 0 Package(s)
Total download size: 48 M
Is this ok [y/N]: y
Downloading Packages:
jenkins-1.462-1.1.noarch.rpm | 48 MB 05:17
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : jenkins 1/1
warning: /etc/yum.repos.d/jenkins.repo created as /etc/yum.repos.d/jenkins.repo.rpmnew
Installed:
jenkins.noarch 0:1.462-1.1
Complete!
[root@goodjob redmine]# /sbin/service jenkins start
Starting Jenkins [ OK ]
http://goodjob.openam.net:8080 アクセス時に以下が出力される。
※Winstoneという軽量のServletコンテナが搭載されているため起動可能。
・Tomcatのインストール
[root@goodjob src]# wget http://ftp.riken.jp/net/apache/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.tar.gz
[root@goodjob src]# tar -xzf apache-tomcat-6.0.35.tar.gz
[root@goodjob src]# mv apache-tomcat-6.0.35 /opt/tomcat6
[root@goodjob src]# /usr/sbin/useradd -d /opt/tomcat6 -s /sbin/nologin tomcat
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
[root@goodjob src]# chown -R tomcat /opt/tomcat6
[root@goodjob src]# cp /opt/tomcat6/bin/commons-daemon-native.tar.gz /tmp
[root@goodjob src]# cd /tmp
[root@goodjob tmp]# tar -xzf commons-daemon-native.tar.gz
[root@goodjob tmp]# cd commons-daemon-1.0.7-native-src/unix
[root@goodjob unix]# autoconf
[root@goodjob unix]# ./configure --with-java=/usr/java/jdk1.6.0_32
[root@goodjob unix]# make clean
[root@goodjob unix]# make
[root@goodjob unix]# chown tomcat jsvc
[root@goodjob unix]# mv jsvc /opt/tomcat6/bin
[root@goodjob unix]# cd /tmp
[root@goodjob tmp]# rm -rf commons-daemon*
[root@goodjob tmp]# vi /etc/init.d/tomcat6
---------------------------------------------------------------
#!/bin/sh
#
# chkconfig: - 80 20
# description: tomcat
# Source function library.
. /etc/init.d/functions
JAVA_HOME=/usr/java/jdk1.6.0_32
CATALINA_HOME=/opt/tomcat6
TOMCAT_USER=tomcat
TMP_DIR=/tmp
CATALINA_OPTS=
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar
PIDFILE=/var/run/tomcat.pid
LOCKFILE=/var/lock/subsys/tomcat
DAEMON=$CATALINA_HOME/bin/jsvc
start(){
#
# Start Tomcat
#
echo -n "Starting tomcat: "
$DAEMON \
-pidfile $PIDFILE \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-Djava.awt.headless=true \
-Xms1024m -Xmx2048m \
-Dcatalina.home=$CATALINA_HOME \
-Djava.io.tmpdir=$TMP_DIR \
-outfile $CATALINA_HOME/logs/catalina.out \
-errfile '&1' \
$CATALINA_OPTS \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
#
# To get a verbose JVM
#-verbose \
# To get a debug of tomcat.
#-debug \
RETVAL=$?
if [ $RETVAL = 0 ]; then
echo_success
touch $LOCKFILE
else
echo_failure
fi
echo
}
stop(){
#
# Stop Tomcat
#
echo -n "Shutting down tomcat: "
$DAEMON \
-stop \
-pidfile $PIDFILE \
org.apache.catalina.startup.Bootstrap
RETVAL=$?
if [ $RETVAL = 0 ]; then
echo_success
rm -f $PIDFILE $LOCKFILE
else
echo_failure
fi
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status $DAEMON
RETVAL=$?
;;
*)
echo $"Usage: tomcat {start|stop|restart|status}"
exit 1
;;
esac
---------------------------------------------------------------
[root@goodjob tmp]# chmod +x /etc/init.d/tomcat6
[root@goodjob tmp]# /sbin/chkconfig tomcat6 on
[root@goodjob tmp]# /etc/init.d/tomcat6 start
Starting tomcat: [ OK ]
・TomcatへのJenkins配備
次にhttp://jenkins-ci.org/ よりLatest and greatest (1.462)をクリックして、jenkins.warをダウンロードする。
[root@goodjob tmp]# cd /opt/tomcat6/webapps
[root@goodjob webapps]# wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
[root@goodjob webapps]# chown -R tomcat jenkins.war
[root@goodjob webapps]# vi /opt/tomcat6/conf/server.xml
・変更前
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
・変更後
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
[root@goodjob webapps]# /sbin/chkconfig jenkins off
[root@goodjob webapps]# /sbin/chkconfig --list jenkins
jenkins 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@goodjob webapps]# /sbin/service jenkins stop
Shutting down Jenkins [ OK ]
[root@goodjob webapps]# /etc/init.d/tomcat6 stop
Shutting down tomcat: [ OK ]
[root@goodjob webapps]# /etc/init.d/tomcat6 start
Starting tomcat: [ OK ]
http://goodjob.openam.net:8080/ アクセス時に以下が出力される。
※Winstoneという軽量のServletコンテナは使わないため。
また、http://goodjob.openam.net:8080/jenkins/ アクセス時に以下が出力される。
Subversionの設定
CentOS5.8にSubversionをインストールする。
●サーバ
・Subversionのインストール
[root@goodjob src]# yum install subversion
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* epel: ftp.kddilabs.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
Setting up Install Process
Package subversion-1.6.11-7.el5_6.4.i386 already installed and latest version
Nothing to do
・Subversionリポジトリの作成
[root@goodjob src]# mkdir /var/lib/svn
[root@goodjob src]# svnadmin create /var/lib/svn/foo
[root@goodjob src]# chown -R apache:apache /var/lib/svn/foo
[root@goodjob src]# ls -l /var/lib/svn/foo
合計 24
-rw-r--r-- 1 apache apache 229 5月 2 05:29 README.txt
drwxr-xr-x 2 apache apache 4096 5月 2 05:29 conf
drwxr-sr-x 6 apache apache 4096 5月 2 05:29 db
-r--r--r-- 1 apache apache 2 5月 2 05:29 format
drwxr-xr-x 2 apache apache 4096 5月 2 05:29 hooks
drwxr-xr-x 2 apache apache 4096 5月 2 05:29 locks
・WebDAVでのアクセス設定
[root@goodjob src]# yum install mod_dav_svn
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* epel: ftp.kddilabs.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mod_dav_svn.i386 0:1.6.11-7.el5_6.4 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
mod_dav_svn i386 1.6.11-7.el5_6.4 base 78 k
Transaction Summary
================================================================================
Install 1 Package(s)
Upgrade 0 Package(s)
Total download size: 78 k
Is this ok [y/N]: y
Downloading Packages:
mod_dav_svn-1.6.11-7.el5_6.4.i386.rpm | 78 kB 00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : mod_dav_svn 1/1
Installed:
mod_dav_svn.i386 0:1.6.11-7.el5_6.4
Complete!
[root@goodjob src]# vi /etc/httpd/conf/httpd.conf
<Location /svn>
DAV svn
SVNParentPath /var/lib/svn
</Location>
[root@goodjob src]# /etc/init.d/httpd stop
httpd を停止中: [ OK ]
[root@goodjob src]# /etc/init.d/httpd start
httpd を起動中: [ OK ]
・Basic認証の設定
[root@goodjob src]# touch /etc/httpd/conf/foo_auth_file
[root@goodjob src]# htpasswd /etc/httpd/conf/foo_auth_file goodjob
New password:
Re-type new password:
Adding password for user goodjob
[root@goodjob src]# vi /etc/httpd/conf/httpd.conf
<Location /svn>
DAV svn
SVNParentPath /var/lib/svn
AuthType Basic
AuthName "svn repository"
AuthUserFile /etc/httpd/conf/foo_auth_file
Require valid-user
</Location>
[root@goodjob src]# /etc/init.d/httpd stop
httpd を停止中: [ OK ]
[root@goodjob src]# /etc/init.d/httpd start
httpd を起動中: [ OK ]
http://goodjob.openam.net/svn/foo にアクセス時にベーシック認証のダイアログが表示されることを確認する。
ベーシック認証後、WebDAVでリポジトリの情報を閲覧できることを確認する。
新しいプロジェクト(ここではtest)を作成して、リポジトリの設定を行う。
●クライアント
・TortoiseSVNのインストール
http://tortoisesvn.net/downloads.htmlより以下をダウンロードしてインストールする。
TortoiseSVN-1.7.6.22632-win32-svn-1.7.4.msi
LanguagePack_1.7.6.22632-win32-ja.msi
TortoiseSVNでhttp://goodjob.openam.net/svn/foo にアクセス時に認証を聞かれる。
tags、branch、trunkフォルダを作成する。

redmineのリポジトリとして閲覧可能なことを確認する。
●サーバ
・Subversionのインストール
[root@goodjob src]# yum install subversion
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* epel: ftp.kddilabs.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
Setting up Install Process
Package subversion-1.6.11-7.el5_6.4.i386 already installed and latest version
Nothing to do
・Subversionリポジトリの作成
[root@goodjob src]# mkdir /var/lib/svn
[root@goodjob src]# svnadmin create /var/lib/svn/foo
[root@goodjob src]# chown -R apache:apache /var/lib/svn/foo
[root@goodjob src]# ls -l /var/lib/svn/foo
合計 24
-rw-r--r-- 1 apache apache 229 5月 2 05:29 README.txt
drwxr-xr-x 2 apache apache 4096 5月 2 05:29 conf
drwxr-sr-x 6 apache apache 4096 5月 2 05:29 db
-r--r--r-- 1 apache apache 2 5月 2 05:29 format
drwxr-xr-x 2 apache apache 4096 5月 2 05:29 hooks
drwxr-xr-x 2 apache apache 4096 5月 2 05:29 locks
・WebDAVでのアクセス設定
[root@goodjob src]# yum install mod_dav_svn
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* epel: ftp.kddilabs.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mod_dav_svn.i386 0:1.6.11-7.el5_6.4 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
mod_dav_svn i386 1.6.11-7.el5_6.4 base 78 k
Transaction Summary
================================================================================
Install 1 Package(s)
Upgrade 0 Package(s)
Total download size: 78 k
Is this ok [y/N]: y
Downloading Packages:
mod_dav_svn-1.6.11-7.el5_6.4.i386.rpm | 78 kB 00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : mod_dav_svn 1/1
Installed:
mod_dav_svn.i386 0:1.6.11-7.el5_6.4
Complete!
[root@goodjob src]# vi /etc/httpd/conf/httpd.conf
<Location /svn>
DAV svn
SVNParentPath /var/lib/svn
</Location>
[root@goodjob src]# /etc/init.d/httpd stop
httpd を停止中: [ OK ]
[root@goodjob src]# /etc/init.d/httpd start
httpd を起動中: [ OK ]
・Basic認証の設定
[root@goodjob src]# touch /etc/httpd/conf/foo_auth_file
[root@goodjob src]# htpasswd /etc/httpd/conf/foo_auth_file goodjob
New password:
Re-type new password:
Adding password for user goodjob
[root@goodjob src]# vi /etc/httpd/conf/httpd.conf
<Location /svn>
DAV svn
SVNParentPath /var/lib/svn
AuthType Basic
AuthName "svn repository"
AuthUserFile /etc/httpd/conf/foo_auth_file
Require valid-user
</Location>
[root@goodjob src]# /etc/init.d/httpd stop
httpd を停止中: [ OK ]
[root@goodjob src]# /etc/init.d/httpd start
httpd を起動中: [ OK ]
http://goodjob.openam.net/svn/foo にアクセス時にベーシック認証のダイアログが表示されることを確認する。
ベーシック認証後、WebDAVでリポジトリの情報を閲覧できることを確認する。
新しいプロジェクト(ここではtest)を作成して、リポジトリの設定を行う。
●クライアント
・TortoiseSVNのインストール
http://tortoisesvn.net/downloads.htmlより以下をダウンロードしてインストールする。
TortoiseSVN-1.7.6.22632-win32-svn-1.7.4.msi
LanguagePack_1.7.6.22632-win32-ja.msi
TortoiseSVNでhttp://goodjob.openam.net/svn/foo にアクセス時に認証を聞かれる。
tags、branch、trunkフォルダを作成する。
redmineのリポジトリとして閲覧可能なことを確認する。
登録:
投稿 (Atom)