外部からファイアウォール内のLinuxにsshでログインする方法
ファイアウォール内にある友人のLinuxをリモートからサポートしてあげる場合には、以下の方法でOK。
ファイアウォール内にあるLinux上から以下のコマンドを入力する。
# ssh -N -R 20022:localhost:22 root@自分のサーバーのIPアドレス
これで、自分のサーバーのポート20022に、ファイアウォール内のLinuxのポート22番が現れる。(トンネリング)
次に自分のサーバーから、以下のコマンドにてlocalhost:20022(=ファイアウォール内のLinuxのポート22番)にsshでログインできる。
# ssh -p 20022 root@localhost
この方法を使えば、ポート22に限らず内部のWEBサーバーでも何でも見せることができる。VNCでもリモートデスクトップでも何でもOK。
How to install CentOS5
友人のためにCentOS5のインストール入門を書いてみる。
- インストールメディアを準備
http://www.centos.org/ からisoイメージをダウンロードして焼いておく。
32ビット版と64ビット版があるのでマシンに合わせて選ぶ。
- インストール
一番面倒くさいのがパーティションの切り方。(本当はLVMを使ったほうが良いけど入門なので)
/boot --- 100MB --- ext3 swap --- 2GB --- swap / --- 10GB --- ext3 /tmp --- 1GB --- ext3 /var --- 残り全部 --- ext3
日本語は入れないこと。
キーボードのタイプは間違えないこと。
タイムゾーンはAsia/Tokyo
インストールタイプは、「Server」を選択。X-Windowは入れたら駄目。
インストール時のネットワークはDHCPでOK。
- ファイアウォールとセキュリティの設定
ファイアウォール(iptables)と SE Linux は無効化。
# system-config-securitylevel
Security Level: ( ) Enabled (*) Disabled SELinux: Enforcing Permissive *Disabled
- ネットワークの設定
以下のコマンドで楽々設定
# system-config-network
こんな感じで、自宅の環境に合わせて。(Default gateway IPは、ブロードバンドルータのIPアドレス)
│ Name eth0________________ │ │ Device eth0________________ │ │ Use DHCP [ ] │ │ Static IP 192.168.0.100_______ │ │ Netmask 255.255.255.0_______ │ │ Default gateway IP 192.168.0.1_________ │
設定を反映させるためにネットワークをリスタート
# service network restart
DNSを設定しましょう。
# vi /etc/resolv.conf
以下のような感じで。
nameserver 192.168.0.1 <-たいていはブロードバンドルータがDNSになってくれる。 nameserver 12.34.56.78 <-YahooBBなどの自分のプロバイダが提供しているDNSでももちろんOK。
- RPMパッケージのインストール
よく使うソフトをインストールする。
yum コマンドおさらい
検索
# yum search <ソフトウェア名> 例 # yum search httpd # yum provides <パッケージに含まれるファイル名> 例 # yum provides php.ini
インストール (-y を付けると勝手にインストールします。)
# yum install パッケージ名 例 # yum install httpd # yum groupinstall パッケージグループ名 例 # yum groupinstall "Development Tools"
というわけでLAMP環境なら以下でOK。
# yum -y groupinstall "Development Tools" # yum -y groupinstall "Web Server" # yum -y groupinstall "MySQL Database" # yum -y install php php-devel php-pear php-mysql php-gd php-mbstring subversion
あと、以下は良く使うので入れておく。
# yum install sysstat postfix ntp wget curl
- 時間の設定
以下の設定をしておくとサーバーの時間がずれない。(毎日 4:56 に時刻が修正される)
# vi /etc/cron.d/ntpdate
56 4 * * * root /usr/sbin/ntpdate -s jp.pool.ntp.org 57 4 * * * root /sbin/hwclock --set --date=' `date`'
- メールサーバーの設定
デフォルトでSendmail になっているので、Postfixに変更する。
# alternatives --config mta
There are 2 programs which provide 'mta'. Selection Command ----------------------------------------------- *+ 1 /usr/sbin/sendmail.sendmail 2 /usr/sbin/sendmail.postfix Enter to keep the current selection[+], or type selection number: 2
Postfixの設定ファイルを書き換える
# vi /etc/postfix/main.cf
relayhost を書き換える。
... relayhost = [プロバイダから指定されたSMTPサーバーのIPアドレス] ...
これでこのLinuxサーバーからのメールはプロバイダがちゃんと管理しているメールサーバー経由で外に出て行く。
- 各種デーモン(サービス)の設定
サービスの一覧
# chkconfig --list
サービスの削除
# chkconfig --del サービス名
サービスの追加
(/etc/init.d/ の下を見ると名前を確認できる)
# chkconfig --add サービス名
サービスのOn/Off
# chkconfig サービス名 on # chkconfig サービス名 off
LAMP環境なら以下でとりあえずOK。「chkconfig --del サービス名」 を使って不要なデーモンをひたすら削除する。ランレベルは「3」のところだけ気にすればOK。
# chkconfig --list httpd 0:off 1:off 2:off 3:on 4:on 5:on 6:off postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off mysqld 0:off 1:off 2:off 3:on 4:on 5:on 6:off
サービスの起動、停止、再起動
# service サービス名 start # service サービス名 stop # service サービス名 restart
- manコマンド
わからないことが出てきたら以下のおまじないを唱える
# man わからない言葉 例 # man man # man chkconfig # man yum
- Windowsから簡単にアクセスしたい時
\\LINUXのIPアドレス\
でアクセスできる。
sambaインストール
# yum install samba
設定ファイル
# vi /etc/samba/smb.conf
[root] path = / writable = yes valid users = root
sambaにユーザ追加
# smbpasswd -a root
sambaリスタート
# service smb restart
mod_rewrite まとめ
- 準備
SSLProxyEngine On #httpsのURLに転送ではなくてリバースプロキシーする場合には、Onにしておく RewriteEngine On #必ずOnにしておく RewriteLog "logs/rewrite_log" #デバッグに非常に便利 (/var/log/httpd/rewrite_log) RewriteLogLevel 9 #9が最高。ログが多すぎるときは1に。デバッグが終わったらコメントアウトしておく
- 条件文
GETリクエストで、/foo または /bar へのアクセスで、クエリーの中にABCが入っていたら。(NCは大文字・小文字区別しない。ORはOR条件)
RewriteCond %{REQUEST_METHOD} GET RewriteCond %{REQUEST_URI} ^/foo$ [OR] RewriteCond %{REQUEST_URI} ^/bar$ RewriteCond %{QUERY_STRING} ABC [NC] RewriteRule . http://www.example.com/ [R,L]
- 否定
「!」を先頭に付けることで、「〜で無いなら」 という 否定 になる。
RewriteCond %{REQUEST_URI} !^/abc$
- パターンマッチングと後方参照
RewriteCond の「()」内でマッチした文字列を参照するには、「%番号」(例「%1」) を使う。
RewriteRule の「()」内でマッチした文字列を参照するには、「$番号」(例「$1」) を使う。
RewriteCond %{QUERY_STRING} DOMAIN=([^=&]+) RewriteRule . http://%1/ [QSA,P,L] RewriteRule ^/(.*)/$ http://example.com/$1 [QSA,P,L]
- 環境変数の設定
環境変数の設定は、RewriteRule で行う。%{変数名}で参照する。
RewriteRule ^/(.*)/$ - [E=MYHOST,C] RewriteRule ^/(.*)/$ http://%{MYHOST}/ [R,L]
- プログラムを使った条件や書き換え
RewriteMap my_script prg:/etc/httpd/bin/my_script.pl RewriteCond ${my_script:%{REQUEST_URI}} ABC [OR] RewriteCond ${my_script:%{REQUEST_URI}} xyz [OR] RewriteCond ${my_script:%{REQUEST_URI}} 123
my_script.pl
#!/usr/bin/perl $| = 1; while (<>) { chomp; my $mod = time % 3; if($mod == 0) { print "ABC\n"; } elsif($mod == 1) { print "xyz\n"; } else { print "123\n"; } }
Static Route (スタティック ルート) の追加
以下のコマンドでroute を追加する。(-p はパーマネント。リブートしても設定が残る)
route add -p ネットワークアドレス mask ネットマスク ルータのIP route add -p ネットワークアドレス mask ネットマスク ルータのIP if インタフェース番号
以下のコマンドでroute を削除する。
route delete ネットワークアドレス mask ネットマスク ルータのIP
例
route add -p 123.234.43.0 mask 255.255.255.0 192.168.0.10
確認
route print
カスタマイズ
- 無駄な装飾をなくしパフォーマンス優先にする
Win+r SystemPropertiesAdvanced.exe
「Performance」の「Settings...」をクリックする。
「Adjust for best performance」を選択する。
man コマンドなどで日本語の方を見たいとき
rootの言語は英語にしているが、その場だけ日本語にしたい場合は、環境変数「LANG」に「ja_JP.UTF-8」にセットしてから実行すればよい。
# LANG=ja_JP.UTF8 コマンド
そのままだとエラーメッセージも英語 # ls -ltr /foo/bar ls: /foo/bar: No such file or directory こうするとエラーメッセージが日本語 # LANG=ja_JP.UTF8 ls -ltr /foo/bar ls: /foo/bar: そのようなファイルやディレクトリはありません
デフォルトが日本語になっていて文字化けなどの理由で英語の方がいい場合は、「LANG」には「C」を設定する。
# LANG=C コマンド
MTAをSendmailからPostfixに変更する方法
今までCentOS上で、MTAをSendmailからPostfixに変更する場合は、
# system-switch-mail
というRedhat固有のコマンドを使っていたが、デフォルトでは入らないので、
# yum install system-switch-mail
していたが、同僚からalternatives(これもRedhat固有)というコマンドを教えてもらった。感謝。
使い方は以下のとおり。
# alternatives --config mta There are 2 programs which provide 'mta'. Selection Command ----------------------------------------------- * 1 /usr/sbin/sendmail.sendmail + 2 /usr/sbin/sendmail.postfix Enter to keep the current selection[+], or type selection number: 2
こっちのほうが、デフォルトでインストールされているし、ターミナルから実行する場合の画面のくずれの心配も無いので断然おすすめ。