カテゴリー別アーカイブ: ネットワーク

cronやプログラムでssh越しrsyncを利用するときにカナリ便利なオプション

1. 始めに

同期が必要な場面って結構ある。ローカルのディレクトリ間の同期はもちろん、特にインターネット越しの同期が必要になることって結構ある。

そんなときには決まってrsyncの出番だ。ファイルの変更を検知し、よしなに同期してくれる。そんな頼もしいrsync。枯れたソフトウェアなのでホスティングを借りたときにftpだけじゃなくてsshとrsyncが付いてきたりもする。すでに広まっているからすごく便利。

で、さて、そんな便利なrsyncなんだけれどcronなどで定期的、自動的にrsyncを実行するときにはチョットした問題があったりする。

その問題とは二点。一つはパスワード無しで認証を通す必要があること。もう一つはフィンガープリントと呼ばれるsshのホストの正当性を確かめる確認が出ること、だ。

この問題はどちらも、プログラムやcronなどプロンプト(よろしいですか?[y/n]的なアレ)を処理できない端末でrsyncを利用する際に解決しなければいけない問題。

前者のパスワード無しで認証を通すためにはsshの公開鍵認証を利用する。コレに関しては文献がいろいろとあるので参照されたし。

rsyncとsshで別のマシンにバックアップ

rsync over ssh を使ってバックアップ

さて、今回は二つ目の問題点、フィンガープリントのプロンプトを越えるためのオプションについて考える。環境としてsshクライアントとしてOpenSSHを想定している。他だとうごかないかも。

続きを読む cronやプログラムでssh越しrsyncを利用するときにカナリ便利なオプション

Ubuntu serverでNIC毎に宛先ルータを変える

Ubuntu server 12.04 LTSで2枚のNICを使って、それぞれ別のネットワークに接続。先のルータでは別々のプロバイダに接続していて、NICを指定して通信すると、使用回線を切り替えできるようにする。

まず、/etc/sysctl.conf を設定
28行目をコメントアウト

net.ipv4.ip_forward=1

保存したら
sudo sysctl -p
で適用。

次に、/etc/network/interfaces
今回はDHCPを使用せずに設定

auto eth0
iface eth0 inet static
  address 192.168.34.25
  netmask 255.255.255.0
  network 192.168.34.0
  gateway 192.168.34.254
  
auto eth1
iface eth1 inet static
  address 192.168.206.25
  netmask 255.255.255.0
  network 192.168.206.0

見ての通り、デフォルトのGWは192.168.34.254で、もう一方のネットワークにはGWを指定しない。

次に、/etc/network/if-up.d/routes
を新規に作成

#!/bin/sh
IF1=eth0
IF2=eth1
IF1_IP=192.168.34.25
IF2_IP=192.168.206.25
GATEWAY1_IP=192.168.34.254
GATEWAY2_IP=192.168.206.254
IF1_NET=192.168.34.0/24
IF2_NET=192.168.206.0/24
ROUTING1_NAME=gate1
ROUTING2_NAME=gate2

case $IFACE in
"eth0")
  # eth0
  /sbin/ip route add $IF1_NET dev $IF1 src $IF1_IP table $ROUTING1_NAME
  /sbin/ip route add default via $GATEWAY1_IP table $ROUTING1_NAME
  /sbin/ip rule add from $IF1_IP table $ROUTING1_NAME
;;

"eth1")
  # eth1
  /sbin/ip route add $IF2_NET dev $IF2 src $IF2_IP table $ROUTING2_NAME
  /sbin/ip route add default via $GATEWAY2_IP table $ROUTING2_NAME
  /sbin/ip rule add from $IF2_IP table $ROUTING2_NAME
;;
esac

保存したら実行権限を与える事。
ここはinterfacesで指定したIPなどと一致させるように記述。
あと、ROUTING1_NAMEとROUTING2_NAMEを覚えておくこと。

次に、/etc/iproute2/rt_tablesを設定

200 gate1
201 gate2

を追記。gate1, gate2 はroutesで設定したROUTING1_NAME, ROUTING2_NAMEと一致させる。

最後に、DHCP環境じゃなくても/etc/resolv.confが勝手に書き換わるようなので
/etc/resolvconf/resolvconf.d/base を書き換える。

nameserver 192.168.34.15
nameserver 192.168.34.12

これで再起動すると反映される。

Macのsambaをマウントする時、濁点と半濁点が化ける

MacのsambaをLinuxでマウントしたら、濁点と半濁点が文字化けした。んで、その時の対応策。Windows7では化けなかった。

Mac側のsmb.confで

unix charset=UTF-8-MAC

を指定する。UTF-8-MACは、Appleがiconvを拡張した物らしいので、Mac以外でlibiconvを使っているソフトでは使えないらしい。

Linux側の/etc/fstabで

iocharset=utf8

を指定する。

FreeBSDでnfsをマウントするときのマウントオプションについて

1. FreeBSDとNFS

FreeBSDでNFSを利用している。サーバはFreeNAS 0.7.2 (NFSv3)、クライアントもFreeBSD (versionは7.3以降)。

このとき、どんなオプションでマウントするのが良いのかなと思って調べてみた。

歴史的経緯というか実装系が違うからだろうか、詳しい理由はわからないんだけれど、LinuxとFreeBSDはnfsのマウントオプションが違かったりする。

Linuxだとnfs周りのマウントコマンドはドットで区切られた実行ファイル名、mount.nfsとかだったりするけれど、freebsdだとmount_nfsとかっていうアンダースコアで区切られた実行ファイル名だったりする。

そんでmount –t nfsってのはmount_nfsを参照してる?のかな。

man mount_nfsするとオプションの一覧とか出てくるんだけれど、ここにあるマウントオプションでどれを使えば良いかよくわからない。いつもテキトウに使ってる。そんでどれ使えば良いか、何となくのメモ。

続きを読む FreeBSDでnfsをマウントするときのマウントオプションについて

IX2015同士でIPアドレスを決め打ちしたIPsecを張る

1. IPアドレス決め打ちのIPsecを対向で張る

最近増えてきたIX2015。これまでは片側のIPアドレスのみを指定した IKE-IPsecだったんだけれど、お互いが固定IPアドレスを払い出されるような環境だとお互いIPアドレス決め打ちのほうがセキュリティ的に良かったりする。

なのでコレを試してみた。

2. コンフィグ

コレまで使ってきたコンフィグにちょっと手直しをするだけで行けた。設定事例集をみるともっとシンプルに出来るみたいなので、ここではあくまで自分流のメモということで。

ルータ1 (こいつのグローバルは203.0.113.1、ローカルは192.0.2.1/28、セグメント名はs1)

ike proposal ike-prop1 encryption 3des hash sha lifetime 3600
ike policy ike-s2 peer 203.0.113.2 key random mode aggressive ike-prop1
ike commit-bit ike-s2
ike keepalive ike-s2 10 3
ike remote-id ike-s2 keyid s2keyid

!

ipsec autokey-proposal ipsec-prop1 esp-3des esp-sha lifetime time 3600


ipsec autokey-map ipsec-s2 sec-list peer 203.0.113.2 ipsec-prop1
ipsec commit-bit ipsec-s2
ipsec local-id ipsec-s2 192.0.2.0/28
ipsec remote-id ipsec-s2 192.0.2.16/28

interface Tunnel0.0
description s2vpn
tunnel mode ipsec
ip unnumbered FastEthernet1/0.0
ip tcp adjust-mss auto
ipsec policy tunnel ipsec-s2out
no shutdown

ルータ2(こいつのグローバルは203.0.113.2、ローカルは192.0.2.17/28、セグメント名はs2)

ike proposal ike-prop1 encryption 3des hash sha lifetime 3600
ike policy ike-s1 peer 203.0.113.1 key random mode aggressive ike-prop1
ike keepalive ike-s1 30 6
ike local-id ike-s1 keyid s2keyid
!
ipsec autokey-proposal ipsec-prop1 esp-3des esp-sha lifetime time 3600
ipsec autokey-map ipsec-s1 sec-list peer 203.0.113.1 ipsec-prop1
ipsec local-id ipsec-s1 192.0.2.16/28
ipsec remote-id ipsec-s1 192.0.2.0/28

interface Tunnel0.0
tunnel mode ipsec
ip unnumbered FastEthernet1/0.0
ip mtu 1382
ip tcp adjust-mss auto
ipsec policy tunnel ipsec-s1 out
no shutdown


Ubuntu server でlm_sensors の値をsnmpで送りたい

cactiでlm_sensorsのファンとか温度とかグラフ化出来そうだったので、snmpd側の設定をしてた。
中々上手く行かなくてソースから入れてみたりしたけど、snmpwalkでディスクの情報を取得するとsnmpdが落ちる謎の現象に見舞われたので、結局パッケージからインストールして取得できた。

まずインストール

% sudo aptitude install snmp
% sudo aptitude install snmpd

あと、参考サイトにやれと書いてあったので一応やったけど

% sudo snmpconf -i -g basic_setup

対話式で設定ファイルを作るものらしいけど,全然basicじゃないわ・・・
で、最後までやったら /usr/share/snmp/snmpd.conf が作られるので、それを /etc/snmp/snmpd.conf にコピーして、ちょっと修正。

参考までに snmpd.conf

あとはsnmpdを再起動したらいける・・・はず。

以下ソースからインストールして、ディスク情報を取るとsnmpdが落ちたやり方。(lm_sensorsの値は取れる)
続きを読む Ubuntu server でlm_sensors の値をsnmpで送りたい

rsyncで大量のファイルをコピーした

rsyncで大量のファイルをコピーした。
回線はインターネットVPN越し、asahi-netとocnがそれぞれのISP。

利用したコマンドは

shell> rsync -arvz 192.168.2.1:/hoge/fuga ./hoihoi/
(中略)

sent 112137 bytes  received 38402767035 bytes  2392926.39 bytes/sec
total size is 38389426720  speedup is 1.00

トータルで6000ファイル強、38GBの転送。2.392 MB/sで4.45時間かかったみたい。結構速度出てるなぁ。

でも途中途中ではばっちり帯域制限かけられてた。

Ubuntu serverのNFSをMac OS X 10.7.1でマウント

yousanに聞かれて試行錯誤してたんだけど、うまくいかなかったので、自分の環境でもやってみた。
元々うちではNFSを使ってなかったんだけど、よく考えたらNISも入れてるし、MacとWindows以外はUIDもGIDも同じなので、ちょっと使ってみることにした。

まず、Macで
/アプリケーション/ユーティリティ/ディスクユーティリティ.app
(/Applications/Utilities/Disk Utility.app)
を開いて、メニューの “ファイル”->”NFS マウント” を開く
左下の+ボタンを押して項目を追加する。

リモートNFSのURLは、少し注意が必要で、nfs://server_address:/path は動作しない
必ず nfs://server_address/path で、コロンを入れない事。
マウント先は好きなように指定して問題なくて、ディレクトリは自分で作る必要が無い。むしろ存在しない方が良い?

で、詳細マウントパラメータには、サーバ側の設定にもよるけど、まず必要なのが
resvportとnolocksとlocallocks
それ以外は環境によって。

後はNFSマウントのウィンドウを閉じようとすると、管理者パスワードを聞かれるので、入力したら終わり。
マウント先をlsしてみるとマウントされてると思うけど、サーバがUbuntuの場合はおそらく、UID/GIDが1000から開始されるので、Macの501から開始と食い違ってる。map_staticとか試してみたけど、反映されなかったのでMac側のUID/GIDを変更することにした。

一応、sudo suでルートのターミナルを作ってそこで作業する
MacのUIDが501 GIDが20
UbuntuのUIDが1000 GIDが1000
の場合

#dscl . -change /Users/username UniqueID 501 1000
#dscl . -create /Groups/groupname
#dscl . -create /Groups/groupname name groupname
#dscl . -create /Groups/groupname gid 1000
#dscl . -change /Users/username PrimaryGroupID 20 1000
#dscl . -append /Groups/staff GroupMembership yubird

で、Macのユーザ所有ファイルなどのパーミッションがおかしくなったので修正

#cd /Users
#chown -R username:groupname username

もしかしたらApplicationsでも、ドラッグアンドドロップで追加した物がおかしくなってるので、同様にchownしてやればいい。
id username の結果が良さそうなら再起動して、マウント出来ている事を確認

scpで指定アドレスを使用してコピーする

ルータにプロバイダが2本設定されていて、ローカルのIPアドレス毎にどちらを使うか振り分けている環境で、明示的にどちらを使うか振り分けたい事があったのでメモ。
具体的にはリモートに数十GBのファイルをUPしたいけど、うちで使っているOCNでは、一日に30GB以上のUPは規制対象なので、上手いことやりたいって感じ。

UbuntuでIPアドレスを複数設定してやる。
/etc/network/interfacesに記述。
bondingもしているので、ちょっと普通と記述が違うけど。

iface eth0 inet manual
iface eth1 inet manual

auto bond0
iface bond0 inet static
address 192.168.34.1
netmask 255.255.255.0
network 192.168.34.0
broadcast 192.168.34.255
gateway 192.168.34.100
slaves eth0 eth1
bond-mode 0
bond-miimon 100

auto bond0:0
iface bond0:0 inet static
address 192.168.34.2
netmask 255.255.255.0

eth0, eth1を束ねたbond0に2つのローカルアドレス(192.168.34.1, 192.168.34.2)
を設定してる。
設定したら、sudo /etc/init.d/networking restartか再起動で。

あとはルータ(ix2015)で

ip access-list secondary permit ip src 192.168.34.2/32 dest any

route-map ocn2 permit 10
  match ip address access-list secondary
  set interface FastEthernet0/0.2

みたいな事をしてやれば、192.168.34.2のローカルアドレスは、外部に出る時、2本目のプロバイダを使用する。

で、scpの方は簡単で

scp -o BindAddress=192.168.34.2 ./localfiles remote.address:~/

で出来た。ちなみにwgetでも –bind-addressで指定できるし、sshでも -b で出来る。