プログラミング系のネタをまとめていきます。

ダウンロードファイル


VirtualBox
https://www.virtualbox.org/wiki/Downloads

VirtualBox-4.3.4-91027-Win.exe


CentOS 6.5
http://www.centos.org/

Downloads - CentOS Public Mirror List - 適当なミラーのHTTP - /centos/6.5/isos/i386/
CentOS-6.5-i386-bin-DVD1.iso
CentOS-6.5-i386-bin-DVD2.iso

環境構築

仮想マシン構成


※GUIインストールするには、最低 652MB のメモリ搭載が必要らしい。


●仮想マシン新規作成
仮想マシン名CentOS6.5
OSタイプ:Linux
バージョン:Red Hat
メモリサイズ768MB
ハードドライブ仮想ハードドライブを作成
VDI(VirtualBox Disk Image)
可変サイズ 8GB

●CentOS初期設定
ホスト名localhost.localdomain
言語Japanese
キーボード日本語
パーティション設定基本ストレージデバイス
ストレージ警告が出るので、「はい。含まれていません。〜」を選択
地域選択東京
システムクロックでUTCを使用にチェック
インストールタイプすべての領域を使用する
インストールパッケージDesktop

kdumpの設定でエラー発生


kdump の自動有効化にはメモリーが不足しています。
system-config-kdump を使って手動で設定して下さい。
というエラーが発生。



とりあえず無効状態で設定を進める。

構築した仮想マシンを他のPCへ移行


VirtualBoxマネージャーの「仮想アプライアンスのエクスポート」、「仮想アプライアンスのインポート」を使うだけ。

Vagrant/VirtualBoxの環境をそのまま他のPCに移行する
http://terurou.hateblo.jp/entry/2013/10/14/220621


Guest Additions導入

  • ゲストOSからホストOSへのマウスカーソル移動に[右Ctrl]キーが不要となる。
  • ホストOSのフォルダをとしてゲストOSから参照可能になる。
  • コピー時のクリップボードが、ホストOSとゲストOSとの間で共通化される。
  • VirtualBoxのウィンドウの拡大・縮小に伴い、ゲストOSのデスクトップの解像度が可変になる。

gcc make kernel kernel-develのインストール

ゲストOS内の端末で、以下をインストール。
yum install gcc make kernel kernel-devel

Guest Additionsのインストール

VirtualBoxのバージョンによって違うかも。

cd /media/VBOXADDITIONS_4.1.22_80657/
sh ./VBoxLinuxAdditions.run

設定変更


ゲストOSからインターネットに接続


一般的な環境構築の方法として、NAT接続、ブリッジ接続があるようです。
NAT接続ホストOSとゲストOSは別々のネットワークに存在する。
ブリッジ接続ホストOS、ゲストOSは同一のネットワーク内に存在する。

ブリッジ設定のほうが簡単に設定できます。
ネットワークを分けて、セキュリティを高めたい時等はNATのほうが良いようです。

NAT接続

VirtualBox設定
  1. VirtualBox上で仮想マシンを選択状態にして、[設定]
  2. [ネットワーク]を選択
  3. アダプタ1(有効) : NAT
アダプタ2(有効) : ホストオンリーアダプタ
CentOS設定

●IPアドレス固定化
  1. [システム]→[設定]→[ネットワーク接続]
  2. eh1を選択→[IPv4のセッティング]
アドレス : 適当なアドレス(DHCPによる自動設定のIPアドレスが無難。今回は 192.168.56.0/24 のIPアドレスならOKっぽいです。)
ネットマスク : 255.255.255.0
ゲートウェイ : 指定なし
  1. ifconfig コマンドで、IPアドレスが指定通りならOK。

※変更しても変わらない場合は、
service network restart
でネットワーク設定を再起動。
NATの問題

上記設定で、ゲストOSからインターネットへ繋がり、ゲストOSからホストOSへpingが通る状態になりますが、
ホストOSからゲストOSへpingが通りませんでした。

何か設定が間違っているのかもしれませんが、
ホストOSのネットワークとゲストOSのネットワークが別々になっている事が原因の一つかもしれません。

となると、ゲスト→ホストへpingが通る理由がよくわかりませんが、
NATのゲスト→ホストのIPアドレス変換がうまく働いているということですかね…

とりあえず、今回は難しいネットワーク設定をするつもりは無かったので、ブリッジ接続で進めようと思います。

後述の参考サイトではNAT接続で特殊な設定をすることもなく、相互にpingが通る状態になったようです。
また気が向いた時に調べてみようと思います。

ブリッジ接続

VirtualBox設定
  1. VirtualBox上で仮想マシンを選択状態にして、[設定]
  2. [ネットワーク]を選択
  3. アダプタ1(有効) : ブリッジアダプター
CentOS設定

●IPアドレス固定化
  1. [システム]→[設定]→[ネットワーク接続]
  2. eh0を選択→[IPv4のセッティング]
アドレス : 適当なアドレス(ホストOS側のDHCPが管理している範囲のIPアドレス)
ネットマスク : 255.255.255.0
ゲートウェイ : 指定なし
  1. ifconfig コマンドで、IPアドレスが指定通りならOK。

※変更しても変わらない場合は、
service network restart
でネットワーク設定を再起動。


サービスの自動起動設定


# サービスの一覧に追加
chkconfig --add サービス名

# サービスの一覧から削除
chkconfig --del サービス名

# サービスの状態の一覧を見る
chkconfig --list

# サービスの自動起動をONにする
chkconfig サービス名 on

# サービスの自動起動をOFFにする
chkconfig サービス名 off

# ランレベルを指定した自動起動の設定
chkconfig --leve ランレベル サービス名 [on|off]

# サービスについての状態を見る
chkconfig --list サービス名

http

http ログ確認


ログファイル
/var/log/httpd/access_log

# tail -f /var/log/httpd/access_log

プロセス確認


# ps aux | grep httpd

動作していれば、以下の様に出力される。
apacheは複数表示されるっぽい。
起動していない時は apache の行が出力されない。


root    24823 3.4 1.7 18056 8952 ?   Ss  10:23  0:00 /usr/sbin/httpd
apache  24826 0.0 1.2 14556 6460 ?   S   10:23  0:00 /usr/sbin/httpd
apache  24827 0.0 2.0 26908 10176 ?  S   10:23  0:00 /usr/sbin/httpd
apache  24829 0.0 2.0 26908 10172 ?  S   10:23  0:00 /usr/sbin/httpd
apache  24831 0.0 2.0 26908 10172 ?  S   10:23  0:00 /usr/sbin/httpd
apache  24833 0.0 2.0 26908 10172 ?  S   10:23  0:00 /usr/sbin/httpd
apache  24835 0.0 2.0 26908 10172 ?  S   10:23  0:00 /usr/sbin/httpd

ゲストOS(CentOS5.2)のApacheにホストOSからアクセスできない時の対処方法

エラー、トラブル対応

Could not reliably determine the server’s fully qualified domain name〜

http://d.hatena.ne.jp/uriyuri/20100511/1273575287

/etc/sysconfig/network, /etc/hosts に、localhost以外のホスト名が登録されていて、
apache設定ファイルにそれが定義されていない時に発生するエラー。

/etc/httpd/conf/httpd.conf
に、そのホスト名を定義すればOK。

ServerName ホスト名

ssh

アクセス制限

/etc/hosts.allow接続を許可するIPを設定
/etc/hosts.deny接続を禁止するIPを設定

(例
192.168.1.xxx を許可する
hosts.allow
sshd : 192.168.1.

全て禁止する
hosts.deny
sshd : all

denyよりallowが優先される

ssh ログ確認


ログファイル
/var/log/secure

# tail -f /var/log/secure

IPv6無効化

各種設定


1. /etc/sysconfig/networkに以下を追加。
NETWORKING_IPV6=no

2. /etc/modprobe.d/disable-ipv6.confファイルを作成して以下を書く。
options ipv6 disable=1

3. 自動起動無効化。
chkconfig ip6tables off

4. 再起動。

ファイアウォール

iptablesコマンド


iptablesサービスの開始。
# /etc/init.d/iptables start

iptablesサービスの停止。
# /etc/init.d/iptables stop

iptablesサービスの再起動。 ルールセットファイルを修正したとき、再起動が必要。
# /etc/init.d/iptables restart

設定の確認。
# iptables -L

ルールセットファイルと同じ形式で設定を確認。
# iptables-save

iptablesを初期化
# iptables --flush

編集したiptablesを保存
# service iptables save

iptablesの各チェイン


3つのテーブルがある。
各テーブルはチェインの集合を持つ。

●テーブル
テーブル名機能
filterパケットフィルタリング
natIPアドレスの変換
mangleIPヘッダの書き換え

●チェイン
チェイン実行条件
PREROUTINGパケットがNICに取り込まれたとき(ルーティング前)
INPUTパケットがNICに取り込まれたとき(送信先が自身である)
OUTPUTパケットがNICから出ていくとき(送信元が自身である)
FORWARDパケットがNICから出ていくとき(ルーティング後)
POSTROUTINGパケットがNICから出ていくとき(ルーティング後、FORWARDの後)

●ルール
ターゲット処理
ACCEPTパケットを受け取る
DROPパケットを破棄する
REJECTパケットを破棄し、エラーパケットを返す
DNAT送信先IPアドレスを変更する
MASQUERADE複数の送信元IPアドレスを変更(マスカレード)する
SNAT送信元IPアドレスを変更する
LOGログを出力する

設定例

  • INPUT, FORWARD は全て禁止して、必要な物だけ通す。
  • OUTPUTは許可。
  • ループバック(自分自身のIP)からの送受信は全て許可。(OUTPUT要らないかも)
  • SSH, HTTP, HTTPS のINPUTを許可。
  • PINGの制限 (要調査)
  • その他不明点があるので、要調査。

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

#ループバック(自分自身のIP)からの送受信はすべて許可 
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

# SSH
-A INPUT -p tcp --dport 22 -j ACCEPT

# HTTP
-A INPUT -p tcp --dport 80 -j ACCEPT

# HTTPS
-A INPUT -p tcp -m tcp --dport 443 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT			# 要調査

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT						# 要調査
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT		# 要調査
COMMIT

Menu

メインコンテンツ

プログラミング

機器

Macツール

各種情報

Wiki内検索

おまかせリンク

Androidアプリ

AdSense

技術書


管理人/副管理人のみ編集できます