だから私は私のMAC本で 'hashicorp/precise64'の自慢の設定で問題を抱えている。
まず、私の設定:
VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION)do | config | config.vm.box = "hashicorp/precise64" config.vm。ネットワーク "public_network"、タイプ: "dhcp"、:bridge => 'en4:Thunderbolt Ethernet' config.vm.hostname = "mddirector" end
これは 'vagrant up'のアウトプットです
==>デフォルト:VMを正常にシャットダウンしようとしています... ==>デフォルト:ボックス 'hashicorp/precise64'が最新であるかどうかをチェックしています... == > default:以前に設定した転送ポートをクリアしています... ==> default:以前に設定したネットワークインターフェイスをクリアしています... ==> default:設定に基づいてネットワークインターフェイスを作成 デフォルト:Adapter 1:nat デフォルト:Adapter 2:ブリッジされた ==>デフォルト:転送ポート... デフォルト:22 => 2222(アダプタ1) ==>デフォルト:VMの起動中... ==>デフォルト:マシンの起動を待っています。数分かかることがあります... デフォルト:SSHアドレス:127.0.0.1:2222 デフォルト:SSHユーザー名:vagrant デフォルト:SSH認証方法:秘密鍵 デフォルト:警告:接続タイムアウト。再試行しています... ==>デフォルト:マシンが起動して準備完了! GuestAdditions 4.3.10実行中--- OK。 ==>デフォルト:VMでのゲスト追加の確認... ==>デフォルト:ホスト名の設定... ==>デフォルト:ネットワークインターフェースの設定と有効化... ==>デフォルト:共有フォルダのマウント.. デフォルト:/ vagrant =>/Users/garthm/Projects/vagrant ==>デフォルト:マシンはすでにプロビジョニングされています。強制的にプロビジョニングするには、 `vagrant provision`を実行するか` --provision` ==> default:を使用してください。常に実行するようにマークされているプロビジョニング担当者は、引き続き実行されます。
'ifconfig'は以下を表示します。
vagrant @ mddirector:〜$ ifconfig eth0リンクのカプセル化:イーサネットHWaddr 08:00:27:88:0c:a6 inet addr:10.0.2.15 Bcast:10.0.2.255マスク:255.255.255.0 inet6 addr:fe80 :: a00:27ff:fe88:ca6/64スコープ:リンク 上りマルチキャストMTU:1500メトリック:1 RXパケット:725エラー:0ドロップ:0オーバーラン:0フレーム:0 TXパケット:544エラー:0ドロップ:0オーバーラン:0キャリア:0 コリジョン:0 txqueuelen:1000 ] RXバイト:90824(90.8 KB)TXバイト:63375(63.3 KB) eth1リンクエンキャップ:イーサネットHWaddr 08:00:27:2f:bb:6a inet addr:10.0.24.118 Bcast:10.0.31.255 Mask:255.255.248.0 上りブロードキャストマルチキャストMTU:1500メトリック:1 RXパケット:3490エラー:0ドロップ:0オーバーラン:0フレーム: 0 TXパケット:7エラー:0ドロップ:0オーバーラン:0キャリア:0 コリジョン:0 txqueuelen:1000 RXバイト:34 5981(345.9 KB)TXバイト:1102(1.1 KB) lo encap:ローカルループバック inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr::: 1/128範囲:ホスト アップループバックMTU:16436メトリック:1 RXパケット:0エラー:0ドロップ:0オーバーラン:0フレーム:0 TXパケット:0エラー:0ドロップ:0オーバーラン:0キャリア:0 コリジョン:0 txqueuelen:0 RXバイト:0(0.0 B)TXバイト:0(0.0 B)[ ]
私の問題は、私が自分のホストマシン(IP:10.0.24.112)からVMにpingを実行できること、他の人が私の自分のVMにもpingを実行できることです(10.0.24.XXX) 、私のVMは私のdevbox(IP:10.10.116.254)にpingを実行できます、私は私のdevboxから他の開発者仮想マシン設定にpingを実行できます(Vagrant、IP:10.10.116.254ではありません)私のdevboxや他の開発者からのVMは自分のdevboxから私のVMにpingを実行できません。
彼らが持っている仮想マシンの設定はBridged NICだけですが、どういうわけかvagrantにはNATとBridgedがあります。ご覧のとおり、Vagrant VMには2つのIPアドレスがありますが、これは正しくないようです。また、起動時に、アダプタ1のポート転送を行うこともできます。これは、NATアダプタです。つまり、デフォルトでNATアダプタを使用しているように見えます。 。
NATアダプタを取り除き、ブリッジのみを使用するにはどうすればよいですか?
VirtualBoxの設定を編集してNATアダプタを無効にすると、ブリッジされたアダプタしかなくVirtualBoxでボックスを起動すると(つまりvagrant upを使用しないで)、IPアドレスのあるeth0だけが使用されます。それは私のdevboxからping可能で、それが私が探しているものです。 VirtualBoxの設定を編集してNATアダプタを無効にした後でボックスを表示しようとすると、次のエラーが表示されます。
VirtualBoxを制御するためにVagrant によって使用されているCLIである `VBoxManage`の実行中にエラーが発生しました。 コマンド:["modifyvm"、 "7f1c12f7-74cd-4c6b-aa5a-16d6209cf2b3"、 "--natpf1"、 "ssh、tcp、127.0。" 0.1、2222、、22 "] Stderr:VBoxManage:エラー:この名前のNATルールは既に存在します VBoxManage:エラー:詳細:コードNS_ERROR_INVALID_ARG(0x80070057)、コンポーネントNATEngine、インターフェイスINATEngine、呼び出し先nsISupports )、Bstr(strGuestIp).raw()、RTStrToUInt16(strGuestPort)) "ファイルVBoxManageModifyVM.cppの1655行目
すぐにもう一度vagrantを実行すると、NATアダプタが再び有効になり、再び同じ問題が発生します。
NATとしてのeth0
は、現在の状態におけるVagrantの 基本的な要件です 。しかし、eth1
のデフォルトのルーター設定を上書きすることができます。
Vagrantドキュメント から:
デフォルトルーター
設定によっては、デフォルトのルータ設定を手動で上書きしたい場合があります。あなたにはこれが必要です パブリックネットワークを介して他のネットワークからVagrantボックスにアクセスする必要がある。そのためには、シェルプロビジョニングスクリプトを使用できます。
config.vm.network "public_network"、ip: "192.168.0.17" #default router config.vm.provision "Shell"、[。 [run]: "always"、 inline: "route add default gw 192.168.0.1" #default router ipv6 config.vm.provision "シェル "、 run:" always "、 インライン:" route -A inet6 add default gw fc00 :: 1 eth1 " #.default default gw on eth0 config.vm.provision "シェル"、 run: "always"、 インライン: "eval` route -n | awk '{if($ 8 ==\" eth0\"&& $ 2!= \" 0.0.0.0\")デフォルトのルートを印刷しますgw \" $ 2;} '`"上記はかなり複雑でゲストOS固有のものかもしれませんが、一般的な質問であるため、その方法の大まかなアイデアを文書化しています。
(すみません、vagrant/virtualboxについてはかなり素朴なので、適切なネットワーキング用語の欠如を許してください)
bridge:en4)Thunderboltの選択が問題である可能性が最も高いです。
これが私があなたが求めたものではなく、欲しい/必要としているものです:
あなたの開発者ボックス(ホスト)からあなたのvmを制御するためのvagrantのためのSSHログイン機能。それが、ポート転送を伴うNATの動作です。それは他に何かを台無しにしないので、それがなくなっていることを要求することはそれほど役に立ちません。そしてそれはVirtualBoxのアダプタ1に現れます。
あなたのホストだけでなくあなたのLANからの接続性。 192.168.1.xxxの範囲の何かを言ってみましょう。アダプタ2では、これが重要です。
あなたはただあなたの通常のネットワークカード/ NICを気にしていてThunderboltポート上でイーサネットを動かす特別な理由はありません。
すなわち、あなたがVirtualBox vmからBridgedを持っていてVagrantを見ないようにすることで得られるもののほとんど。
これは私のLAN上にあるVirtualBox専用のマシンのうちの1つからのSSH ifconfigです。それは私が接続できるウェブサーバーを走らせます、そして私のMacはそれにSSH接続しそしてその上のデータベースに接続することができます。これを参照と呼びます。
[root@fdm ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:9A:85:1A
inet addr:192.168.1.143 Bcast:192.168.1.255 Mask:255.255.255.0
VirtualBoxでは、その参照vmのNetworkパネルに、Adapter1がBridgedと表示されます。他のすべてのアダプタは無効になっています。
それで、私はVagrantと同じLAN接続の結果を試してみるつもりですが、アダプター1にNATがあることに同意します。それがvagrant-VB ssh通信メカニズムです。
出発点はvagrant initです。
それからVagrantfileで、私は2つのことだけを変えました:
config.vm.box = "opscode-ubuntu-14.04"
config.vm.network "public_network"
私がこれを気にするならば、どのインタフェースを使うべきかを尋ねるダイアログが表示されます。
==> default: Available bridged network interfaces:
1) en1: Wi-Fi (AirPort)
2) en0: Ethernet
3) en3: Thunderbolt 1
4) p2p0
5) bbptp0
6) bridge0
さて、それを見て、私は最初に2)を選びました2)私は私がイーサネットとよくしたいと思ったので1)は「リンゴが多すぎる」ようでした。
これはうまくいきますが、私のISPがpingをブロックしている不適切なIP 10.0.xx.xxエントリで、以下を見てください。それが公共のネットワークを言うとき、私は彼らが本当に公共を意味すると思います。
vagrant ssh
vagrant@vagrant:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:0c:41:3e
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe0c:413e/64 Scope:Link
eth1 Link encap:Ethernet HWaddr 08:00:27:ca:f4:64
inet6 addr: fe80::a00:27ff:feca:f464/64 Scope:Link
vagrantを停止してからディレクトリを削除し、再度作成してvagrant init 。 (ネットワークを使いすぎると、vagrantやvirtualboxを混乱させ、完全に削除して再起動すると解決できることがわかりました)
config.vm.box = "opscode-ubuntu-14.04"
config.vm.network "public_network"
しかし、今回は1)en1:Wi-Fi(AirMac)を選びます。
vagrant ssh
192.168.1.123のeth1は、もっときれいに見えますね。
vagrant@vagrant:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:0c:41:3e
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
eth1 Link encap:Ethernet HWaddr 08:00:27:53:6e:1d
inet addr:192.168.1.123 Bcast:192.168.1.255 Mask:255.255.255.0
そして、確かに、私は自分のリファレンスVMから、または私のLAN上の別の物理マシンから192.168.1.123をpingすることができます。
[root@fdm ~]# ping 192.168.1.123
PING 192.168.1.123 (192.168.1.123) 56(84) bytes of data.
64 bytes from 192.168.1.123: icmp_seq=1 ttl=64 time=1039 ms
64 bytes from 192.168.1.123: icmp_seq=2 ttl=64 time=40.4 ms
FWIW、VirtualBoxはアダプタ1にNAT、アダプタ2にブリッジを表示します。
インターフェースの自動選択と静的IPを追加しました(これは必要ありません)。少なくとも私にとっては、問題は解決しました。
config.vm.network "public_network", bridge: 'en1: Wi-Fi (AirPort)', ip: "192.168.1.201"
==> default: Specific bridge 'en1: Wi-Fi (AirPort)' not found. You may be asked to specify
==> default: which network to bridge to.
==> default: Available bridged network interfaces:
1) en0: Ethernet
2) en2: Thunderbolt 1
3) bridge0
に変更しました
config.vm.network "public_network", bridge: "bridge0"
何か問題が発生した場合は後で更新しますが、アダプタ名について少し更新したいと思いました。
簡単な答えはしないようです。
アダプター1をオーバーライドすることはできますが、少なくともvagrant ssh
で問題が生じることが予想されます。
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "hashicorp/precise64"
config.vm.network "public_network", :adapter=>1 , type: "dhcp", :bridge => 'en4: Thunderbolt Ethernet'
config.vm.hostname = "mddirector"
# In case you get the Host wrong...
config.vm.boot_timeout = 30
config.vm.provider "virtualbox" do |vb, override|
vb.gui = true
end
config.ssh.Host = '192.168.148.24'
end
を生成します。
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: bridged
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
default: VirtualBox adapter #1 not configured as "NAT". Skipping port
default: forwards on this adapter.
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
残念ながら、ネットワークアダプタの設定はロックされているように見えますが、多分あなたは私より運が良いでしょう。
そうした場合、あなたはいつでも強制的に停止し、修正されたssh.Host
でリロードすることができます。あるいは私はvagrant dns
のことを聞いたことがありますが、それを試したことはありません。
私はStackOverflowで このディスカッション を見つけました。
私にとっては、関連するVagrantfile
を開いて次の行をコメント解除するだけで十分です。
config.vm.network "public_network"
そしてvagrant reload
を実行します