ポートフォワードが増えてきた 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 $ vagrant reload ==> plasma: Attempting graceful shutdown of VM... ==> plasma: Clearing any previously set forwarded ports... ==> plasma: Clearing any previously set network interfaces... ==> plasma: Preparing network interfaces based on configuration... plasma: Adapter 1: nat plasma: Adapter 2: hostonly ==> plasma: You are trying to forward to privileged ports (ports <= 1024). Most ==> plasma: operating systems restrict this to only privileged process (typically ==> plasma: processes running as an administrative user). This is a warning in case ==> plasma: the port forwarding doesn't work. If any problems occur, please try a ==> plasma: port higher than 1024. ==> plasma: Forwarding ports... plasma: 80 (guest) => 80 (host) (adapter 1) plasma: 3000 (guest) => 3000 (host) (adapter 1) plasma: 3306 (guest) => 3306 (host) (adapter 1) plasma: 4444 (guest) => 4444 (host) (adapter 1) plasma: 5000 (guest) => 5000 (host) (adapter 1) plasma: 13000 (guest) => 13000 (host) (adapter 1) plasma: 15900 (guest) => 15900 (host) (adapter 1) plasma: 15901 (guest) => 15901 (host) (adapter 1) plasma: 19030 (guest) => 19030 (host) (adapter 1) plasma: 17030 (guest) => 17030 (host) (adapter 1) plasma: 16080 (guest) => 16080 (host) (adapter 1) plasma: 16881 (guest) => 16881 (host) (adapter 1) plasma: 16882 (guest) => 16882 (host) (adapter 1) plasma: 16883 (guest) => 16883 (host) (adapter 1) plasma: 16443 (guest) => 16443 (host) (adapter 1) plasma: 15053 (guest) => 15053 (host) (adapter 1) plasma: 15052 (guest) => 15052 (host) (adapter 1) plasma: 14043 (guest) => 14043 (host) (adapter 1) plasma: 13033 (guest) => 13033 (host) (adapter 1) plasma: 11012 (guest) => 11012 (host) (adapter 1) plasma: 11013 (guest) => 11013 (host) (adapter 1) plasma: 22 (guest) => 2222 (host) (adapter 1)
そろそろポートフォワード設定が増えすぎてきて、nginxの設定もごちゃごちゃになってきているのと、スマホと同じネットワークに入れたかったので、ホストオンリーアダプタの設定をしました
ホストオンリーアダプタを使うと、ホスト上に、ホストとゲストの間だけから見えるプライベートなネットワークを構築する事が出来ます
ホスト:Vagrantfile 最初、「ホストオンリーアダプタがあればNATいらなくね?」って思ったんですが、Vagrantを使用する場合は、デフォルトで使用されるNATのアダプタを持っておく必要があります
(参考) How can I define network settings with vagrant - Stack Overflow )
よってここでは、Vagrantがデフォルトで使用するNAT(アダプタ1)に加え、ホストオンリーアダプタ(アダプタ2)を追加し、NAT+ホストオンリーアダプタ という構成にします。
Vagrantfile
に、ホストオンリーアダプタの設定を追加します
1 2 3 Vagrant.configure(2) do |config| config.vm.network "private_network", ip: "192.168.56.100" # ホストオンリーアダプタの設定 end
(参考) よく使うVagrantfileの設定のまとめ
ホスト:vagrant up vagrant up
すると、Adapter 2: hostonly という表示が出ます
1 2 3 4 5 6 7 8 $ vagrant up ==> plasma: Attempting graceful shutdown of VM... ==> plasma: Clearing any previously set forwarded ports... ==> plasma: Clearing any previously set network interfaces... ==> plasma: Preparing network interfaces based on configuration... plasma: Adapter 1: nat plasma: Adapter 2: hostonly ←これ
ゲスト:ネットワーク設定 ここでゲスト側で、ip addr
すると、新しいインターフェイスが追加されてるのが確認出来ると思います
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 $ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:64:3d:2e brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global enp0s3 valid_lft forever preferred_lft forever inet 192.168.56.100/24 brd 192.168.56.255 scope global enp0s3 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe64:3d2e/64 scope link valid_lft forever preferred_lft forever 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:d9:d8:b7 brd ff:ff:ff:ff:ff:ff
ここでは、enp0s8 というのが追加されています。これがホストオンリーアダプタのインターフェイスになります。このインターフェイスに対して、静的IPアドレスを割り当てます
最近のDebianでは、interfaces.dディレクトリがあれば、その中に設定ファイルを作成すると勝手に読み込んでくれるようになっていました。(interfaces.dが無い場合は「hostonly」ファイルの内容をそのままinterfacesに記述)
1 2 3 4 5 6 7 8 9 10 11 12 13 // interfaces.dを読み込んでくれる記述がされているので $ cat /etc/network/interfaces | grep "interfaces.d" source /etc/network/interfaces.d/* // その中に「hostonly」というファイルを作成 $ sudo vim /etc/network/interfaces.d/hostonly allow-hotplug enp0s8 auto enp0s8 iface enp0s8 inet static address 192.168.56.100 network 192.168.56.0 netmask 255.255.255.0 broadcast 192.168.56.255
なお、ここでgateway
を設定すると、デフォルトゲートウェイが2つある状態になってしまい、WAN側に接続する際に名前解決が出来なくなってしまうため、gatewayは設定しない ようにします
(参考) VirtualBox を利用する際のネットワーク設定の話 - 絶品ゆどうふのタレ (参考) 複数NICでのデフォルトゲートウェイ設定方法 - maruko2 Note.
ホスト:vagrant reload systemctl restart networking
とかでも同じですが、いったんvagrantごとreloadしてみます
ホスト&ゲスト:通信出来るか角煮n 1 2 3 4 5 6 7 8 9 10 11 12 13 // ホスト(設定したIPに対してping) $ ping 192.168.56.100 PING 192.168.56.100 (192.168.56.100): 56 data bytes 64 bytes from 192.168.56.100: icmp_seq=0 ttl=64 time=576.450 ms 64 bytes from 192.168.56.100: icmp_seq=1 ttl=64 time=0.331 ms 64 bytes from 192.168.56.100: icmp_seq=2 ttl=64 time=0.653 ms // ゲスト $ ping example.com PING example.com (xx.xx.xx.xx) 56(84) bytes of data. 64 bytes from xx.xx.xx.xx (xx.xx.xx.xx): icmp_seq=1 ttl=63 time=112 ms 64 bytes from xx.xx.xx.xx (xx.xx.xx.xx): icmp_seq=2 ttl=63 time=113 ms 64 bytes from xx.xx.xx.xx (xx.xx.xx.xx): icmp_seq=3 ttl=63 time=113 ms