クラウドストレージは便利だけど、直接PCで開くのにはやっぱりWindowsファイル共有が便利なんで、お名前.com VPS 上にSambaを乗っけてファイル共有サーバに仕立てようかと思う。 と言っても、Sambaを直接設置とかセキュリティ的に非常にアレなので、自宅のIX2025ルータとお名前VPS間にIPSec VPNを張って、VPN上だけファイル共有通信を可能にした。 テスト環境は、お名前2GBプランのデフォルトCentOS6.5導入完了状態とIX2025ルータFW9.0.54、ローカル回線は光コラボのギガスマにフレッツ光対応、固定IPサービス「ZOOT NEXT for フレッツ光」 サービスで相互固定IPなので、メインモードIPSecVPNになる。 お名前VPSの初期導入が完了した状態からスタート。
yum install openswan zfs - fuse samba
/ etc / init . d / zfs - fuse start
chkconfig zfs - fuse on
vim / etc / fstab
umount / dev / vdb
zpool create zpool - f / dev / disk / by - path / pci - 0000 \ : 00 \ : 05.0 - virtio - pci - virtio2
zfs create zpool / public
zfs dedup = verify zpool / public
パッケージ導入、ZFS-fuse起動設定、fstabの/dataのマウント設定を削除、デフォルトの/dataを削除してzpoolを作成し、zpool/publicを重複除外有効にした。 ZFS-fuseではfstabマウントでは無く、ZFS-fuse側の設定でマウントする。 通常、/zpool/zfsの位置にマウントされる(今回なら/zpool/public) マウント位置設定はzfs mountpoint=/data zpool/publicみたいにしてmountpointに設定する。
次にIPSecの設定を行う。 設定ファイルの編集 /etc/ipsec.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
version 2.0
config setup
protostack = netkey
nat_traversal = yes
virtual_private = % v4 : 192.168.0.0 / 16
oe = off
conn home
type = tunnel
authby = secret
auth = esp
keyexchange = ike
ike = 3des - sha ; modp1024
phase2 = esp
phase2alg = 3des - sha ; modp1024
pfs = no
left = お名前固定IP
leftid = お名前固定IP
leftsubnet = お名前固定IP / 32
right = IX2025 外IP
rightid = IX2025 中IP
rightsubnet = 192.168.0.0 / 23
auto = start
自宅のローカルは192.168.0.0/23でIX2025は192.168.0.1になっている。 NAT_Traversal有効、トンネルタイプIPSecでIKE/ESP、プロポーザル設定等のごくごく基本設定。 今回はPSK認証なので/etc/ipsec.secretに共通シークレットを記述。
お名前固定IP 192.168.0.1 : PSK "共通シークレット"
あとは、カーネルパラメータを修正する必要があるので、/etc/sysctl.confを編集(上側の修正はipsec verifyコマンドの指示に従っている。 IP_ForwardはOnじゃないとトンネリング出来ない)
net . ipv4 . conf . all . send_redirects = 0
net . ipv4 . conf . all . accept_redirects = 0
net . ipv4 . conf . default . send_redirects = 0
net . ipv4 . conf . default . accept_redirects = 0
net . ipv4 . conf . eth0 . send_redirects = 0
net . ipv4 . conf . eth0 . accept_redirects = 0
net . ipv4 . conf . lo . send_redirects = 0
net . ipv4 . conf . lo . accept_redirects = 0
#net.ipv4.ip_forward = 1
編集後に適用
あとは、iptablesに穴開けするため、/etc/sysconfig/iptablesを編集。
- A INPUT - s 192.168.0.0 / 23 - j ACCEPT
- A INPUT - p udp - s IX2025 外IP / 32 -- dport 500 - j ACCEPT
- A INPUT - p udp - s IX2025 外IP / 32 -- dport 4500 - j ACCEPT
- A INPUT - p esp - s IX2025 外IP / 32 - j ACCEPT
IPSecに関係するUDP500とそのNAT Traversalである4500、そしてESPを許可する。 また、Samba等の為にIPSecトンネルを越えてきた192.168.0.0/23からの接続を全て許可する。 そして、IX2025のコンフィギュレーションに移って・・・
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ip route お名前固定IP / 32 Tunnel1 . 0
ip access - list onamae - acl permit ip src any dest any
ike nat - traversal
ike suppress - dangling
ike proposal onamae - ike - prop encryption 3des hash sha group 1024 - bit
ike policy onamae - ike peer お名前固定IP key 共通シークレット onamae - ike - prop
ike keepalive onamae - ike 30 3
ike local - id onamae - ike address 192.168.0.1
ike remote - id onamae - ike address お名前固定IP
ipsec autokey - proposal onamae - ipsec - prop esp - 3des esp - sha
ipsec autokey - map onamae - ipsec onamae - acl peer お名前固定IP onamae - ipsec - prop
! pppoe インタフェース上のudp 500 , 4500 , ESP ( Protocol : 50 ) のNAPT 設定等は別途設定済み
interface Tunnel1 . 0
tunnel mode ipsec
ip unnumbered GigaEthernet0 . 1
ip tcp adjust - mss auto
ipsec poict tunnel onamae - ipsec out
no shutdown
プロポーザル関係の設定が中心。 より強度の高い保護をする場合は、IKEの鍵認証にするとか、プロポーザルをAES/SHAの長いものにするなど、Openswanと共に設定すれば良い。 とりあえず、これで設定完了なので、VPS側でサービスを起動する。
/ etc / init . d / ipsec start
chkconfig ipsec on
数秒でネゴシエーションされて、IX2025のshow ike saでph1/ph2を確認する。 VPS上にApacheを起動して、phpinfo()とかを設置したURLをローカルのクライアントから見ると、REMOTE_ADDRにLAN内IP(192.168.0.x)が表示されるので確認出来る。 これで、ルータとVPS間が暗号トンネル上に乗っているので平文通信も気にせず行えるし、FWの穴開けなど気にせずに色々なサービスを動かすことが出来る。 あとは、ごく普通のSamba設定。 /etc/samba/smb.conf、pdbedit等やって/zpool/publicをpublic共有する。 計測では、Samba経由の書き込みでは6MB/s位でZFS-fuseの負荷が1コア100%になって頭打ち。 さすが、リアルタイムにハッシュを計算して照合してと言う処理が挟まるので負荷が高いな。 ハッシュ計算のアクセラレーション命令セットを使わないと厳しそうだ。 Dedup効率の確認は、zpool listを実行すると、DEDUP 3.14Xみたいな感じで表示される。 この数字は、重複除外前/重複除外後のサイズの比率なので、同じデータをコピーすれば2.00X、更にコピーすれば3.00xとなって表示される。 データを入れるにつれて、データのハッシュデータベースが大きくなっていくためメモリ消費の増加と速度低下が発生するが、1.50x位であれば180GBの領域を使い切ってもメモリは大丈夫そうだった。 デイリーで世代を取りつつドキュメントディレクトリをROBOCOPYするとか言うのには便利そうだな(この場合、ドキュメントを丸ごと圧縮するとアライメントずれとかで重複除去効率が低下するため、生ファイルをそのままコピーしておいた方が効率が良い)
(379)