Hatena::ブログ(Diary)

shouhの日記

2015-03-28

VMWareでNAT接続のゲストOSにSSHログインする

チェック観点を挙げておくだけに留める。たぶん、これくらい網羅しとけばいけるはず。

ホストOSからゲストOSに繋がるか調べる

ホストOSからゲストOSSSHログインできるか調べる

  • ゲストOSsshd は起動しているか

VMWareのNATを使ってゲストOSからyumを実行する(インターネットに繋げる)ためのTIPS

ゲストOSからインターネットアクセスできるようにする…ってことは何回もしているのだけど、たまたま上手くいったり、かと思えば挫折したり、と行き当たりばったりだった。ので、まとめてみることに。

はじめに

目的

  • ゲストOSからyumコマンドが使えること

本記事のスタンス

  • チェックすべき観点を挙げることを重視している
  • 観点でおいて、具体的にどこをどう設定すればいいかといった細かい手順は割愛
  • ホストOS: Windows7、ゲストOS: CentOS 6.2 Minimal を前提(としているが、おおよそどの Linux でも共通しているとは思う)

ゲストOSIPアドレスは設定されているか

確認すること

設定箇所

  • /etc/sysconfig/network
  • /etc/sysconfig/network-scripts/ifcfg-eth0

ホストOSNAT用アダプタ(VMNet8)の設定は適切か

確認すること

※vmnetcfg.exeについて
VMWareネットワーク設定を行うツールだが、VMWarePlayer version 5 からは同梱されなくなった。version 3 or 4 のインストーラから取り出してくる必要がある。

取り出し方法

  1. 3 or 4のインストーラを公式サイト等から入手
  2. VMware-player-3.0.1-227600.exe /e EXTRACT_TO
    • EXTRACT_TO には存在しないパスを指定する(新たにフォルダが作られる)
    • EXTRACT_TO 内の network.cab を展開する
  3. 取り出した vmnetcfg.exe を、自分が使おうとしている VMWarePlayer のインストールフォルダに置く
    • これをしないと vmwarestring.dll が見つからないエラーが出る

VMWare NAT Service は起動しているか

services.msc を開き、起動しているか確認。起動してなければ起動。

ゲストOSデフォルトゲートウェイ設定は適切か

NATを使う場合、インターネットの接続経路は以下のようになっている(と思う)。

ゲストOS→(ホストOS側で用意したゲストOS用の)ゲートウェイ→ホストOS→インターネット

ここでいうデフォルトゲートウェイとは、上記のゲートウェイのところを指す。これがちゃんと設定されてなければ、インターネットまで届かないのは自明

確認すること

ホストOS側のファイアウォールでゲストOSからの通信を遮断していないか

ゲストOSからホストOSにつながらない場合、ホストOS側のファイアウォールが悪さをしている可能性がある。firewall.cpl を開き、設定を確認し、ブロックされていたら解除する(詳細手順はうろ覚えなので割愛)。

普通は気にしなくていいはず。以下の場合は、気にした方がいいかも。

ゲストOSから名前解決はできるか

ゲストOSから www.google.co.jp などドメイン名で ping を打ってみる。以下のように、ドメイン名からIPアドレスが取れていればOK。

$ ping www.google.co.jp

www.google.co.jp [216.58.221.163]に ping を送信しています 32 バイトのデータ:
216.58.221.163 からの応答: バイト数 =32 時間 =30ms TTL=55

ゲストOSDNSサーバとしては、ホストOS側のNAT用アダプタ(VMNet8)のアドレスを指定すればよい。

設定箇所はこの辺(だと思う)

  • /etc/resolv.conf
  • /etc/sysconfig/network-scripts/ifcfg-eth0

ゲストOSからyumコマンドが使えるか

yum自体にもいくつか設定項目があるため、確認は必要。

2014-09-06

Linuxでプロンプト名を変える

環境変数 PS1 をいじればよい。ホスト名や日付等を埋め込める特殊マクロも用意されている模様。

[root@localhost ~]# export PS1="[for checking log]# "
[for checking log]# export PS1="[user='\u', host='\H']# "
[user='root', host='localhost.localdomain']#

参考: bashのプロンプトを変更するには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/002cngprmpt.html

2014-08-06

.bashrc に書いた環境変数がログイン時に反映されない件

.bashrc にこう書いてるのに、

export JAVA_HOME=/usr/local/java/jre_1.7.60/

なぜか JAVA_HOME の内容がこうなってしまう。

$ echo $JAVA_HOME
/usr/local/java/jre_1.7.60/bin

意味わかんなかったけど、気づいてみればなんてことなかった。

.bash_profile にこう書いてあった。

export JAVA_HOME=/usr/local/java/jre_1.7.60/bin

.bash_profile の方が後に読み込まれるということか。

(追記)
ちょっと調べてみたところ、読み込むフローとしては以下の 2 パターンがあるようだ。

  1. .bashrc
  2. .bashrc → .bash_profile

でも 1 のパターンは、bashコマンドを単独で打った時だけなので、普段は気にしなくて良さそう。
参考:
.bash_profileと.bashrcの違いが覚えられないあなたへの処方箋 - DQNEO起業日記
http://dqn.sakusakutto.jp/2012/08/bash_profile_bashrc.html

2014-07-05

shell script の expr で 指数の表現を期待 エラーが出る件

これはダメ。

expr 1+1


これが正しい。

expr 1 + 1


ちなみに、指数の表現を期待とは、整数の表現を期待の誤訳らしい。

2014-06-14

time コマンドの出力も tee コマンドに反映したい

これでできた。

(time yourcommand) 2>&1 | tee result.txt


ポイントは、time コマンドの結果が標準エラー出力なので 2>&1 で標準出力にリダイレクトすることと、リダイレクト対象を正しく認識させるために time コマンド部分から括弧で囲ってやること。

libhoge.so: file not recognized: File truncated が出る件

いったんクリーンしてから再びビルドする。前のビルドで作った残骸が悪さをしているケースがある。

それでもダメなら、ファイル libhoge.so が正しいことを確認する。サイズゼロの空ファイルになってないかとか。