PCリンクスでは、パソコンの設定・修理から組込み機器の受託開発まで承ります。

 

Raspberry Pi でfsprotectを試す

9回目の今回は、Raspberry Piにfsprotectをインストールします。

普段使っているディスクをリードオンリー(ro)として使い、 RAMディスクを併用してOSに対してリード/ライト(rw)可能なディスクと見せておきながら、再起動すると、変更内容を全てクリアするという環境を作ります。
いわゆる、Live CD的な挙動を実現します。

このようなことを実現するシェルスクリプトが、”fsprotect” というパッケージとなります。
※fsprotectを使用するためには、カーネルにaufsが組み込まれている必要があります。

fsprotectを使用した場合のメリット

  • SDカードはリードオンリ動作なので、SDカードの寿命を延ばすことができます。
  • いつでも電源オフすることができます。(shutdownコマンドで停止させる必要はありません)
    ※不意の停電で、ファイルシステムが破損してOSが起動しなくなる等の不具合をなくすことが出来ます。

Raspberry Piを使用したサーバ専用機を、LAN環境に設置して24時間連続動作させます。

d294e64431ba92e78c131fab32eb9e06 300x234 Raspberry Pi でfsprotect

 

 SoftEther VPN / Asterisk専用機として設置します。

 消費電力は2W程度なので、電気代も気になりません。
 ※電気代は36円/月くらいです。

 

fsprotectのインストール

最初に、fsprotectパッケージをインストールします。

[root@ms03 ~]# aptitude install fsprotect

initramfsイメージファイルを作成し直します。

[root@ms03 linux]# update-initramfs -c -k $(uname -r)
update-initramfs: Generating /boot/initrd.img-3.6.11-aufs+

/boot/cmdline.txt(カーネルオプションファイル)を修正して、fsprotectを起動するようにします。
変更点は、設定内容の最後に、”fsprotect” の記述を追加するだけです。
※この設定が追加されると、OS起動時に fsprotect が開始され、ファイルシステムを保護するようになります。

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fsprotect

/boot/config.txtを修正して、initramfsの指定を追加します。

[root@ms03 linux]# pico /boot/config.txt
# aufs
initramfs initrd.img-3.6.11-aufs+

/bootディレクトリもリードオンリーとして、保護するようにします。

[root@ms03 ~]# pico /etc/default/fsprotect
# fsprotect configuration for protecting filesystems other than root
# Protection will only be enabled when the "fsprotect=" parameter is passed to
# the kernel
  
# This is a space separated list of mountpoints to protect.
# Only non-virtual filesystems are supported.
# DON'T add / in here. Instead use the "fsprotect=" kernel parameter
# Each entry is in the form "mountpoint" or "mountpoint=tmpfs_size"
# Example:
#       PROTECT="/boot=100M /home=2G"
# bootパーティションも保護する
PROTECT="/boot=32M"

起動時のファイルシステムはリードオンリーなので、/etc/fstabで起動時にfsckを行わないように変更します。
変更点は、/dev/mmcblk0p1 , /dev/mmcblk0p2 のfsckオプション(最後の数字の部分)を “0″ に変更します。

[root@ms03 ~]#  pico /etc/fstab
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       0
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       0

# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that

# tmpファイルはRAMディスク上に保管する
tmpfs           /tmp            tmpfs    defaults,size=32m,noatime,mode=1777    0       0
tmpfs           /var/tmp        tmpfs    defaults,size=16m,noatime,mode=1777    0       0

# /var/logディレクトリはRAMディスク上に配置する
tmpfs           /var/log        tmpfs    defaults,size=32m,noatime,mode=0755    0       0

ここで、一旦、OSを再起動させて、aufsとfsprotectが正しく動作することを確認します。

[root@ms03 ~]# reboot

起動時のメッセージを確認しておきます。

fsprotect 011 Raspberry Pi でfsprotect

fsprotect 021 Raspberry Pi でfsprotect

起動時のdmesgを確認しておきます。

[root@ms03 ~]# cat /var/log/dmesg
[    0.000000] Booting Linux on physical CPU 0
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.6.11-aufs+ (root@ms03) (gcc version 4.6.3 (Debian 4.6.3-14+rpi1) ) #2 PREEMPT Wed Mar 13 17:53:08 JST 2013
[    0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[    0.000000] Machine: BCM2708
[    0.000000] cma: CMA: reserved 16 MiB at 1dc00000
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] On node 0 totalpages: 126976
[    0.000000] free_area_init_node: node 0, pgdat c0569e24, node_mem_map c0613000
[    0.000000]   Normal zone: 992 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 125984 pages, LIFO batch:31
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 125984
[    0.000000] Kernel command line: dma.dmachans=0x7f35 bcm2708_fb.fbwidth=1024 bcm2708_fb.fbheight=768 bcm2708.boardrev=0x100000f bcm2708.serial=0xfebafb3d smsc95xx.macaddr=B8:27:EB:BA:FB:3D sdhci-bcm2708.emmc_clock_freq=100000000 vc_mem.mem_base=0x1fa00000 vc_mem.mem_size=0x20000000  dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fsprotect
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 496MB = 496MB total
[    0.000000] Memory: 477320k/477320k available, 30584k reserved, 0K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xdf800000 - 0xff000000   ( 504 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xdf000000   ( 496 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0xc0008000 - 0xc0511f44   (5160 kB)
[    0.000000]       .init : 0xc0512000 - 0xc0534bd4   ( 139 kB)
[    0.000000]       .data : 0xc0536000 - 0xc056a640   ( 210 kB)
[    0.000000]        .bss : 0xc056a664 - 0xc0612dd8   ( 674 kB)
[    0.000000] NR_IRQS:330
[    0.000000] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 4294967ms
[    0.000000] Console: colour dummy device 80x30
[    0.000000] console [tty1] enabled
[    0.000721] Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736)
[    0.040093] pid_max: default: 32768 minimum: 301
[    0.040330] Mount-cache hash table entries: 512
[    0.040878] Initializing cgroup subsys cpuacct
[    0.040917] Initializing cgroup subsys devices
[    0.040940] Initializing cgroup subsys freezer
[    0.040960] Initializing cgroup subsys blkio
[    0.041019] CPU: Testing write buffer coherency: ok
[    0.041259] hw perfevents: enabled with v6 PMU driver, 3 counters available
[    0.041364] Setting up static identity map for 0x3c3168 - 0x3c31c4
[    0.042421] devtmpfs: initialized
[    0.049309] NET: Registered protocol family 16
[    0.054650] DMA: preallocated 4096 KiB pool for atomic coherent allocations
[    0.055430] bcm2708.uart_clock = 0
[    0.056368] hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.
[    0.056404] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    0.056429] mailbox: Broadcom VideoCore Mailbox driver
[    0.056494] bcm2708_vcio: mailbox at f200b880
[    0.056563] bcm_power: Broadcom power driver
[    0.056588] bcm_power_open() -> 0
[    0.056606] bcm_power_request(0, 8)
[    0.557186] bcm_mailbox_read -> 00000080, 0
[    0.557213] bcm_power_request -> 0
[    0.557231] Serial: AMBA PL011 UART driver
[    0.557333] dev:f1: ttyAMA0 at MMIO 0x20201000 (irq = 83) is a PL011 rev3
[    0.877304] console [ttyAMA0] enabled
[    0.894926] bio: create slab  at 0
[    0.899595] SCSI subsystem initialized
[    0.903505] usbcore: registered new interface driver usbfs
[    0.909117] usbcore: registered new interface driver hub
[    0.914603] usbcore: registered new device driver usb
[    0.920600] Switching to clocksource stc
[    0.924672] FS-Cache: Loaded
[    0.927729] CacheFiles: Loaded
[    0.938509] NET: Registered protocol family 2
[    0.943470] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[    0.951112] TCP bind hash table entries: 16384 (order: 4, 65536 bytes)
[    0.957835] TCP: Hash tables configured (established 16384 bind 16384)
[    0.964398] TCP: reno registered
[    0.967653] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.973504] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.979985] NET: Registered protocol family 1
[    0.984736] RPC: Registered named UNIX socket transport module.
[    0.990673] RPC: Registered udp transport module.
[    0.995426] RPC: Registered tcp transport module.
[    1.000135] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.006805] Trying to unpack rootfs image as initramfs...
[    1.342611] Freeing initrd memory: 3524K
[    1.346991] bcm2708_dma: DMA manager at f2007000
[    1.351679] bcm2708_gpio: bcm2708_gpio_probe c0543dd8
[    1.357072] vc-mem: phys_addr:0x00000000 mem_base=0x1fa00000 mem_size:0x20000000(512 MiB)
[    1.365948] audit: initializing netlink socket (disabled)
[    1.371399] type=2000 audit(1.220:1): initialized
[    1.461726] VFS: Disk quotas dquot_6.5.2
[    1.465803] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    1.472633] FS-Cache: Netfs nfs registered for caching
[    1.478238] NFS: Registering the id_resolver key type
[    1.483373] Key type id_resolver registered
[    1.487623] Key type id_legacy registered
[    1.491962] aufs 3.6-20130204
[    1.494998] msgmni has been set to 971
[    1.499910] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[    1.507582] io scheduler noop registered
[    1.511519] io scheduler deadline registered (default)
[    1.516740] io scheduler cfq registered
[    1.533970] Console: switching to colour frame buffer device 128x48
[    1.547067] kgdb: Registered I/O driver kgdboc.
[    1.552097] vc-cma: Videocore CMA driver
[    1.556168] vc-cma: vc_cma_base      = 0x00000000
[    1.560947] vc-cma: vc_cma_size      = 0x00000000 (0 MiB)
[    1.566444] vc-cma: vc_cma_initial   = 0x00000000 (0 MiB)
[    1.578221] brd: module loaded
[    1.584886] loop: module loaded
[    1.588333] vchiq: vchiq_init_state: slot_zero = 0xddc00000, is_master = 0
[    1.595941] Loading iSCSI transport class v2.0-870.
[    1.601685] usbcore: registered new interface driver smsc95xx
[    1.607733] dwc_otg: version 3.00a 10-AUG-2012 (platform bus)
[    1.818662] Core Release: 2.80a
[    1.821891] Setting default values for core params
[    1.829628] Finished setting default values for core params
[    2.043013] Using Buffer DMA mode
[    2.049103] Periodic Transfer Interrupt Enhancement - disabled
[    2.057695] Multiprocessor Interrupt Enhancement - disabled
[    2.066043] OTG VER PARAM: 0, OTG VER FLAG: 0
[    2.073141] Dedicated Tx FIFOs mode
[    2.080348] dwc_otg: Microframe scheduler enabled
[    2.080750] dwc_otg bcm2708_usb: DWC OTG Controller
[    2.088619] dwc_otg bcm2708_usb: new USB bus registered, assigned bus number 1
[    2.098778] dwc_otg bcm2708_usb: irq 32, io mem 0x00000000
[    2.107155] Init: Port Power? op_state=1
[    2.113854] Init: Power Port (0)
[    2.120019] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    2.129680] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.139700] usb usb1: Product: DWC OTG Controller
[    2.147178] usb usb1: Manufacturer: Linux 3.6.11-aufs+ dwc_otg_hcd
[    2.156148] usb usb1: SerialNumber: bcm2708_usb
[    2.164098] hub 1-0:1.0: USB hub found
[    2.170703] hub 1-0:1.0: 1 port detected
[    2.177629] dwc_otg: FIQ enabled
[    2.177647] dwc_otg: NAK holdoff enabled
[    2.177663] Module dwc_common_port init
[    2.177883] Initializing USB Mass Storage driver...
[    2.185756] usbcore: registered new interface driver usb-storage
[    2.194476] USB Mass Storage support registered.
[    2.201966] usbcore: registered new interface driver libusual
[    2.210798] mousedev: PS/2 mouse device common for all mice
[    2.219885] bcm2835-cpufreq: min=700000 max=1000000 cur=1000000
[    2.228766] bcm2835-cpufreq: switching to governor powersave
[    2.237185] bcm2835-cpufreq: switching to governor powersave
[    2.245704] cpuidle: using governor ladder
[    2.253524] cpuidle: using governor menu
[    2.261218] sdhci: Secure Digital Host Controller Interface driver
[    2.271150] sdhci: Copyright(c) Pierre Ossman
[    2.279411] sdhci: Enable low-latency mode
[    2.324785] mmc0: SDHCI controller on BCM2708_Arasan [platform] using platforms DMA
[    2.336632] mmc0: BCM2708 SDHC host at 0x20300000 DMA 2 IRQ 77
[    2.348597] sdhci-pltfm: SDHCI platform and OF driver helper
[    2.363980] usbcore: registered new interface driver usbhid
[    2.373615] usbhid: USB HID core driver
[    2.383614] Indeed it is in host mode hprt0 = 00021501
[    2.395438] TCP: cubic registered
[    2.414622] Initializing XFRM netlink socket
[    2.434652] NET: Registered protocol family 17
[    2.454767] Key type dns_resolver registered
[    2.463255] VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5
[    2.505372] registered taskstats version 1
[    2.513511] mmc0: read SD Status register (SSR) after 3 attempts
[    2.535788] Freeing init memory: 136K
[    2.548588] mmc0: new high speed SDHC card at address f33e
[    2.568723] mmcblk0: mmc0:f33e SD08G 7.32 GiB
[    2.591992]  mmcblk0: p1 p2
[    2.665491] udevd[56]: starting version 175
[    2.674733] usb 1-1: new high-speed USB device number 2 using dwc_otg
[    2.701935] Indeed it is in host mode hprt0 = 00001101
[    3.005037] usb 1-1: New USB device found, idVendor=0424, idProduct=9512
[    3.029003] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    3.055549] hub 1-1:1.0: USB hub found
[    3.063505] hub 1-1:1.0: 3 ports detected
[    3.364931] usb 1-1.1: new high-speed USB device number 3 using dwc_otg
[    3.485466] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00
[    3.507742] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    3.537840] smsc95xx v1.0.4
[    3.619741] smsc95xx 1-1.1:1.0: eth0: register smsc95xx at usb-bcm2708_usb-1.1, smsc95xx USB 2.0 Ethernet, b8:27:eb:xx:xx:xx
[    4.289105] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    6.382548] udevd[305]: starting version 175
[    7.575537] Registered led device: led0
[   12.583819] bcm2835 ALSA card created!
[   12.637558] bcm2835 ALSA chip created!
[   12.700339] bcm2835 ALSA chip created!
[   12.748469] bcm2835 ALSA chip created!
[   12.780403] bcm2835 ALSA chip created!
[   12.815338] bcm2835 ALSA chip created!
[   12.845273] bcm2835 ALSA chip created!
[   12.871459] bcm2835 ALSA chip created!
[   18.094175] mmc0: missed completion of cmd 18 DMA (512/512 [1]/[1]) - ignoring it
[   18.105981] mmc0: DMA IRQ 6 ignored - results were reset
[   18.120505] mmc0: missed completion of cmd 18 DMA (512/512 [1]/[1]) - ignoring it
[   18.132412] mmc0: DMA IRQ 6 ignored - results were reset
[   23.021588] NET: Registered protocol family 10
[   23.022886] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   23.042937] Bridge firewalling registered
[   23.100253] device eth0 entered promiscuous mode
[   23.143781] IPv6: ADDRCONF(NETDEV_UP): br0: link is not ready
[   23.927282] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   23.928852] smsc95xx 1-1.1:1.0: eth0: link up, 100Mbps, full-duplex, lpa 0xC1E1
[   23.936603] br0: port 1(eth0) entered forwarding state
[   23.936657] br0: port 1(eth0) entered forwarding state
[   23.936803] IPv6: ADDRCONF(NETDEV_CHANGE): br0: link becomes ready
[   26.747239] bcm2835-cpufreq: switching to governor ondemand
[   26.747270] bcm2835-cpufreq: switching to governor ondemand

 

fsprotect動作の確認

見かけ上、リード・ライト可能なドライブとして動作しますので、パッケージのインストールや削除も、普通に行うことができます。ただし、ファイルの書き込みを伴う動作は、すべてRAMディスク上で処理されていますので、OSの再起動や電源OFFで、”すべての変更は無かったこと” になります。

試しに、動作中にいきなり電源をオフしてみましたが、OSが壊れることはなく正しく起動しました(100回程試験)

さらに、fsprotect.testファイルを作成してみます。中身が空のファイルを作成します。

fsprotect 031 Raspberry Pi でfsprotect

再起動させて、先ほど作成したfsprotect.testファイルが消えていることを確認します。

fsprotect 041 Raspberry Pi でfsprotect

 

SoftEthe VPN やAsteriskの設定変更時の対応

面倒ですが、ユーザ追加などの修正が必要になった場合は、SDカードをWindowsPCに接続して対応します。
※Raspberry Pi上では、見かけ上修正できてもリブートで元に戻りますので、修正できません。

fsprotect 05 Raspberry Pi でfsprotect

cmdline.txt ファイルをエディタで修正します。最後に記述している fsprotect を nofsprotect に変更します。
※この変更を行うことで、通常どうりのリード・ライト可能なファイルシステムに戻ります。

fsprotect 06 Raspberry Pi でfsprotect

 

以上で、「Raspberry Pi でfsprotectを試す」を終了します。

 

Raspberry Pi でAsteriskを試す

8回目の今回は、Raspberry PiにAsteriskをインストールします。

Asteriskは米国のデジウム社(Digium, Inc.)が開発している、オープンソースのIP-PBXのソフトウェアです。
※VPNと一緒に使うと、ひかり電話を世界中のどこからでも、使うことができるようになります。
※携帯電話を接続するネットワーク環境によっては、音声の遅れにより通話に支障がでる可能性があります。

ace6d7c29417e5fa5be490fc2f9824b7 300x238 Raspberry Pi でAsterisk

 

 SoftEther VPN とAsteriskをインストールしたRaspberry Pi は、LAN上に配置します。

 消費電力は2W程度で電気代も気にならないレベルです。

Asteriskの導入事例は、 見積もり2億円のIP電話を820万円で構築した秋田県大館市・・・ を参照ください。
この記事のさらに詳しい解説は、 反響が大きかった大舘市の事例 を参照ください。

 

Asteriskのインストール

最初に、Asteriskのグループ/ユーザーを登録します。

[root@ms03 ~]# groupadd -g 5060 asterisk
[root@ms03 ~]# useradd -g 5060 -u 5060 -d /var/lib/asterisk -s /sbin/nologin asterisk

ソースコードの格納先ディレクトリへ移動し、最新のLTS版のAsterisk 11.3.0-rc1のソースをダウンロードします。
※Asteriskからひかり電話を使用するためには、ソースコードにパッチを当てる必要があります。
※asterisk-11.2.1 では、コンパイル時にエラーが発生し、正しくビルドできませんでした。

[root@ms03 ~]# cd /usr/local/src
[root@ms03 ~]# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-11.3.0-rc1.tar.gz

ダウンロードした圧縮ファイルを展開します。

[root@ms03 src]# tar zxvf asterisk-11.3.0-rc1.tar.gz

ソース格納先ディレクトリへ移動します。

[root@ms03 src]# cd asterisk-11.3.0-rc1

 

Asteriskの日本語対応

日本語メッセージに対応するために、2個のソースファイルにパッチを当てます。
パッチを当てるファイルは、下記のファイルになります

  • app_voicemail.c – ボイスメールメニューの日本語音声ファイル対応
  • say.c        - 音声再生時の日本語音声ファイル対応

日本語パッチを適用するために、パッチファイルをダウンロードします。
まだ、11.3.0に対応したパッチが用意されていないので11.2.1のパッチファイルをダウンロードします。

[root@ms03 asterisk-11.3.0-rc1]# wget http://ftp.voip-info.jp/asterisk/patch/11.2.1/app_voicemail.c.121107-01.patch
[root@ms03 asterisk-11.3.0-rc1]# wget http://ftp.voip-info.jp/asterisk/patch/11.2.1/say.c.121107-01.patch

最初に、ボイスメールメニューの日本語音声ファイル対応パッチを適用します。

[root@ms03 asterisk-11.3.0-rc1]# patch -p0 < app_voicemail.c.121107-01.patch
patching file apps/app_voicemail.c
Hunk #1 succeeded at 7472 (offset 14 lines).
Hunk #2 succeeded at 7520 (offset 14 lines).
Hunk #3 succeeded at 8286 (offset 14 lines).
Hunk #4 succeeded at 9118 (offset 14 lines).
Hunk #5 succeeded at 9888 (offset 14 lines).

次に、音声再生時の日本語音声ファイル対応パッチを適用します。

[root@ms03 asterisk-11.3.0-rc1]# patch -p0 < say.c.121107-01.patch
patching file main/say.c

 

ひかり電話対応ルーター用のパッチ対応

次に、ひかり電話対応ルーター(PR-200NE)にAsteriskを接続するためのパッチを適用します。

[root@ms03 asterisk-11.3.0-rc1]# wget http://ftp.voip-info.jp/asterisk/patch/local/11/channels/chan_sip_rt200ne.121107-01.patch

ダウンロードしたパッチを適用し、PR-200NEを使用できるようにします。

[root@ms03 asterisk-11.3.0-rc1]# patch -p0 < chan_sip_rt200ne.121107-01.patch
patching file channels/chan_sip.c
Hunk #3 succeeded at 18526 (offset 388 lines).
Hunk #4 succeeded at 21655 (offset 393 lines).
Hunk #5 succeeded at 21667 (offset 393 lines).
Hunk #6 succeeded at 31293 (offset 415 lines).
Hunk #7 succeeded at 31767 (offset 415 lines).
Hunk #8 succeeded at 33239 (offset 415 lines).
patching file channels/sip/include/sip.h
Hunk #1 succeeded at 107 (offset 1 line).

mp3に対応するためのスクリプトファイルを実行します。

[root@ms03 asterisk-11.3.0-rc1]# ./contrib/scripts/get_mp3_source.sh
A    addons/mp3
A    addons/mp3/MPGLIB_TODO
A    addons/mp3/mpg123.h
A    addons/mp3/layer3.c
A    addons/mp3/mpglib.h
A    addons/mp3/decode_ntom.c
A    addons/mp3/interface.c
A    addons/mp3/MPGLIB_README
A    addons/mp3/common.c
A    addons/mp3/huffman.h
A    addons/mp3/tabinit.c
A    addons/mp3/Makefile
A    addons/mp3/README
A    addons/mp3/decode_i386.c
A    addons/mp3/dct64_i386.c
リビジョン 199 をエクスポートしました。

 

ソースコードのコンパイル

日本語対応パッチとPR-200NE用のパッチを適用したので、configure , make , make install コマンドを実行します。

[root@ms03 asterisk-11.3.0-rc1]# ./configure
[root@ms03 asterisk-11.3.0-rc1]# make
[root@ms03 asterisk-11.3.0-rc1]# make install

サンプルファイルをインストールします。

[root@ms03 asterisk-11.3.0-rc1]# make samples

asteriskの自動起動ファイルを設定します。

[root@ms03 asterisk-11.3.0-rc1]# make config

asteriskの自動起動設定を確認しておきます。

[root@ms03 asterisk-11.3.0-rc1]# chkconfig asterisk --list
asterisk                  0:off  1:off  2:on   3:on   4:on   5:on   6:off

/etc/init.d/asterisk を開き、起動時のメッセージの表示内容を変更します。(任意)

[root@ms03 asterisk-11.3.0-rc1]# pico /etc/init.d/asterisk
#! /bin/sh
# $Id: rc.debian.asterisk 379790 2013-01-21 20:40:13Z mjordan $
#
# Mon Jun 04 2007 Iñaki Baz Castillo <ibc@in.ilimit.es>
# - Eliminated SAFE_ASTERISK since it doesn't work as LSB script (it could require a independent "safe_asterisk" init script).
# - Load and use the standar "/lib/lsb/init-functions".
# - Added "--oknodo" to "start-stop-daemon" for compatibility with LSB:
#   http://www.linux-foundation.org/spec/refspecs/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html
#
# Thu Nov 17 2005 Gregory Boehnlein <damin@nacs.net>
# - Reversed behavior of LD_ASSUME_KERNEL=2.4.1
# - Added detailed failure messages
#
# Sun Jul 18 2004 Gregory Boehnlein <damin@nacs.net>
# - Added test for safe_asterisk
# - Changed "stop gracefully" to "stop now"
# - Added support for -U and -G command line options
# - Modified "reload" to call asterisk -rx 'reload'

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=asterisk
DESC="Asterisk IP-PBX"
# Full path to asterisk binary
DAEMON=/usr/sbin/asterisk
ASTVARRUNDIR=/var/run/asterisk
ASTETCDIR=/etc/asterisk
TRUE=/bin/true

### BEGIN INIT INFO
# Provides:             asterisk
# Required-Start:       $network $syslog $named $local_fs $remote_fs
# Required-Stop:        $network $syslog $named $local_fs $remote_fs
# Should-Start:         dahdi misdn lcr wanrouter mysql postgresql
# Should-Stop:          dahdi misdn lcr wanrouter mysql postgresql
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Asterisk PBX
# Description:          the Asterisk Open Source PBX
### END INIT INFO

set -e

if ! [ -x $DAEMON ] ; then
        echo "ERROR: $DAEMON not found"
        exit 0
fi

if ! [ -d $ASTETCDIR ] ; then
        echo "ERROR: $ASTETCDIR directory not found"
        exit 0
fi

# Use the LSB standard functions for services management
. /lib/lsb/init-functions

# Allow configuration overrides in /etc/default/asterisk
CONFIG0=`readlink $0 || :` # readlink returns 1 when something isn't a symlink
if [ "$CONFIG0" = "" ]; then
        CONFIGFILE=/etc/default/`basename $0`
else
        CONFIGFILE=/etc/default/`basename $CONFIG0`
fi
[ -r $CONFIGFILE ] && . $CONFIGFILE

case "$1" in
  start)
        # Check if Asterisk is already running.  If it is, then bug out, because
        # starting up Asterisk when Asterisk is already running is very bad.
        VERSION=`${DAEMON} -rx 'core show version' 2>/dev/null || ${TRUE}`
        if [ "`echo $VERSION | cut -c 1-8`" = "Asterisk" ]; then
                echo "Asterisk is already running.  $0 will exit now."
                exit 0
        fi

        log_begin_msg "Starting $DESC: $NAME"
        if [ ! -d $ASTVARRUNDIR ]; then
                mkdir -p $ASTVARRUNDIR
        fi
        if [ $AST_USER ] ; then
                ASTARGS="-U $AST_USER"
                chown $AST_USER $ASTVARRUNDIR
        fi
        if [ $AST_GROUP ] ; then
                ASTARGS="$ASTARGS -G $AST_GROUP"
                chgrp $AST_GROUP $ASTVARRUNDIR
        fi
        if [ $ALTCONF ]; then
                ASTARGS="$ASTARGS -C \"$ALTCONF\""
        fi
        if [ "x$COREDUMP" = "xyes" ]; then
                ASTARGS="$ASTARGS -g"
        fi
        if [ "0$MAXLOAD" -gt "0" ]; then
                ASTARGS="$ASTARGS -L $MAXLOAD"
        fi
        if [ "0$MAXCALLS" -gt "0" ]; then
                ASTARGS="$ASTARGS -M $MAXCALLS"
        fi
        if [ "0$VERBOSITY" -gt "0" ]; then
                for i in `seq 1 $VERBOSITY`; do
                        ASTARGS="$ASTARGS -v"
                done
                # -v implies -f, so we override that implicit specification here
                ASTARGS="$ASTARGS -F"
        fi
        if [ "x$INTERNALTIMING" = "xyes" ]; then
                ASTARGS="$ASTARGS -I"
        fi
        if [ "x$TEMPRECORDINGLOCATION" = "xyes" -o "x$TMPRECORDINGLOCATION" = "xyes" ]; then
                ASTARGS="$ASTARGS -t"
        fi
        if test "x$COLOR" = "xno" ; then
                ASTARGS="$ASTARGS -n"
        fi
        # "start-stop-daemon --oknodo" returns 0 even if Asterisk was already running (as LSB expects):
        start-stop-daemon --start --oknodo --exec $DAEMON -- $ASTARGS
        log_end_msg $?
        ;;
  stop)
        log_begin_msg "Stopping $DESC: $NAME"
        # "start-stop-daemon --oknodo" returns 0 even if Asterisk was already stopped (as LSB expects):
        start-stop-daemon --stop --oknodo --exec $DAEMON
        log_end_msg $?
        ;;
  reload)
        echo "Reloading $DESC configuration files."
        $DAEMON -rx 'module reload' > /dev/null 2> /dev/null
        ;;
  restart|force-reload)
        $0 stop
        sleep 2  # It needs some time to really be stopped.
        $0 start
        # "restart|force-reload" starts Asterisk and returns 0 even if Asterisk was stopped (as LSB expects).
        ;;
  status)
       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
       ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|reload|force-reload|status}" >&2
        exit 1
        ;;
esac

asteriskのインストールが完了しましたので、ダウンロードファイルを削除しておきます。

[root@ms03 asterisk-11.3.0-rc1]# cd ..
[root@ms03 src]# rm -f asterisk-11.3.0-rc1.tar.gz

 

日本語音声ファイルのインストール

最後に、日本語音声ファイルをインストールします。
Asterisk 11用の音声ファイルは、2013年3月現在、用意されていませんので1.6用のものを使用します。

/var/lib/asterisk/soundsディレクトリへ移動します。

[root@ms03 ~]# cd /var/lib/asterisk/sounds

日本語音声ファイルをダウンロードします。

[root@ms03 sounds]# wget ftp://ftp.voip-info.jp/asterisk/sounds/1_6/asterisk-sound-jp_16_pre.tar.gz

ダウンロードした圧縮ファイルを展開します。

[root@ms03 sounds]# tar zxvf asterisk-sound-jp_16_pre.tar.gz

展開に使用した圧縮ファイルを削除しておきます。

[root@ms03 sounds]# rm -f asterisk-sound-jp_16_pre.tar.gz

追加した日本語音声ファイルを使用するために、/etc/asterisk/asterisk.confを修正します。
[options]セクションにlanguageprefix=yesを有効にします。(コメント扱いをやめます)

[root@ms03 sounds]# pico /etc/asterisk/asterisk.conf
languageprefix = yes            	; Use the new sound prefix path syntax.

 

サンプル設定ファイルの作成

Asteriskに標準添付されている設定ファイルは、わかりにくいのでシンプルな設定ファイルを使用するするようにします。
ここでは、オリジナルのAsteriskディレクトリをバックアップしておき、設定ファイル保存先で、サンプルの設定ファイルをダウンロードして展開し、オリジナルファイルを上書きします。

/etcディレクトリへ移動します。

[root@ms03 ~]# cd /etc

Asteriskディレクトリをasterisk.bakというディレクトリ名でバックアップしておきます。

[root@ms03 etc]# cp –r asterisk asterisk.bak

asteriskディレクトリへ移動し、サンプル設定ファイルをダウンロードし、展開します。

[root@ms03 etc]# cd asterisk
[root@ms03 asterisk]# wget http://ftp.voip-info.jp/asterisk/conf/conf-sample-1.6_01.tar.gz
[root@ms03 asterisk]# tar zxvf conf-sample-1.6_01.tar.gz

サンプルの設定ファイルの展開が出来ましたので、ダウンロードした圧縮ファイルを削除しておきます。

[root@ms03 asterisk]# rm -f conf-sample-1.6_01.tar.gz

rootディレクトリへ戻ります。

[root@ms03 asterisk]# cd

 

Asteriskのパーミッション設定

Asteriskで使用するディレクトリとファイルの所有者・グループをasteriskへ変更します。

[root@ms03 ~]# chown -R asterisk. /var/run/asterisk
[root@ms03 ~]# chown -R asterisk. /var/lib/asterisk
[root@ms03 ~]# chown -R asterisk. /var/log/asterisk
[root@ms03 ~]# chown -R asterisk. /var/spool/asterisk
[root@ms03 ~]# chown -R asterisk. /usr/lib/asterisk
[root@ms03 ~]# chown -R asterisk. /etc/asterisk

Asteriskで使用するディレクトリとファイルのパーミッションを変更します。

[root@ms03 ~]# chmod -R u=rwX,g=rX,o= /var/run/asterisk
[root@ms03 ~]# chmod -R u=rwX,g=rX,o= /var/lib/asterisk
[root@ms03 ~]# chmod -R u=rwX,g=rX,o= /var/log/asterisk
[root@ms03 ~]# chmod -R u=rwX,g=rX,o= /var/spool/asterisk
[root@ms03 ~]# chmod -R u=rwX,g=rX,o= /usr/lib/asterisk
[root@ms03 ~]# chmod -R u=rwX,g=rX,o= /etc/asterisk

Asteriskの設定ファイルを変更します。
[directories]のastrundir => /var/run/asterisk に変更します。
最終行の[options]に、runuser = asterisk と rungroup = asterisk の設定を追加します。

[directories]
astetcdir => /etc/asterisk
astmoddir => /usr/lib/asterisk/modules
astvarlibdir => /var/lib/asterisk
astagidir => /var/lib/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run/asterisk
astlogdir => /var/log/asterisk

[options]
languageprefix=yes
runuser = asterisk
rungroup = asterisk

ここで、一旦、サーバを再起動させて、asteriskが正しく起動することを確認しておきます。

[root@ms03 ~]# reboot

RaspberryPi Asterisk 01 273x300 Raspberry Pi でAsterisk

 

 

 Asteriskの起動時のメッセージを確認します。

起動時、/var/run/asteriskディレクトリ内に、asterisk.ctlとasterisk.pidファイルが作成されることを確認しておきます。

[root@ms03 ~]# ll /var/run/asterisk/
srwxr-xr-x 1 asterisk asterisk 0  3月 16 15:03 asterisk.ctl
-rw-r--r-- 1 asterisk asterisk 5  3月 16 15:03 asterisk.pid

 

Asteriskの動作確認

自動起動することが確認できたので、次はasterisk -vvvrと入力して、Asteriskのコンソールが起動することを確認します。

[root@ms03 ~]# asterisk -vvvr
Asterisk 11.3.0-rc1, Copyright (C) 1999 - 2012 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type core show warranty for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type core show license for details.
=========================================================================
Running as user asterisk
Running under group asterisk
Connected to Asterisk 11.3.0-rc1 currently running on ms03 (pid = 2141)
ms03*CLI>?
!              acl            ael            agent          agi
aoc            calendar       cc             cdr            cel
channel        cli            confbridge     config         core
data           database       devstate       dialplan       dnsmgr
dundi          event          fax            features       file
group          hangup         help           http           iax2
indication     keys           local          logger         manager
minivm         mixmonitor     module         moh            no
originate      parkedcalls    phoneprov      presencestate  pri
queue          realtime       reload         rtcp           rtp
say            sip            stun           timing         udptl
ulimit         unistim        voicemail
ms03*CLI> sip show ?
channel        channels       channelstats   domains        history
inuse          mwi            objects        peer           peers
registry       rt200ne        sched          settings       subscriptions
tcp            users          user
ms03*CLI> quit
Asterisk cleanly ending (0).
Executing last minute cleanups

 

ログファイルの対応

Asteriskのインストール時に作成された/var/log/asteriskディレクトリは、RAMディスク上に配置されていますので、電源オフ(または、OS再起動)で消えてしまいます。rc.localに追記し、OS起動時、自動でディレクトリを作成するようにします。

[root@ms03 ~]# pico /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

# 起動時、自動的にディレクトリを作成
mkdir -p /var/log/ConsoleKit
mkdir -p /var/log/samba
mkdir -p /var/log/asterisk
mkdir -p /var/log/asterisk/cdr-csv
mkdir -p /var/log/asterisk/cdr-custom
mkdir -p /var/log/chkrootkit
mkdir -p /var/log/fsck
mkdir -p /var/log/apt
mkdir -p /var/log/ntpstats
mkdir -p /var/log/paco
chown -R asterisk. /var/log/asterisk
chown root.ntp /var/log/ntpstats
chown root.adm /var/log/samba

# 起動時、自動的にLastlogとwtmp,btmpファイルの空ファイルを作成
touch /var/log/lastlog
touch /var/log/wtmp
touch /var/log/btmp
chown root.utmp /var/log/lastlog
chown root.utmp /var/log/wtmp
chown root.utmp /var/log/btmp

(略)

 

使用しないドライバのロード停止

使用しないドライバ(func_iconv.so , pbx.ael.so)をロードしないように変更します。
※ログファイルに、noticeログが記録され、目障りとなりますので、事前に対応しておきます。

[root@ms03 ~]# pico /etc/asterisk/modules.conf
[modules]
; loader.c: Error loading module func_iconv.so: libiconv.so.2: cannot open shared object file: No such file or directory
noload => func_iconv.so
;
;pbx_ael.c: AEL load process: parsed config file name /etc/asterisk/extensions.ael.
noload => pbx_ael.so

 

sip.conf ファイルの設定

ひかり電話対応ルータに認証するための設定や、SIPユーザを登録するためのファイルとなります。
子機(ユーザ)の追加、削除、変更はこのファイルを編集することで実現します。

sip.confファイルを変更する前に、初期状態のファイルをバックアップしておき、サンプル設定を修正します。

[root@ms03 ~]# cp /etc/asterisk/sip.conf /etc/asterisk/sip.conf.org
[root@ms03 ~]# pico /etc/asterisk/sip.conf
[general]
maxexpirey=3600
defaultexpirey=3600
context=default
port=5060
bindaddr=0.0.0.0
srvlookup=yes
allowguest=no

disallow=all
allow=ulaw
allow=alaw
allow=gsm

language=ja
localnet=192.168.0.0/255.255.255.0
nat=force_rport

;相手先の存在確認を行う
qualify=yes

videosupport=no

;iPhoneでの待ち受け対応
tcpenable=yes
transport=udp,tcp

;PR-200NE のプライベートIPアドレスの指定
rt200ne=192.168.1.1

;ひかり電話対応ルータの内線設定
register => 7:ルータへ登録したパスワード:0007@hikari-denwa/200

[201]
type=friend
defaultuser=201
secret=内線201のパスワード
canreinvite=no
host=dynamic
dtmfmode=inband
callgroup=1
pickupgroup=1
;mailbox=201

[202]
type=friend
defaultuser=202
secret=内線202のパスワード
canreinvite=no
host=dynamic
dtmfmode=inband
callgroup=1
pickupgroup=1
;mailbox=202

[203]
type=friend
defaultuser=203
secret=内線203のパスワード
canreinvite=no
host=dynamic
dtmfmode=inband
callgroup=1
pickupgroup=1
;mailbox=203

; PR-200NE ひかり電話の設定
[hikari-denwa]
type=friend
secret=ルータへ登録したパスワード
port=5060
defaultuser=0007
fromuser=7
host=192.168.1.1
fromdomain=192.168.1.1
context=default
insecure=invite,port
dtmfmode=inband
canreinvite=no
disallow=all
allow=ulaw
callgroup=1
picupgroup=1
session-expires=300
session-minse=300

 

PR-200NE(ルータ)の設定

ルータの電話設定 - 内線設定 を選択して、Asteriskをひかり電話の子機(SIPクライアント)として登録します。
下記の設定のユーザIDとパスワードはメモしておきます。Asteriskのsip.conf設定で使用します。

RaspberryPi Asterisk 02 300x246 Raspberry Pi でAsterisk

 

 内線番号 : 7
 端末属性 : 音声専用端末
 MACアドレス : Raspberry Pi(サーバ)のMACアドレス
 ユーザID : 0007
 パスワード : パスワードを設定します

 

ひかり電話対応ルーター(PR-200NE)へのRegister確認

ひかり電話対応ルーターへAsteriskを接続する準備が整いましたので、正しく認証されることを確認します。

修正した”sip.conf”ファイルをAsteriskに読み込ませるために、ここで一旦、Asteriskを再起動させます。

[root@ms03 ~]# service asterisk restart
[ ok ] Stopping Asterisk IP-PBX: asterisk.
[ ok ] Starting Asterisk IP-PBX: asterisk.

次に、ひかり電話対応ルータのsipサーバに、Asteriskが認証されていることを確認します。
Asterisk管理コンソールを使用して、”sip show registry” コマンドで認証状況を確認することができます。
※asterisk -vvvvr の ”v” 数がログの多さの指定となります。

[root@ms03 ~]# asterisk -vvvvr
Asterisk 11.3.0-rc1, Copyright (C) 1999 - 2012 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type core show warranty for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type core show license for details.
=========================================================================
Running as user asterisk
Running under group asterisk
Connected to Asterisk 11.3.0-rc1 currently running on ms03 (pid = 4114)
ms03*CLI> sip show rt200ne
RT-200NE at ..
- 192.168.1.1
ms03*CLI> sip show registry
Host                                    dnsmgr Username       Refresh State                Reg.Time
hikari-denwa:5060                       N      7                 3585 Registered           Sat, 16 Mar 2013 15:20:21
1 SIP registrations.
ms03*CLI> sip show peers
Name/username             Host                                    Dyn Forcerport ACL Port     Status      Description                
201/201                   192.168.0.xxx                            D   a             1088     OK (102 ms)
202/202                   (Unspecified)                            D   a             0        UNKNOWN     
203/203                   (Unspecified)                            D   a             0        UNKNOWN                      
hikari-denwa/0007         192.168.1.1                                  a             5060     OK (5 ms)                              
7 sip peers [Monitored: 3 online, 4 offline Unmonitored: 0 online, 0 offline]

 

外線発信の設定

Asteriskでは、外線発信の設定を”extensions.conf”ファイルに記述します。
設定ファイル格納先ディレクトリへ移動し、オリジナルの設定ファイルをバックアップした後、extensions.confを修正します。

[root@ms03 ~]# cd /etc/asterisk/
[root@ms03 asterisk]# cp extensions.conf extensions.conf.org
[root@ms03 asterisk]# pico extensions.conf

extensions.conf 2 Raspberry Pi でAsterisk

 

VPN接続でAsterisk

スマホ(au EVO3D)を使用して、自宅(または職場)のVPNサーバ(SoftEther VPN)に接続します。
※スマホ(EVO3DやiPhone)からの接続は、L2TP/IPsecでの接続となります。

Android端末のVPN接続設定は、 Android からの接続方法 を参照ください。

Raspberry Pi VPN EVO3D 01 168x300 Raspberry Pi でAsterisk

 

 

 VPN接続時は、接続先のネットワークリソースにアクセスできます。

 sambaサーバが稼動していれば、ファイル共有が可能です。

VPN接続が完了したら、SIPアプリ(3CXPhone)を起動します。
接続先 , ユーザIDとパスワード情報等を設定しAsteriskに接続すると、内線電話として認識されます。

Raspberry Pi VPN EVO3D 02 168x300 Raspberry Pi でAsterisk

 

 

 ひかり電話を利用して外線への通話が可能です。

 内線同士の通話は、無料となります。

 

以上で、「Raspberry Pi でAsteriskを試す」を終了します。

 

SoftEther VPN 1.0 RC2でtapデバイスを試す

7回目の今回は、Raspberry PiにインストールしたSoftEther VPN 1.0 RC2 でtapデバイスを試します。

LinuxにSoftEther VPN Server をインストールすると、Linux固有の制限事項により、SoftEther VPN をインストールしたサーバ自身に、クライアントPCからアクセスすることが出来ないという、「困った問題」が発生します。
※サーバにインストールしたWebサーバやAsteriskをVPN接続したクライアントPCから使えません!

詳細は、こちら SoftEther VPN マニュアル – ローカルブリッジ を参照ください。

この問題に対処するために、今回は、SoftEther VPN のtapデバイス機能を使用します。
USBタイプのLANアダプタ(有線 or 無線)を追加することでも対応可能ですが、サーバ専用機としてRaspberry Piを使用する当方としては、余分なハードウェアは、追加したくはありません。 Simple is best! ですね。

 

tapデバイス使用時の概要

Raspberry PiにSoftErher VPN 1.00 RC2をインストールし、tapデバイスを使用するためには、SoftEther VPNの設定とLinux OSのネットワーク設定の変更が必要となります。

  • SoftEther VPN サーバ管理マネージャで、tapデバイスをローカルブリッジさせる
  • Linux OS起動時に、物理的なネットワークアダプタ(eth0)を仮想ブリッジにブリッジさせる
  • スタートアップスクリプトを修正し、VPNサーバ起動時に、tapデバイスを仮想ブリッジにブリッジさせる

Linux OSで、tapデバイスを使用する場合の構成図を以下に示します。

SE VPN Server kouseizu 300x240 SoftEther VPN 1.0 RC2でtap

 

ローカルブリッジ設定の変更

SoftEther VPN サーバ管理マネージャでローカルブリッジをtapデバイスに変更します。

SE VPN Server Manager 01 300x278 SoftEther VPN 1.0 RC2でtap

 

 

 設定済みであるローカルブリッジ設定を削除します。
 ローカルブリッジの削除をクリックします。

SE VPN Server Manager 02 300x278 SoftEther VPN 1.0 RC2でtap

 

 仮想HUBを選択します。

 新しいtapデバイスとのブリッジ接続を選択します。

 新しいtapデバイス名を入力します。

 入力が完了したら、ローカルブリッジを追加をクリックします。

SE VPN Server Manager 03 300x278 SoftEther VPN 1.0 RC2でtap

 

 

 tapデバイスがローカルブリッジされたことを確認して、閉じるをクリックします。

SE VPN Server Manager 04 300x197 SoftEther VPN 1.0 RC2でtap

 

 ネットワーク設定を確認します。

 tapデバイスが追加されていることを確認します。

 

ネットワーク設定の変更

Linux OS 側で、仮想ブリッジ (br0) を追加するために、ネットワーク設定を変更します。

最初に、bridge-utilsパッケージをインストールします。

[root@ms03 ~]# apt-get install bridge-utils

次に/etc/network/interfaces を編集して、物理的なネットワークアダプタ(eth0)を仮想ブリッジ(br0)にブリッジさせます。このとき、IPアドレス等の設定は、br0に割り当てし、eth0にはipアドレスを割り当てないようにします。

[root@ms03 ~]# pico /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

# SoftEther VPN 1.0 RC2
auto br0
iface br0 inet static
address 192.168.0.xx
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

# tapデバイスはvpnserverでブリッジさせるので、eth0のみをブリッジする
bridge_ports eth0
bridge_maxwait 10

 

スタートアップスクリプトの変更

スタートアップスクリプトファイルを修正して、vpnserverを起動時にtapデバイスを仮想ブリッジへブリッジするように変更します。

[root@ms03 ~]# pico /etc/init.d/vpnserver
#!/bin/sh
### BEGIN INIT INFO
# Provides:                 vpnserver
# Required-Start:           $local_fs $network
# Required-Stop:            $local_fs $network
# Default-Start:            2 3 4 5
# Default-Stop:             0 1 6
# Short-Description:        SoftEther VPN 1.0 RC2
# Description:              Start vpnserver daemon SoftEther VPN 1.0 Server
### END INIT INFO
 
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/vpnserver
 
. /lib/lsb/init-functions
 
test -x $DAEMON || exit 0
 
case "$1" in
start)
sleep 3
log_daemon_msg "Starting SoftEther VPN 1.0 Server" "vpnserver"
$DAEMON start >/dev/null 2>&1
touch $LOCK
log_end_msg 0
sleep 3
 
# SoftEther VPNで追加した仮想tapデバイス名を調べる
tap=`/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}'`
/sbin/brctl addif br0 $tap
;;
 
stop)
log_daemon_msg "Stopping SoftEther VPN 1.0 Server" "vpnserver"
$DAEMON stop >/dev/null 2>&1
rm $LOCK
log_end_msg 0
sleep 2
 
;;
 
restart)
$DAEMON stop
sleep 2
 
$DAEMON start
sleep 5
# SoftEther VPNで追加した仮想tapデバイス名を調べる
tap=`/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}'`
/sbin/brctl addif br0 $tap
;;
 
status)
    if [ -e $LOCK ]
    then
        echo "vpnserver is running."
    else
        echo "vpnserver is not running."
    fi
;;
*)
 
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0

 

ここで、一旦、再起動させて、ネットワーク設定を確認します。

[root@ms03 ~]# reboot

SE VPN Server Manager 05 270x300 SoftEther VPN 1.0 RC2でtap

 

 

 起動時、br0インタフェースが起動していることを確認します。
 ※この時点では、tapデバイスはまだ起動していません。

 

 最後にvpnserverが起動し、tapデバイスをブリッジします。

 

ブリッジ動作の確認

ネットワーク設定を確認します。

[root@ms03 ~]# ifconfig
br0       Link encap:イーサネット  ハードウェアアドレス 00:ac:09:19:30:ae
          inetアドレス:192.168.0.xx ブロードキャスト:192.168.0.255  マスク:255.255.255.0
          inet6アドレス: fe80::ba27:ebff:feba:fb3d/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:399 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:402 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:0
          RXバイト:57783 (56.4 KiB)  TXバイト:57087 (55.7 KiB)

eth0      Link encap:イーサネット  ハードウェアアドレス b8:27:eb:xx:xx:xx
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:399 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:402 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000
          RXバイト:57915 (56.5 KiB)  TXバイト:61651 (60.2 KiB)

lo        Link encap:ローカルループバック
          inetアドレス:127.0.0.1 マスク:255.0.0.0
          inet6アドレス: ::1/128 範囲:ホスト
          UP LOOPBACK RUNNING  MTU:16436  メトリック:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:0
          RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)

tap_vlan  Link encap:イーサネット  ハードウェアアドレス 00:ac:09:19:30:ae
          inet6アドレス: fe80::2ac:9ff:fe19:30ae/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:49 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:500
          RXバイト:0 (0.0 B)  TXバイト:3128 (3.0 KiB) 

eth0とtap_vlanがブリッジされていることを確認します。
※interfaceにeth0とtap_vlanが表示されていればOKです。

[root@ms03 ~]# brctl show br0
bridge name     bridge id               STP enabled     interfaces
br0             8000.00ac091930ae       no              eth0
                                                        tap_vlan


<注意事項>
networkingを再起動させると、tapデバイスのブリッジ設定は、消えてしまいます。
その時は、vpnserverを再起動させることで、tapデバイスのブリッジ設定は復活します。

[root@ms03 ~]# /etc/init.d/networking restart
[root@ms03 ~]# /etc/init.d/vpnserver restart

 

VPNサーバへのping動作

VPN接続中のクライアントPCから、SoftEther VPN をインストールしたサーバへpingを打ちます。

SE VPN Server tap 01 300x151 SoftEther VPN 1.0 RC2でtap

 

 サーバから正しく応答が返ることを確認します。

 

以上で、「SoftEther VPN 1.0 RC2でtapデバイスを試す」を終了します。

 

Raspberry Pi でSoftEther VPN 1.0 RC2を試す

6回目の今回は、Raspberry PiにSoftEther VPN 1.0 RC2 をインストールします。

2013年3月8日、待望のPacketiX VPN 4.0 のフリーウェア版である、SoftEther VPN 1.0 RC2 (Release Candidate 2) のダウンロード提供が開始されました。
※SoftEther VPN 1.0 は、「2013年の中頃にオープンソース化」されるとのことです。(予定)

SoftEther VPN の詳細は、こちら SoftEther VPN プロジェクト のWebサイト を参照ください。

早速、下図のようなネットワーク環境に、SoftEther VPNをインストールして、使い心地を試したいと思います。

ace6d7c29417e5fa5be490fc2f9824b7 300x238 Raspberry PiでSoftEther VPN

 

 SoftEther VPN をインストールしたRaspberry Pi は、LAN上に配置します。

 消費電力は2W程度で電気代も気にならないレベルです。

 

SoftEther VPN の制限事項

PacketiX VPN 4.0 で使用できて、SoftEther VPN で使用できなくなった機能がいくつかあります。
SOHOで使用する場合はさほど問題にはならない機能ですが、syslog 転送が使えないのは残念です・・・

※VPNの設定は、PacketiX VPN 4.0 RC2 の設定ファイル(vpn_server.config)をそのまま引き継げました。
※VPNサーバ管理マネージャは、PacketiX/SoftEtherどちらのソフトウェアを使用しても、問題なくVPNサーバへの接続が可能でした。

  • ログ保存設定は使えません。(グレーアウト)
  • syslog の転送機能は使えません。(グレーアウト)
  • DoS 防御機能は使えません。
  • 外部サーバによるユーザー認証機能は使えません。(RADIUS / NT Domain)
  • RSA証明書認証機能は使えません。
  • 接続元IPアドレス制限機能は使えません。

 

SoftEther VPN 1.0 RC2 のインストール

Raspberry Pi にSoftEther VPN 1.0 RC2 をインストールします。

PacketiX VPN 4.0 RC2をMicroServerへインストールする場合と同一の手順で、インストールを行うことが可能です。違いは、OSがCentOSからDebianになっている関係で、自動起動設定ファイル(/etc/init.d/vpnserver)の対応が必要なことぐらいです。

ダウンロードファイルの展開先へ移動して、SoftEther VPN 1.0 RC2をダウンロードします。
※ダウンロードするファイルは、その時点の最新版を指定するようにします。(3月19日現在、build 9029が最新)

[root@ms03 ~]# cd /usr/local/src/
[root@ms03 src]# wget http://www.softether-download.com/files/softether/v1.00-9022-rc2-2013.03.07-tree/Linux/SoftEther%20VPN%20Server/32bit%20-%20ARM%20EABI/softether-vpnserver-v1.00-9022-rc2-2013.03.07-linux-arm_eabi-32bit.tar.gz

ダウンロードした圧縮ファイルを展開します。

[root@ms03 src]# tar zxvf softether-vpnserver-v1.00-9022-rc2-2013.03.07-linux-arm_eabi-32bit.tar.gz

展開先のディレクトリへ移動して、makeコマンドを実行します。ライセンス契約を読み、同意します。

[root@ms03 src]# cd vpnserver
[root@ms03 vpnserver]# make
--------------------------------------------------------------------

SoftEther VPN Server (Ver 1.00, Build 9022, ARM EABI) for Linux Install Utility
Copyright (c) SoftEther Project at University of Tsukuba, Japan. All Rights Reserved.

--------------------------------------------------------------------


Do you want to read the License Agreement for this software ?

 1. Yes
 2. No

(略)

VPN Tools を起動しました。HELP と入力すると、使用できるコマンド一覧が表示できます。

VPN Tools>Check
Check コマンド - SoftEther VPN の動作が可能かどうかチェックする
---------------------------------------------------
SoftEther VPN 動作環境チェックツール

Copyright (c) SoftEther Project.
All Rights Reserved.

この動作環境チェックツールを実行したシステムがテストに合格した場合は、SoftEther VPN ソフトウェアが動作する可能性が高いです。チェックにはしばらく時間がかかる場合があります。そのままお待ちください...

カーネル系 のチェック中...
              [合格] ○
メモリ操作系 のチェック中...
              [合格] ○
ANSI / Unicode 文字列処理系 のチェック中...
              [合格] ○
ファイルシステム のチェック中...
              [合格] ○
スレッド処理システム のチェック中...
              [合格] ○
ネットワークシステム のチェック中...
              [合格] ○

すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。

コマンドは正常に終了しました。


--------------------------------------------------------------------
The preparation of SoftEther VPN Server is completed !


*** How to switch the display language of the SoftEther VPN Server Service ***
SoftEther VPN Server supports the following languages:
  - Japanese
  - English
  - Simplified Chinese

You can choose your prefered language of SoftEther VPN Server at any time.
To switch the current language, open and edit the lang.config file.


*** How to start the SoftEther VPN Server Service ***

Please execute ./vpnserver start to run the SoftEther VPN Server Background Service.
And please execute ./vpncmd to run the SoftEther VPN Command-Line Utility to configure SoftEther VPN Server.
Of course, you can use the VPN Server Manager GUI Application for Windows on the other Windows PC in order to configure the SoftEther VPN Server remotely.
--------------------------------------------------------------------

make[1]: ディレクトリ /usr/local/src/vpnserver から出ます

makeコマンドが正常に完了したら、vpnserverディレクトリを/usr/local 配下に移動させます。

[root@ms03 vpnserver]# cd ..
[root@ms03 src]# mv vpnserver /usr/local

インストールに使用したダウンロードファイルを削除しておきます。

[root@ms03 src]# rm -f softether-vpnserver-v1.00-9022-rc2-2013.03.07-linux-arm_eabi-32bit.tar.gz

vpnserverのインストール先へ移動して、パーミッションをroot権限でなければ読み書きできないように変更します。

[root@ms03 src]# cd /usr/local/vpnserver/
[root@ms03 vpnserver]# chmod 600 *
[root@ms03 vpnserver]# chmod 700 vpncmd
[root@ms03 vpnserver]# chmod 700 vpnserver

vpnserver の動作を開始する前に、VPN Server を正しく動作させることができるかどうかの最終確認を行います。
vpncmd コマンドライン管理ユーティリティを使用すると、Raspberry Pi 上で VPN Server を動作させられるかどうか(十分な機能を持っているかどうか)を、検査することができます。

[root@ms03 vpnserver]# ./vpncmd
vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ
SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
Version 1.00 Build 9022 Release Candidate 2 (Japanese)
Compiled 2013/03/07 22:18:11 by yagi at pc26
Copyright (c) SoftEther Project. All Rights Reserved.

vpncmd プログラムを使って以下のことができます。

1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)

1 - 3 ?選択: 3

VPN Tools を起動しました。HELP と入力すると、使用できるコマンド一覧が表示できます。

VPN Tools>check
Check コマンド - PacketiX VPN の動作が可能かどうかチェックする
---------------------------------------------------
PacketiX VPN 動作環境チェックツール

Copyright (c) SoftEther Corporation.
All Rights Reserved.

この動作環境チェックツールを実行したシステムがテストに合格した場合は、SoftEther VPN ソフトウェアが動作する可能性が高いです。チェックにはしばらく時間がかかる場合があります。そのままお待ちください...

カーネル系 のチェック中...
              [合格] ○
メモリ操作系 のチェック中...
              [合格] ○
ANSI / Unicode 文字列処理系 のチェック中...
              [合格] ○
ファイルシステム のチェック中...
              [合格] ○
スレッド処理システム のチェック中...
              [合格] ○
ネットワークシステム のチェック中...
              [合格] ○

すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。

コマンドは正常に終了しました。



VPN Tools>exit

 

スタートアップスクリプトへの登録

SoftEther VPN のインストールが完了したら、/usr/local/vpnserver/vpnserver プログラムを、Linux が起動している間は常にバックグラウンドで動作し続けるデーモンプロセスとして登録します。

/etc/init.d/vpnserver という名前で、スタートアップスクリプトファイルを新規に作成します。
※Debianでは、LOCKファイルの保存先ディレクトリは /var/lock/ を指定します。

[root@ms03 vpnserver]# pico /etc/init.d/vpnserver
#!/bin/sh
### BEGIN INIT INFO
# Provides:                     vpnserver
# Required-Start:               $local_fs $network
# Required-Stop:                $local_fs $network
# Default-Start:                2 3 4 5
# Default-Stop:                 0 1 6
# Short-Description:            SoftEther VPN 1.0 RC2
# Description:                  Start vpnserver daemon SoftEther VPN 1.0 Server
### END INIT INFO

DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/vpnserver

. /lib/lsb/init-functions

test -x $DAEMON || exit 0

case "$1" in
start)
sleep 3
log_daemon_msg "Starting SoftEther VPN 1.0 Server" "vpnserver"
$DAEMON start >/dev/null 2>&1
touch $LOCK
log_end_msg 0
sleep 3

;;

stop)
log_daemon_msg "Stopping SoftEther VPN 1.0 Server" "vpnserver"
$DAEMON stop >/dev/null 2>&1
rm $LOCK
log_end_msg 0
sleep 2

;;

restart)
$DAEMON stop
sleep 2

$DAEMON start
sleep 5

;;

status)
    if [ -e $LOCK ]
    then
        echo "vpnserver is running."
    else
        echo "vpnserver is not running."
    fi
;;
*)

echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0


作成したスタートアップスクリプトファイル(vpnserver)に実行権限を付与します。

[root@ms03 vpnserver]# chmod +x /etc/init.d/vpnserver

chkconfigコマンドを使用して、起動時にスタートアップスクリプトファイルが自動的にバックグラウンドで起動するように設定します。

[root@ms03 vpnserver]# chkconfig vpnserver on
[root@ms03 vpnserver]# chkconfig vpnserver --list
vpnserver      0:off  1:off  2:on   3:on   4:on   5:on   6:off

ここで、vpnserverを起動させます。

[root@ms03 vpnserver]# /etc/init.d/vpnserver start
[ ok ] Starting SoftEther VPN 1.0 Server: vpnserver.

 

VPN管理マネージャのインストール

softether-vpnserver_vpnbridge-v1.00-9022-rc2-2013.03.07-windows-x86_x64-intel.exe をWindows PC上でダウンロードしてインストールします。

こちら SoftEther VPNサーバの管理ツールのダウンロード からダウンロードします。

ダウンロードしたファイル(実行ファイル)を、ダブルクリックして、管理ツールのインストールを行います。

SoftEther VPN1.0 01 300x214 Raspberry PiでSoftEther VPN

 

 次へをクリックします。

SoftEther VPN1.0 02 300x214 Raspberry PiでSoftEther VPN

 

 管理ツールのみを選択して、次へをクリックします。

SoftEther VPN1.0 03 300x214 Raspberry PiでSoftEther VPN

 

 使用許諾契約書に同意して、次へをクリックします。

SoftEther VPN1.0 04 300x214 Raspberry PiでSoftEther VPN

 

 重要事項説明書を読み、次へをクリックします。

SoftEther VPN1.0 05 300x214 Raspberry PiでSoftEther VPN

  

 インストール先ディレクトリを選択て、次へをクリックします。

SoftEther VPN1.0 06 300x214 Raspberry PiでSoftEther VPN

 

 次へをクリックし、インストール処理を開始します。

SoftEther VPN1.0 07 300x214 Raspberry PiでSoftEther VPN

 

 インストールが完了するまで待ちます。

SoftEther VPN1.0 08 300x214 Raspberry PiでSoftEther VPN

 

 インストールが完了したら、完了をクリックします。

 

VPN Server の設定

SoftEther VPN Server Manager のインストールが完了したら、VPNの接続設定を行います。

SE VPN Server Manager 01 254x300 Raspberry PiでSoftEther VPN

 

 

 新しい接続設定をクリックします。

SE VPN Server Manager 02 300x192 Raspberry PiでSoftEther VPN

 

 接続設定名を入力します。(設定名は任意の名前でOK)
 ホスト名を(Raspberry PiのIPアドレス)入力します。

  入力が完了したらOKをクリックします。

SE VPN Server Manager 03 300x230 Raspberry PiでSoftEther VPN

 

 パスワードの欄は入力せずに、OKをクリックします。

SE VPN Server Manager 04 300x135 Raspberry PiでSoftEther VPN

 
 パスワード を入力し、OKをクリックします。

SE VPN Server Manager 05 Raspberry PiでSoftEther VPN

 
 OKをクリックします。

SE VPN Server Manager 07 300x220 Raspberry PiでSoftEther VPN

 

 リモートアクセスVPNサーバーにチェックを入れて、次へをクリックします。

SE VPN Server Manager 08 300x54 Raspberry PiでSoftEther VPN

 はいをクリックします。

SE VPN Server Manager 09 300x136 Raspberry PiでSoftEther VPN

 
 OKをクリックします。

SE VPN Server Manager 10 300x219 Raspberry PiでSoftEther VPN

 

 ダイナミックDNSホスト名を設定して上記のDNSホスト名に変更するをクリックします。

SE VPN Server Manager 11 300x113 Raspberry PiでSoftEther VPN

 
 OKをクリックします。

SE VPN Server Manager 12 300x219 Raspberry PiでSoftEther VPN

 

 現在の状態を確認して閉じるをクリックします。

SE VPN Server Manager 13 300x230 Raspberry PiでSoftEther VPN

 

 IPsec /L2TP / EtherIP /L2TPv3 サーバー機能の設定画面が自動的開くので、設定を行います。

SE VPN Server Manager 14 300x230 Raspberry PiでSoftEther VPN

 L2TPサーバー機能を有効にする(L2TP over IPsec)にチェックを入れて、OKをクリックします。

 IPsec事前共有鍵を設定します。(9文字以下を推奨)

 設定が完了したらOKをクリックします。

SE VPN Server Manager 15 300x243 Raspberry PiでSoftEther VPN

 

 VPN Azure を無効にする を選択してOKをクリックします。

SE VPN Server Manager 16 300x288 Raspberry PiでSoftEther VPN

 

 

 ユーザを作成するをクリックします。

SE VPN Server Manager 17 300x209 Raspberry PiでSoftEther VPN

 ユーザー名・本名・説明欄を入力します。

 認証時のパスワードを入力します。

 入力が完了したら、OKをクリックします。

SE VPN Server Manager 18 Raspberry PiでSoftEther VPN

 
 Okをクリックします。

SE VPN Server Manager 19 300x170 Raspberry PiでSoftEther VPN

 作成されたユーザーを確認します。
 さらに、ユーザーを新規作成する場合は、新規作成をクリックします。

SE VPN Server Manager 20 300x288 Raspberry PiでSoftEther VPN

 

 

 終了する場合は閉じるをクリックします。

SE VPN Server Manager 21 300x211 Raspberry PiでSoftEther VPN

 「サポートは提供されず、すべて利用者が自己責任を負う」旨の説明が書かれています。無償提供ですので当然です。
 今後はこのメッセージを表示しないにチェックを入れて、OKをクリックします。

SE VPN Server Manager 22 300x226 Raspberry PiでSoftEther VPN

 

 ローカルブリッジ設定をクリックします。

SE VPN Server Manager 23 300x278 Raspberry PiでSoftEther VPN

 仮想HUBを選択します。

 物理的な既存のLANカードとのブリッジ接続を選択します。

 LANカードはeth0を選択します。

 入力が完了したら、ローカルブリッジを追加をクリックします。

SE VPN Server Manager 24 300x62 Raspberry PiでSoftEther VPN

 OKをクリックします。

SE VPN Server Manager 25 Raspberry PiでSoftEther VPN

 
 OKをクリックします。

SE VPN Server Manager 26 300x278 Raspberry PiでSoftEther VPN

 

 

 ローカルブリッジ設定を確認して、閉じるをクリックします。

SE VPN Server Manager 27 300x226 Raspberry PiでSoftEther VPN

 

 暗号化と通信関係の設定 をクリックします。

SE VPN Server Manager 30 300x213 Raspberry PiでSoftEther VPN

 

 syslog送信機能 が選択できなくなっています。
 ※SoftEtherで使用できなくなった機能です。

SE VPN Server Manager 31 300x238 Raspberry PiでSoftEther VPN

 

 VPN Serverバージョン情報を確認します。

 syslog機能が利用可能 いいえ が設定されています。

SE VPN Server Manager 32 300x240 Raspberry PiでSoftEther VPN

 

 その他の管理 ログ保存設定が選択できなくなっています。

SE VPN Server Manager 33 300x226 Raspberry PiでSoftEther VPN

 

 閉じるをクリックします。

SE VPN Server Manager 34 254x300 Raspberry PiでSoftEther VPN

 

 

 バージョン情報をクリックします。

SE VPN Server Manager 35 300x292 Raspberry PiでSoftEther VPN

 

 

 SoftEther VPN 1.0 のバージョンを確認します。

SE VPN Server Manager 36 254x300 Raspberry PiでSoftEther VPN

 

 

 SoftEther VPN サーバー管理マネージャの終了をクリックします。

 

RTX1100のログに “ARP: Illegal packet…..” が記録される

SoftEther VPN を起動すると、YAMAHAのVPNルーター(RTX1100)のログに、イリーガルパケットが記録されるようになります。

無視しても問題ないのですが、精神衛生上好ましくありませんのでイリーガルパケットが記録されないように対応します。

Mar 8 20:14:28 192.168.0.1 ARP: Illegal packet at LAN1, IP=172.31.88.21, MAC=00:ae:57:14:fe:37
Mar 8 20:14:33 192.168.0.1 ARP: Illegal packet at LAN1, IP=172.31.88.21, MAC=00:ae:57:14:fe:37

イリーガルパケットが記録されないようにする方法は、オンラインマニュアル上に”ちゃんと”記述されています。

Packetixb2 18 Raspberry PiでSoftEther VPN

SoftEther VPN のコンフィグレーションファイルを修正します。
この変更を実施することで、RTX1100のログにイリーガルパケットが記録されなくなります。

SE VPN Server Manager 41 300x259 Raspberry PiでSoftEther VPN

 

 1) Winidowsパソコン上へダウンロード

 2) テキストエディタで該当箇所を ‘true’ に修正

 3) 修正したファイルをインポートして書き込み

 

ルーターのポート開放(ポートフォワーディング)

ヤマハのルーター(RTX1100)の設定を変更し、Raspberry Pi 宛にパケットを転送するようにします。
※SoftEther VPN Clientのみを使用する場合は、ポート開放は必要ありません。(設置環境に依存します)
※L2TP/IPsecやOpenVPNを使用する場合は、ポート開放の作業が必要となります。
  (iPhoneやAndroidを搭載した携帯端末からVPN接続を行う場合は、ポート開放が必要です)
※フィルタ設定を行っている場合は、そのルール変更を行う必要があります。

[RTX]# nat descriptor masquerade static 1 4 192.168.xx.xx udp 1194
[RTX]# nat descriptor masquerade static 1 5 192.168.xx.xx esp
[RTX]# nat descriptor masquerade static 1 6 192.168.xx.xx udp 500
[RTX]# nat descriptor masquerade static 1 7 192.168.xx.xx udp 4500

 

VPN接続動作の確認

VPN接続試験は、EVO3DのWiMAXまたは、3G回線を使用してインターネットへ接続し、テザリング機能を使いてノートPCからVPN接続を行います。

1.SoftEther VPN Client を使用してVPN接続

SE VPN Client 01 300x225 Raspberry PiでSoftEther VPN

 

 SoftEther VPN Server へ接続します。

SE VPN Client 02 300x256 Raspberry PiでSoftEther VPN

 

 物理通信に使用中のプロトコルがVPn over UDP with NAT-T(IPv4)と表示されていることを確認します。
 ※NATトラバーサルで接続されているはずです。

SE VPN Client 03 216x300 Raspberry PiでSoftEther VPN

 

 

 IPアドレス設定等を確認します。

SE VPN Client 04 300x282 Raspberry PiでSoftEther VPN

 

 ルーターへのpingは通じますが、SoftEther VPN をインストールしたサーバへのpingは通じません。
 ※これは、Linuxの制限によるものですが、この状態では、サーバにインストールした他のプログラム(たとえばWebサーバやAsteriskサーバなど)には、クライアントPCからアクセスできない状態となっています。

SE VPN Client 051 300x158 Raspberry PiでSoftEther VPN

 

 VPN接続先のLAN上のPCが表示されることを確認します。

 

2.WindowsXP標準のVPN Clientを使用してVPN接続

SE VPN Client 10 300x279 Raspberry PiでSoftEther VPN

 

 WindowsXP標準搭載のクライアントからVPN接続を行います。
 ※WindowsXPで使用する場合はレジストリ修正が必要です。

  詳細は、 WindowPCのレジストリ修正 を参照ください。

SE VPN Client 11 280x300 Raspberry PiでSoftEther VPN

 

 

 クライアントPCのIPアドレスを確認します。

SE VPN Client 12 220x300 Raspberry PiでSoftEther VPN

 

 

 同じく、クライアントPCのIPアドレスを確認します。

SE VPN Client 13 300x235 Raspberry PiでSoftEther VPN

 

 リモートデスクトップ接続を行なえることを確認します。

3.OpenVPN Clientを使用してVPN接続

SoftEther VPNサーバ管理マネージャでOpenVPNクライアント用のサンプル設定ファイルを生成して、VPN接続クライアントPC上で設定ファイルを読み込ませます。

SE VPN Server Manager 40 300x244 Raspberry PiでSoftEther VPN

 

 サーバー管理マネージャで、OpenVPNクライアント設定を保存します。

SE VPN Client 20 240x300 Raspberry PiでSoftEther VPN

 

 

 クライアントPCで保存した設定を読み込み、接続設定を完了させます。

SE VPN Client 21 240x300 Raspberry PiでSoftEther VPN

 

 

 リモートアクセスなのでL3接続を選択して、VPN接続を行います。

 

SE VPN Client 22 240x300 Raspberry PiでSoftEther VPN

 

 接続が完了すると、ステータスが表示されます。

 ※接続先のグローバルIPアドレスと、クライアントへ割り当てられたIPアドレスが表示されますので、確認します。

 

以上で、「Raspberry Pi でSoftEther VPN 1.0 RC2を試す」を終了します。

 

Raspberry Pi で消費電流を測定する

5回目の今回は、Raspberry Piの5V電源の消費電流値を測定します。

スペックでは、5V/700mA(3.5W)と記述されていますが、今回は、サーバ専用機として使用する予定ですので、LANケーブルのみを接続した状態で、消費電流値を測定します。
可能なら外部のACアダプタを使用することなく、「MicroServerのUSBポートから電源を供給できればいいなー」という目論見です。

 

消費電流測定の準備

Raspberry Pi へ供給する5V電源は、Powerコネクタではなく、ヘッダーコネクタの5V/GND端子から供給し、マルチメータで計測します。LANケーブル以外は、何も接続していない状態で計測します。

Raspberry Pi の回路図を見たい場合は、下記のpdfを参照ください。

Raspberry-Pi-Schematics-R2.0

 

Raspberry Pi 5V 300x193 Raspberry Piで消費電流測定

  <P1コネクタのピンアサイン>

 5V    : 2Pin

 GND : 6Pin

Raspberry Pi 5V Icc 300x270 Raspberry Piで消費電流測定

 

 マルチメータ(電圧・電流測定) : Agilent 34401A

 

 直流安定化電源 : KIKUSUI MODEL PAD16-18L

 

消費電流測定

Raspberry Pi の起動時の消費電流の実測値を下記に示します。

1.初期設定状態での動作(700MHz動作)
※起動時の最大電流値 = 448mA / 安定時 = 380mA / SDカードのベンチマーク動作時 = 447mA
※1分40秒ころの450mAは、SDカードのベンチマーク試験を実施したことにより増加。

5V Icc 01 300x219 Raspberry Piで消費電流測定

 ARM = 700MHz

 GPU processor core = 250MHz

 SDRAM = 400MHz

 ARM/GPU core voltage = 1.2V

2.オーバークロック動作-1(700MHz / 1000MHzダイナミック動作)
※起動時の最大電流値 = 517mA(2秒) / 安定時 = 382mA / SDカードのベンチマーク動作時 = 453mA

5V Icc 02 300x219 Raspberry Piで消費電流測定

 ARM = 700MHZ / 1000MHz

 GPU processor core = 250MHz / 500MHz

 SDRAM = 400MHz / 600MHz

 ARM/GPU core voltage = 1.2V / 1.35V

3.オーバークロック動作-2(1000MHzスタティック動作)
※起動時の最大電流値 = 525mA(2秒) / 安定時 = 421mA / SDカードのベンチマーク動作時 = 495mA

5V Icc 03 300x219 Raspberry Piで消費電流測定

 ARM = 1000MHz

 GPU processor core = 500MHz

 SDRAM = 600MHz

 ARM/GPU core voltage = 1.35V

 

Raspberry Pi のステータス確認

Raspberry Pi の動作状態を確認します。
最初に、Raspberry PiのSoCの情報を確認します。

[root@ms03 ~]# cat /proc/cpuinfo
Processor       	: ARMv6-compatible processor rev 7 (v6l)
BogoMIPS            : 996.14
Features        	: swp half thumb fastmult vfp edsp java tls
CPU implementer 	: 0x41
CPU architecture	: 7
CPU variant     	: 0x0
CPU part        	: 0xb76
CPU revision    	: 7

Hardware            : BCM2708
Revision        	: 100000f
Serial          	: 00000000febafb3d

cpuのスピードを確認します。

[root@ms03 ~]# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
1000000

次に、CPUの温度を確認します。

[root@ms03 ~]# cat /sys/class/thermal/thermal_zone0/temp
54610

OSのカーネルバージョンを確認します。

[root@ms03 ~]# uname -a
Linux ms03 3.6.11-aufs+ #1 PREEMPT Sun Mar 3 01:32:00 JST 2013 armv6l GNU/Linux

メモリ容量を確認します。

[root@ms03 ~]# cat /proc/meminfo
MemTotal:         497368 kB
MemFree:          158340 kB
Buffers:           53840 kB
Cached:           223388 kB
SwapCached:            0 kB
Active:           192200 kB
Inactive:         116300 kB
Active(anon):      33000 kB
Inactive(anon):      244 kB
Active(file):     159200 kB
Inactive(file):   116056 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:               260 kB
Writeback:             0 kB
AnonPages:         31284 kB
Mapped:             8876 kB
Shmem:              1976 kB
Slab:              22436 kB
SReclaimable:      18860 kB
SUnreclaim:         3576 kB
KernelStack:         856 kB
PageTables:          896 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      248684 kB
Committed_AS:      81784 kB
VmallocTotal:     516096 kB
VmallocUsed:        1736 kB
VmallocChunk:     299516 kB

SDカードのパーティションテーブルを確認します。

[root@ms03 ~]#  fdisk -l

Disk /dev/mmcblk0: 7860 MB, 7860125696 bytes
4 heads, 16 sectors/track, 239872 cylinders, total 15351808 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00014d34

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880    15351807     7614464   83  Linux

ファイルシステムを確認します。

[root@ms03 ~]# df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
rootfs           7.2G  3.8G  3.1G   56% /
/dev/root        7.2G  3.8G  3.1G   56% /
devtmpfs         235M     0  235M    0% /dev
tmpfs             49M  216K   49M    1% /run
tmpfs            5.0M     0  5.0M    0% /run/lock
tmpfs             98M     0   98M    0% /run/shm
/dev/mmcblk0p1    56M   27M   30M   48% /boot
tmpfs             32M  1.7M   31M    6% /tmp
tmpfs             16M     0   16M    0% /var/tmp
tmpfs             32M   76K   32M    1% /var/log

 

Raspberry Pi はサーバ専用機がお似合い?

1.24時間動作時の電気代
消費電流の実測結果から、消費電力は、約2W(5V/0.4A)なので、1ヶ月の電気代はおよそ36円となります。(1kW/h=25円19銭として計算)
省電力なMicroServer(約30W)と比べても、1/10 ~ 1/15の電気代で済みますので、24時間稼動のアプライアンスサーバとして使うのが、”うってつけ”だと思います。(本来は、”教育用のコンピュータ”みたいですが・・・)
※GPIO , UARTやI2Cなどの機能を使用すると、ネットワークIFを装備した組み込み機器を簡単に作ることが出来ますので、いろいろな分野で活用できそうです。

2.動作スピード
1GHzにオーバークロックした状態でも、当方の環境では、安定して動作しています。
5時間にわたるカーネルのコンパイル動作でも、正常に動作し、まったく問題はありませんでした。
※コンパイル動作時(ケースへ組み入れた状態)のSoCの温度は、約60℃(室温20℃)でした。
 高負荷状態では、室温に対して、約40℃上昇するようですので、室温40℃までは、何とか持ちそうです。
※夏場の連続稼動を考慮すると、SoCへの放熱板の追加と、ケースの穴あけ加工が必要かも知れません。

3.USBコネクタからの給電
消費電流は、1GHzStatic動作時でも500mA程度に収まることが判りました。
気になっていたPCのUSBコネクタからの5V電源の供給は、問題なさそうです。(接続するPCに依存します)
※一般的なDesktop PCでは、ポリスイッチを使用して過電流制限を行っていますが、500mA程度なら、問題となることは、まず無いと思われます。(USB2.0の仕様は1ポートMin500mA)
※当面は、PCのUSBコネクタから電源を供給し、1GHzでの動作試験を継続していきます。

 

Raspberry Pi 1年で100万台を販売

Raspberry Pi は、2013年3月1日で誕生から1周年を迎え、累計販売台数が100万台に達したそうです。

当方は、まだ、2ヶ月ほどしか使用していませんが、ハードウェアは非常に安定しており、また、使いやすいOSと相まって、世界中で支持されているのだな~ と実感しています。

Raspberry Pi や SoftEther VPN といった、すばらしい”作品”を信じられない価格(SoftEther VPNにいたっては無償)で使えることに、感謝しないといけないですね。

 

以上で、「Raspberry Pi で消費電流を測定する」を終了します。

    
1 / 13123...10...最後 »