前回からの続きです。
Vagrantfile で設定できるネットーワークは、大まかに 5 種類あります。
- NAT
- ホストオンリーアダプター
- 内部ネットワーク
- ブリッジアダプター
- ポートフォワーディング
1. NAT
Vagrantfile の初期設定です。同ファイルにネットワークの設定を記述しない場合は、NAT が設定されます。NAT の設定がされた場合、SSH の接続はできず、Virtualbox のターミナルで仮想マシンを操作することになります。
2. ホストオンリーアダプター
ホスト (ローカルマシン) から仮想マシンへ接続ができるようになります。この設定で、仮想マシンの IP を固定 IP にするか、動的 (DHCP) に指定するか選択できます。
Vagrantfile
# 固定 IP を指定するときは、下記の行を記述する
config.vm.network "private_network", ip: "192.168.33.10"
Vagrantfile
# 動的に IP を指定するときは、下記の行を記述する
config.vm.network "private_network", type: "dhcp"
3. 内部ネットワーク
- NAT 接続と同じですが、Vagrantfile に同じネットワーク名が指定されている場合、仮想マシン同士で通信ができるようになります。
Vagrantfile
# ネットワーク名を virtualbox__intnet で指定する
config.vm.network "private_network", ip: "192.168.33.10", virtualbox__intnet: "mynetwork"
内部ネットワークの使用を設定するが、名称を指定しない場合は初期設定で「intnet」名が割り当てられます。
Vagrantfile
# virtualbox__intnet: true だと、ネットワーク名に intnet が割り当てられる
config.vm.network "private_network", ip: "192.168.33.10", virtualbox__intnet: true
4. ブリッジアダプター
ローカルマシンが所属するネットワーク内の IP を仮想マシンに割り当てます。同一のネットワーク内の IP を割り当てることで、ローカル・仮想マシン以外のクライアントが接続できるようになります。
Vagrantfile
# 固定 IP を割り当てる場合
config.vm.network "public_network", ip: "192.168.0.10"
Vagrantfile
# DHCP で動的に IP を割り当てる場合
config.vm.network "public_network"
Vagrantfile
# 複数のネットワークインターフェースがある場合、vagrant up 時に使用するネットワークインターフェースを尋ねられるので、
# その場合は Vagrantfile に使用するネットワークインターフェースを記述してしまう
# 例えば、有線LAN と無線 LAN 接続ができるノート PC など
config.vm.network "public_network", bridge: "en0: Ethernet"
5. ポートフォワード
ローカルマシンの特定のポートに届く接続を、仮想マシンに指定したポートへ転送します。
Vagrantfile
# ローカルマシン 80 番ポートへの接続を仮想マシンの 8080 番ポートへ転送する
config.vm.network "forwarded_port", guest: 80, host: 8080
ネットワーク設定の一覧表
種類 | VM -> ローカル |
ローカル -> VM |
VM -> 外部 |
外部 -> VM |
VM <-> VM |
---|---|---|---|---|---|
NAT | 〇 | × | 〇 | × | × |
ホストオンリーアダプター | 〇 | 〇 | 〇 | × | × |
内部ネットワーク | 〇 | × | 〇 | × | 〇 |
ブリッジアダプター | 〇 | 〇 | 〇 | 〇 | 〇 |
ポートフォワーディング | 〇 | △ | 〇 | × | × |
- 外部とはローカルマシン以外を指します
(ローカルネットワークのPCや仮想マシンの他インターネット等) - 「VM <-> VM」は同じネットワーク内に存在する仮想マシン同士の通信を指します