Linuxよりフォルダをバックアップ
Linixのbk_dctestがQNAPの/share/MD0_DATA/okadaの下にバックアップ
以下のようにRSYNCサーバのユーザ名、パスワードを設定
以下のように設定が変わる
/etc/rsyncd.conf
uid = admin gid = administrators pid file = /var/run/rsyncd.pid read only = false hosts allow = * port = 873 rsync user = rsync rsync pswd = ******* SLimitRate = RLimitRate = [Multimedia] path = /share/MD0_DATA/Multimedia (略) [okada] path = /share/MD0_DATA/okada
/home/okada/himitsu/digicom.passに先のQNAPのrsyncサーバのパスワードを指定
digicom.pass
*****
# chowm root.root digicom.pass # chmod 600 digicom.pass
実行
# rsync -avz --password-file=/home/okada/himitsu/digicom.pass bk_dctest rsync://rsync@180.131.110.210:/okada sending incremental file list bk_dctest/ bk_dctest/test1
cronなどで自動の場合は適当なshellスクリプトを作成し、時間内に終了しない場合の処理が必要
rsync.sh
#!/bin/sh if [ -r /var/run/rsync_client_running_okada ]; then exit fi /usr/bin/touch /var/run/rsync_client_running_okada /usr/local/bin/rsync --log-file=/var/log/rsync_client.log --recursive --times --compress --archive --delete \ --password-file=/mnt/data/rsync/rsync.pass "/mnt/data/rsync/sync_test" "rsync://rsync@192.168.32.1/okada" /bin/rm -f /var/run/rsync_client_running_okada
windowsから使用できるrsyncで以下からDL ただし、何回か再読込みをしないとファイル保存できない。
http://cwrsync.apponic.com/download/
パス指定に注意 c:\usr\ism_sync => /cygdrive/c/usr/ism_sync
C:\>rsync -avz --delete --password- file=/cygdrive/c/usr/cwRsync/sync.pass /cygdrive/c/Usr/ism_sync "rsync://rsync@1 92.168.31.7/okada" sending incremental file list sent 67 bytes received 9 bytes 50.67 bytes/sec total size is 0 speedup is 0.00
以下のようなバッチを作成
sync.bat
@echo off c: cd \Usr\cwRsync if not exist tmp.pid ( echo 1 > tmp.pid c:\usr\cwRsync\bin\rsync -avz --delete --password-file=/cygdrive/c/usr\ /cwRsync/sync.pass --log-file=/cygdrive/c/usr/cwRsync/log.txt \ /cygdrive/c/Usr/ism_sync "rsync://rsync@192.168.31.7/okada/sync_okada" del tmp.pid )
if exit c:\test( => c:\testファイルが存在したならば ( )を実行
)
if not exit c:\test( => c:\testファイルが存在しなければ ( )を実行
)
このままでは実行時、comanndの窓が開く最小化して実行するにはショートカットで最小化を指定するが、タスクスケジュールではショートカットが登録できない。そこで。以下のようなvbsファイルを作成
rsyn.vbs
Set objWSHShell = CreateObject("WScript.Shell") objWSHShell.Run "cmd.exe /c C:\Usr\cwRsync\rsync.bat", 7
しかし、これだけでは大きなファイルの転送をWindowsから行うとこける。対策はWindowsのMTUを変更する。こちら
Tips
Windows起動後NetWorkドライブに接続できない場合は次を参考にする Windows起動時のネットワークドライブの接続方法
CentOS6で利用できるrpmが見つからなかったのでソースからコンパイル
以下からDL 今回は pptpd-1.3.4.tar.gz
http://sourceforge.net/projects/poptop/files/pptpd/
事前にppp,ppp-develをインストール
$ tar zxvf pptpd-1.3.4.tar.gz $ cd pptpd-1.3.4
このまま進むと以下のようなエラーが出る
/usr/sbin/pppd: Plugin /usr/lib/pptpd/pptpd-logwtmp.so is for pppd version 2.4.3, this is 2.4.5
そこで、pptpd-logwtmp.soを作成するソースファイルのplugins/patchlevel.hのバージョン情報を書き換え
#define VERSION "2.4.3" ↓ #define VERSION "2.4.5"
CentOS6のpppのバージョンが2.4.5なため
$ ./configure $ make $ su # make install # cp plugins/pptpd-logwtmp.so /usr/lib/pptpd/ ( # ln -s /usr/local/lib/pptpd/pptpd-logwtmp.so /usr/lib/pptpd/pptpd-logwtmp.so /usr/local/lib/にコピーされるので、リンクでいいかも) # cp samples/pptpd.conf /etc/ # cp samples/chap-secrets /etc/ppp/ # cp samples/options.pptpd /etc/ppp/
/etc/pptpd.conf
(略) # TAG: option # Specifies the location of the PPP options file. # By default PPP looks in '/etc/ppp/options' # option /etc/ppp/options.pptpd #debug debug (略) localip 192.168.31.1 remoteip 192.168.31.121-150
eth0側のIPが192.168.31.1になっているので192.168.31.0のネットワークとコミュニケーションがとれる。
''/etc/ppp/chap-secrets'' # client server secret IP addresses okada pptpd **** 192.168.31.101 ^^^^^(1) okada-p pptpd **** *
IPを指定するとそのアドレスがユーザに割り振られる。pptpd.conf内のremoteipで指定された範囲を指定するようなページもあったが、そうするとIPの重複が生じた。
remoteip範囲外でも割り振れたのでこれでいいかな?
/etc/ppp/options.pptpd
# Authentication # Name of the local system for authentication purposes # (must match the second field in /etc/ppp/chap-secrets entries) name pptpd ^^^^^ (1)と合わせる (略) Logging # Enable connection debugging facilities. # (see your syslog configuration for where pppd sends to) #debug debug # Print out all the option values which have been set. # (often requested by mailing list to verify options) #dump dump
起動
-f -d でフォアグランドで確認 # /usr/local/sbin/pptpd -f -d
通常は
# /usr/local/sbin/pptpd
iptableを使用時は//etc/sysconfig/iptablesにtcpのpptp(1723)とgre(47)プロトコルを許可しておく。ただし、GUIでファイアウォールを変更すると消えるので再度記入する必要あり
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport pptp -j ACCEP -A RH-Firewall-1-INPUT -p gre -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
pptpで接続されたとき新しい経路情報を作成。サーバ側で設定時はサーバ側で、クライアント側で設定時はクライアント側でrouteが追加される。
/etc/ppp/ip-up
route add -net 192.168.10.0 gw 192.168.31.101 netmask 255.255.255.0 metric 1 <==追加 exit 0
接続前
# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 182.236.42.16 0.0.0.0 255.255.255.240 U 0 0 0 eth0 192.168.31.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 182.236.42.30 0.0.0.0 UG 0 0 0 eth0
接続後
# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.31.101 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 182.236.42.16 0.0.0.0 255.255.255.240 U 0 0 0 eth0 192.168.31.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.10.0 192.168.31.101 255.255.255.0 UG 0 0 0 ppp0 ^^^^^^^^追加されている(経路情報) 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 182.236.42.30 0.0.0.0 UG 0 0 0 eth0
Linuxのpptpdサーバにネットワークとして接続する以下のような構成時WindowsからFreeNASにアクセス可になる(逆は不可)GWが192.168.10.xをNATして投げるようだ。
------------ --------------- | Windows |192.168.10.x | GW BHR-4GRV | | |------------------| | ------------ --------------- |pptp(192.168.31.101) | |(インターネット) | |pptpd ---------------- | CentOS 6 | | pptpd | ----------------- | LAN (192.168.31.1) | --------------- | | FreeNAS | 192.168.31.7 | | |---------------------- ---------------
/etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A POSTROUTING -o eth0 -j MASQUERADE COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 1723 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -i eth0:1 -j ACCEPT -A FORWARD -o eth0 -j ACCEPT -A FORWARD -p tcp -j ACCEPT (pptpで内部LANにtcp許可) -A FORWARD -p icmp -j ACCEPT (pptpで内部LANにicmp許可) -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT