VirtualBox 4.2でVM環境構築する際にハマったのでメモ。
要件
- ゲストからインターネットに接続できること
- ホストからゲストへ接続できること
ということで、ネットワークアダプタは、NATが適切であると思われる。
インストール
適当なOS(私はCentOSを使用しました)をインストールする。
必要に合わせ以下を行う。
SELinux の無効化
# /usr/sbin/setenforce 0
# vi /etc/sysconfig/selinux
SELINUX=disabled
Firewall の無効化
# /sbin/service iptables stop
# /sbin/chkconfig iptables off
Sendmail の無効化
# /sbin/service sendmail stop
# /sbin/chkconfig sendmail off
yum のproxy設定
# vi /etc/yum.conf
proxy=http://proxy.example.com:8080
固定IP化
現在割り振られているIPアドレスの確認
# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:08:F5:6B
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe08:f56b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:53 errors:0 dropped:0 overruns:0 frame:0
TX packets:73 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6539 (6.3 KiB) TX bytes:13857 (13.5 KiB)
Base address:0xd010 Memory:f0000000-f0020000
ルーティング(デフォルトゲートウェイ)の確認
# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.0.2.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
確認内容をもとに設定
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
HWADDR=**:**:**:**:**:**
ONBOOT=yes
IPADDR=10.0.2.15
NETMASK=255.255.255.0
GATEWAY=10.0.2.2
ネットワークサービスの再起動
# /sbin/service network restart
インターフェース eth0 を終了中: [ OK ]
ループバックインターフェースを終了中 [ OK ]
ループバックインターフェイスを呼び込み中 [ OK ]
インターフェース eth0 を活性化中:
eth0 のIP情報を検出中... 完了。
[ OK ]
一応確認
# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:08:F5:6B
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe08:f56b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:310 errors:0 dropped:0 overruns:0 frame:0
TX packets:282 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:26939 (26.3 KiB) TX bytes:45933 (44.8 KiB)
Base address:0xd010 Memory:f0000000-f0020000
ホスト→ゲスト間ssh接続
さて問題はここから。
ゲストOSのIPは固定できたので、固定したIPにホストのターミナルから接続を行う。
Connection refused
ありゃ・・・
サーバまでパケット届いてるのかなぁと思い、tcpdumpでパケットをキャプチャしてみても、1パケットも飛んできていない。
# tcpdump port 22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
0 packets captured
0 packets received by filter
0 packets dropped by kernel
どうしたものか。
ポートフォワーディング
仮想マシン側のネットワークの設定に、ポートフォワーディングというのがある。
ホストのポートを、ゲストのポートにマッピングできる。
以下のように設定。
(smtp、httpは必要に応じて設定)
名前 |
ホスト ポート |
ゲスト ポート |
ssh |
10022 |
22 |
smtp |
10025 |
25 |
http |
10080 |
80 |
設定後、localhost の 10022 に対してターミナルで接続するとうまくいった。