2010.07.06

Category: Redhat ES(CentOS) / Tags:

nas の追加用の手順

—-
NASのIPアドレス 192.168.1.100
export名 /nas01
—-
とする。
/etc/fstabに
—-ここから
192.168.1.100:/nas01 /nas/nas01 nfs rw 0 0
—-ここまで
と記載。

#mkidir /nas/nas01 ←マウント先ディレクトリを作成。
# mount -a ←マウント
# df ←確認
とコマンドを発行確認。

2010.06.17

Category: Command / Tags:

ssh の接続が遅い場合

http://www.openssh.org/ja/faq.html
にかいてありました。

3.3 – ssh(1) が接続する、あるいはログインするのに時間がかかる。
ひじょうに長い遅延 (10秒以上) はふつうホストの名前解決によってひきおこされます:
* glibc のいくつかのバージョン (とくに Red Hat Linux 6.1 に付いている glibc) では、ドメイン名から “IPv6 あるいは IPv4 の” アドレスを解決するのに時間がかかります。この問題は、ssh_config 設定ファイルで AddressFamily inet を加えることでとりあえず解決することができます。
* クライアント側あるいはサーバ側の DNS の参照に問題がある場合もあります。クライアント側とサーバ側で nslookup コマンドを使って、お互いの名前と IP アドレスを検索してみてください。さらに、クライアントの IP 名検索で返された名前をサーバ側で検索します。 sshd_config 設定ファイルに UseDNS no を加えることでほとんどのサーバ側の DNS 検索を抑えることができます。

ということで、/etc/ssh/sshd_config に

UseDNS no
AddressFamily inet

を追記して、sshdを再起動。それぞれ、コメントアウト行があったのでその下に
追記しました。

2010.02.16

Category: Command, Os, Redhat ES(CentOS) / Tags:

iptables – IPv4 のパケットフィルタと NAT を管理するツール (INPUTサンプル)

細かく設定するには、シェルとかで管理すべきみたいなのですが、基本のINPUTの部分だけをおさえておきます。
そこまで自信がないので、深くは信じないでください。(他のとみくらべてね)

# コメント行
* table名(filter nat mangle)のどれか、基本的には、filterを利用
:<チェーン名> <チェーンポリシー> [<パケットカウンタ>:<バイトカウンタ>]
COMMIT は設定反映といった感じ

オプション

-A で、追加。
-p プロトコル tcp,、udp、 icmp、 allが指定できる。
-m(–match) -pで暗黙のうちに指定されるが、-mで指定してもOK.-pとセットで使う。
–dport (-p tcp の場合のみ)送信先ポートまたはポート範囲の指定
-i インターフェイス eth0 eth1 とか
-s ipアドレス(送信元の指定)
-j [ACCEPT|DROP] 許可不許可 「-A INPUT -s -j ACCEPT 」で、そのIPアドレスから接続許可

“-m state” を指定した場合の拡張オプション
–state [NEW|"INVALID" |ESTABLISHED|RELATED] 接続状態
NEWは新規接続のパケット,”INVALID” は既存パケットと関係のないパケット,ESTABLISHEDは既存パケットと関係あるパケット,RELATEDは新規接続のパケットであるが、既存パケットに関係のあるパケットである。
これにより、いちいち応答パケットを許可する設定をしなくても済みます。

設定サンプル

#table名を記載
*filter
#とりえあず、INPUTは制限、OUTPUT FORWARDは、全てを許可
:INPUT DROP
:FORWARD ACCEPT
:OUTPUT ACCEPT
#下記は、ICMP用
#ICMPは送信したデータが届かなかったとき、また障害があったときに利用されるプロトコルです。
#0 = エコー応答Echo Reply(エコー応答)(pingなど)
#8 = エコー要求(pingなど)
-A INPUT -p icmp -m icmp –icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp –icmp-type 0 -j ACCEPT
# 接続済みは許可
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
#接続許可IP
#local
-A INPUT -s 127.0.0.1 -j ACCEPT
#メンテナンスのIPとか
-A INPUT -s xxx.xxx.xxx.xxx -j ACCEPT
#サービスベースでの接続 80番ポート
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
# -mは指定しなくてもいける
-A INPUT -p tcp –dport 443 -j ACCEPT
# dnsはudpも指定
-A INPUT -p tcp –dport 53 -j ACCEPT
-A INPUT -p upd –dport 53 -j ACCEPT
# ntp はupdで
-A INPUT -p upd –dport 123 -j ACCEPT
#反映
COMMIT

という事で、必要部分だけ綺麗に書くと

*filter
:INPUT DROP
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -p icmp -m icmp –icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp –icmp-type 0 -j ACCEPT
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.1 -j ACCEPT
-A INPUT -s xxx.xxx.xxx.xxx -j ACCEPT
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp –dport 443 -j ACCEPT
-A INPUT -p tcp –dport 53 -j ACCEPT
-A INPUT -p upd –dport 53 -j ACCEPT
-A INPUT -p upd –dport 123 -j ACCEPT
COMMIT

-A INPUT -s xxx.xxx.xxx.xxx -j ACCEPT
の部分は、もう少し制御して
-A INPUT -p tcp –dport 22 -s xxx.xxx.xxx.xxx -j ACCEPT
とサービスまで絞り込んだ方がよりいいです。

2010.02.10

Category: Apache, Command, Shell / Tags:

logrotateで日付付のログをバックアップする。

過去に
「logrotate & bash で日付付のログをバックアップする。」
っていうのをメモっているけど、別ファイルのbashをつくるのもめんどうなのでより簡単メモ

/var/log/httpd/*log {
daily
rotate 10
create
compress
missingok
notifempty
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
EXT=date +%Y%m%d -d ‘1 days ago’
for f in $1;
do mv $f.1.gz $f.$EXT.gz;
done
endscript
}

EXT=date +%Y%m%d -d ‘1 days ago’
for f in $1;
do mv $f.1.gz $f.$EXT.gz;
done

が追加分、corn では、通常4時2分に起動するので、基本的に前日の日付をつけておく。
でもって、ローテートしたファイルをリネームしているだけ、
これだと、本来、「rotate 10」のところは、1でもいいのだけど、念のための保険で10回
にしているだけです。
こっちの方が簡単だな。

追記:2010.02.23
EXT=date +%Y%m%d -d ‘1 days ago’
の部分をそのままコピペすると、WPが変換かけてるのでうごきません。
「1 days ago」をシングルコーテーションで囲み直して、
「date +%Y%m%d -d ‘1 days ago’」全体を実行演算子で囲んでください。

でもって、バージョンの違いかわからないけど、compress が postrotate
の後に行われる場合がある。こうなると日付のファイル名にリネーム
できなくなる。(gzで圧縮した後のファイル名をリネームしようとしてるので)

という事で、さらに改訂。compressをlogrotateにまかせずに。

/var/log/httpd/*/*log {
daily
rotate 10
create
missingok
notifempty
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
EXT=date +%Y%m%d -d ‘1 days ago’
for f in $1;
do
if [ -e $f.1 ] ; then
gzip $f.1;
mv $f.1.gz $f.$EXT.gz;
fi
done
endscript
}

といった形で、postrotateのなかでしてしまう。先に、killプロセス送っているので
ログも新しいファイルに書き出されているので、圧縮中のログが消える心配も
ないので、こちらの方がいいかも。

2009.11.11

Category: Mac / Tags:

Mac に GO言語(golang)をインストールしてみる。

Googleが新しい言語(go言語)を開発したって事なので、せっかくなので
インストールしてみます。

http://golang.org/doc/install.html

に、インストールマニュアルがありますが、今回は
Mac OS 10.6.2 (Snow Leopard)へのインストール記録

0.下準備
今回は、一ユーザの権限でインストールします。
下準備

  • Xcode をインストールしている。(OSのインストールディスクからインストールできます)
  • macportsが入っている。
  • 基本のディレクトリは、/Users/kiyo(おのおののユーザ名で置き換えてください)とする。
  • ターミナルの作業が基本です。
  • goのインストールフォルダは、/Users/kiyo/go とします。

1.Environment variables 環境変数を設定する。
ターミナルを立ち上げて、

KiyoMac:~ kiyo$ cd
KiyoMac:~ kiyo$ vi .bash_profile

下記の行を追加

export GOROOT=$HOME/go
export GOOS=darwin
export GOARCH=amd64
export GOBIN=$GOROOT/bin
export PATH=$GOBIN:$PATH

※10.5.x(Leopard)の場合は、32bitかもしれないので。

export GOARCH=386

でないといけないとおもいます。(未検証)
反映

KiyoMac:~ kiyo$ source .bash_profile

確認

KiyoMac:~ kiyo$ env | grep ‘^GO’
GOBIN=/Users/kiyo/go/bin
GOARCH=amd64
GOROOT=/Users/kiyo/go
GOOS=darwin

パスに設定されてるかも確認

KiyoMac:~ kiyo$ env | grep ‘^PATH’
PATH=/Users/kiyo/go/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

/Users/kiyo/go/bin があればOK

2.Ports
GO言語は、LinuxとMac OS X で、それぞれ、amd64(64bit) 386(32bit) arm に対応してるよってことなので、無視。

3.Fetch the repository レポジトリの作成まぁ、インストールフォルダの作成。
まず、hg のコマンドがあるか確認します。

KiyoMac:~ kiyo$ which hg
/usr/local/bin/hg

で、コマンドが出てこない場合は、

KiyoMac:~ kiyo$ sudo easy_install mercurial
Password:
Searching for mercurial
Reading http://pypi.python.org/simple/mercurial/
Reading http://www.selenic.com/mercurial
Best match: mercurial 1.3.1
Downloading http://mercurial.selenic.com/release/mercurial-1.3.1.tar.gz
Processing mercurial-1.3.1.tar.gz
Running mercurial-1.3.1/setup.py -q bdist_egg –dist-dir /tmp/easy_install-Ui4ZEE/mercurial-1.3.1/egg-dist-tmp-SbX7Oy
zip_safe flag not set; analyzing archive contents…
mercurial.extensions: module references __file__
mercurial.i18n: module references __file__
mercurial.lsprof: module references __file__
mercurial.templater: module references __file__
Adding mercurial 1.3.1 to easy-install.pth file
Installing hg script to /usr/local/bin

Installed /Library/Python/2.6/site-packages/mercurial-1.3.1-py2.6-macosx-10.6-universal.egg
Processing dependencies for mercurial
Finished processing dependencies for mercurial

でいれこみます。入る物は、
http://mercurial.selenic.com/wiki/Download
です。
フォルダがなければ

KiyoMac:~ kiyo$ mkdir ./go

で作成。
ソース等の入れ込み

KiyoMac:~ kiyo$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT
requesting all changes
adding changesets
adding manifests
adding file changes
added 3976 changesets with 16799 changes to 2931 files
updating working directory
1640 files updated, 0 files merged, 0 files removed, 0 files unresolved

4.Install Go インストール
じゃあインストールしてみましょう。ここでOS Xに、Xcodeが入ってないと、gccとかがないので
コンパイルできずに怒られるので、先にXcodeを入れておいてください。

KiyoMac:~ kiyo$ cd go/src/
KiyoMac:src kiyo$ ./all.bash
色々出てきて。
— cd ../test
0 known bugs; 0 unexpected bugs

終了

5.Writing programs プログラムを書こう
じゃあ、プログラムを動かしてみましょう。
Mac OS X 10.6 は、6g 6l のコマンドを利用します。OS X 10.5(32bit)なら、8g 8l みたいです。(未確定)

KiyoMac:~ kiyo$ cd
KiyoMac:~ kiyo$ cat hello.go
package main

import “fmt”

func main() {
fmt.Printf(”hello, world\n”)
}
KiyoMac:~ kiyo$ 6g hello.go
KiyoMac:~ kiyo$ 6l hello.6
KiyoMac:~ kiyo$ ./6.out
hello, world

と出力されればインストール完了です。

さて、問題はこれでなにをするかだ・・・。

2009.11.06

Category: Mac / Tags:

Macのterminal(ターミナル)でSSH接続が出来ない場合

mac の terminalで、

Received disconnect from 192.168.1.100: 2: Too many authentication failures for hogehoge

となって、SSHの接続が出来なくなったばあい。ssh-agentを疑ってみる。

KiyoMac:macro kiyo$ ps ax | grep ssh
764 ?? S 0:01.32 /usr/bin/ssh-agent -l
38327 ?? Z 0:00.00 (ssh)
40953 ?? T 0:01.05 /usr/bin/ssh admin@192.168.2.100
48427 s000 R+ 0:00.00 grep ssh

の様に、ssh-agent が起動している場合、こいつをkillしてしまいます。

KiyoMac:macro kiyo$ kill -9 764

で、OK.
どうやら、keychainと連携して、ssh-agentが立ち上がるのですが、そちらとバッティングしているご様子です。

2009.10.01

Category: Redhat ES(CentOS) / Tags:

yum-updatesdで自動更新

CentOSとかで、
初期設定では、yum-updatesd で、自動更新はされません。
(スタンスは正しいと思います。)
で、一々手動でupdateするのが面倒だって言う場合は。
/etc/yum/yum-updatesd.conf を

# automatically install updates
do_update = yes
# automatically download updates
do_download = yes
# automatically download deps of updates
do_download_deps = yes

と全部 yesにして、

/etc/init.d/yum-updatesd restart

で、反映させればOK

2009.07.28

Category: Redhat ES(CentOS) / Tags:

networkの設定 ifconfig でIPアドレスを割り当てる

  ・FreeBSD

コマンドラインによる設定
# ifconfig fxp0 inet IPアドレス netmask 255.255.255.255 alias
設定ファイルへの記述(以下の1行を追加設定)
# vi /etc/rc.conf
ifconfig_fxp0_alias1 inet IPアドレス netmask 255.255.255.255

  ・RedHat/Fedora/CentOS Linux

コマンドラインによる設定
# ifconfig eth0:0 inet IPアドレス netmask 255.255.255.255
設定ファイルへの記述(以下のファイルを新規作成)
# vi /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
BOOTPROTO=none
ONBOOT=yes
IPADDR=IPアドレス
NETMASK=255.255.255.255

設定一覧は
# ifconfig
で確認できます。
inet オプションは、 ipv4の事(デフォルト)
複数割り当てる場合は、「etho:1」とか名前をかえて設定していくこと。

2009.03.18

Category: Os / Tags:

Amazon EC2 VirtualHosts の設定ではまる。(vhost, vhosts)

amazon のEC2でvertualhostの設定をしたところ、半日はまってしまった。
ec2は、 Elastic IPという固定IPが、(現時点で) EC2のインスタンス1つにつき1つもらえるので
それを元に、(頂いたIPが 111.222.333.444 とする)

NameVirtualHosts 111.222.333.444:80
<VirtualHost 111.222.333.444:80>
ServerName www.example.com
DocumentRoot “/var/www/vhosts/”
</VirtualHost>
<VirtualHost 111.222.333.444:80>
ServerName www2.example.com
DocumentRoot “/var/www/vhosts/”
</VirtualHost>

として、 www.exampel.com www2.exampel.com を立ち上げようとしても上手く行かない
VirtualHostの中のDocumentRootを見に行っってくれないのである
#apachectl -t -D DUMP_VHOSTS
でやっても、エラーも無く返ってくるのであるが上手く行かない。で正解は

NameVirtualHosts *:80
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot "/var/www/vhosts/"
</VirtualHost>
<VirtualHost *:80>
ServerName www2.example.com
DocumentRoot "/var/www/vhosts/"
</VirtualHost>

とすると、うまくいく。つまりはワイルドカードを使ってしまえって事。
たぶん、仮想化の仕組み上、Elastic IPとサーバーは結びついてはいるものの
内部の設定ファイルに Elastic IPを書いても上手い事行かないんじゃないかと勝手に想像しています。
4時間も使ってしまったよ・・・。

dns named 設定

dns の設定
正直よくかってないので、正確な情報と思わないでください。
pictnotes.jp の DNSを設定するとしたら
当然 namedは動いている事
# /etc/init.d/named status
# cd /var/named/chroot/var/named
ファイルがないと思うので作成
# touch pictnotes.jp.rev
# touch pictnotes.jp.zone
正引き、逆引きファイルを作成
# vi pictnotes.jp.rev
—-ここから
$TTL 86400
@ IN SOA ns.pictnotes.jp. root.pictnotes.jp. (
2008121701; Serial
3H ; Refresh
15M ; Retry
1W ; Expire
1D ) ; Minimum
;
IN NS ns.pictnotes.jp.
;
IN PTR ns.pictnotes.jp.
IN PTR pictnotes.jp.
—-ここまで
—-ここから
$TTL 86400
@ IN SOA ns.pictnotes.jp. root.pictnotes.jp. (
2008121701; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
;
IN NS ns.pictnotes.jp.
IN NS ns.example.com.
IN A 202.218.112.41
IN MX 10 pictnotes.jp.
;
ns IN A 202.128.112.41
www IN A 202.218.112.41
IN MX 10 www
—-ここまで
; からあとはコメント
Serialは、修正したら新しくしなければならない、だいたい日付と連番
ドメイン登録情報のプライマリーDNSに、 ns.pictnotes.jpとIPと登録
IN NS ns.example.com.
は、セカンダリーDNS
named-checkzone
named-checkconf
等のコマンドで、構文をチェックできる。

« Older Entries