ããã¯ããªã«ãããããŠæžãããã®ïŒ
Vagrantã§æã ãã©ã€ããŒãIPã¢ãã¬ã¹ãåºå®ããŠããã®ã§ãããè€æ°èšå®ããæã®æåãèŠãŠã¿ããããªãšæããŸããŠã
Vagrantã®ãããã¯ãŒã¯èšå®
Vagrantã®ãããã¯ãŒã¯èšå®ã«ã¯ãPrivate NetworkãšPublic NetworkããããŸãã
Private Networks - Networking | Vagrant by HashiCorp
Public Networks - Networking | Vagrant by HashiCorp
Public Networkã®æ¹ã¯ãããããããªããžã§ãããèªåã¯ãä»ã®ãšãã䜿ãäºå®ããªãã®ã§ãä»åã¯Private Networkã®ã¿ãèŠãŠãããŸãã
Private Networkã¯ããã¹ãåŽãšéä¿¡ã§ãããããã¯ãŒã¯ãæ§æãããã®ã§ããããããNATã§ã®æ§æã§ããã
ç°å¢
ä»åã®ç°å¢ã¯ããã¡ãã§ããUbuntu Linux 18.04 LTSã§ãVagrantã¯2.2.7ã§ãã
$ uname -srvmpio Linux 4.18.0-25-generic #26~18.04.1-Ubuntu SMP Thu Jun 27 07:28:31 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.4 LTS Release: 18.04 Codename: bionic $ vagrant -v Vagrant 2.2.7
Vagrantã®ProviderãšããŠã¯ãlibvirtã䜿çšããŸãã
$ vagrant plugin list vagrant-libvirt (0.0.45, global) - Version Constraint: > 0
䜿çšããBoxãšããŠã¯ããã¹ãåŽãšåããUbuntu Linux 18.04 LTSã䜿çšããŸãã
https://app.vagrantup.com/generic/boxes/ubuntu1804
ãã¡ãã®ç°å¢ã§ããã©ã€ããŒãIPã¢ãã¬ã¹ãèšå®ããªããšããããå§ããŠãå°ããã€èšå®ãå€ããªããæåãèŠãŠã¿ãŸãããã
ãã©ã€ããŒãIPã¢ãã¬ã¹æªèšå®ã®å Žå
ãŸãã¯ããªã«ãèšå®ãå€ããããã©ã«ãã®ãŸãŸã§èµ·åããŠã¿ãŸãããã
ãvagrant initãã
$ vagrant init generic/ubuntu1804
ä»®æ³ãã·ã³ãèµ·åããŠãSSHæ¥ç¶ããŸãã
$ vagrant up $ vagrant ssh
èµ·åããä»®æ³ãã·ã³ã®ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ãŒã¹ããã³ãIPã¢ãã¬ã¹ã確èªããŠã¿ãŸãããã
$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:31:1c:53 brd ff:ff:ff:ff:ff:ff inet 192.168.121.3/24 brd 192.168.121.255 scope global dynamic eth0 valid_lft 3579sec preferred_lft 3579sec inet6 fe80::5054:ff:fe31:1c53/64 scope link valid_lft forever preferred_lft forever
ã«ãŒãããã¯ä»¥å€ã«ãeth0ããããŸããããã¯ããã¹ãåŽãããã¢ã¯ã»ã¹å¯èœãªIPã¢ãã¬ã¹ã§ãã
ã«ãŒãã£ã³ã°ã確èªã
$ ip route default via 192.168.121.1 dev eth0 proto dhcp src 192.168.121.3 metric 100 192.168.121.0/24 dev eth0 proto kernel scope link src 192.168.121.3 192.168.121.1 dev eth0 proto dhcp scope link src 192.168.121.3 metric 100
ãšãããããæ å ±ãèŠãŠã¿ãã®ã§ãä»®æ³ãã·ã³ãç Žæ£ããŸãã
$ vagrant destroy -f
åºå®ã®ãã©ã€ããŒãIPã¢ãã¬ã¹ãèšå®ãã
次ã¯ãä»®æ³ãã·ã³ã«ãã©ã€ããŒãIP
Vagrantãã¡ã€ã«ã®ä»¥äžã®ããã«ã³ã¡ã³ãã¢ãŠããããŠããéšåã解é€ããŠã
# Create a private network, which allows host-only access to the machine # using a specific IP. # config.vm.network "private_network", ip: "192.168.33.10"
åºå®ã®ãã©ã€ããŒãIPã¢ãã¬ã¹ãèšå®ããŸãã
config.vm.network "private_network", ip: "192.168.33.10"
Vagrantã®ããã¥ã¡ã³ããšããŠã¯ããã¡ãã§ããã
ä»®æ³ãã·ã³ãèµ·åããŠãSSHæ¥ç¶ã
$ vagrant up $ vagrant ssh
ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ãŒã¹ã確èªããŠã¿ãŸãã
$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:10:b8:0f brd ff:ff:ff:ff:ff:ff inet 192.168.121.192/24 brd 192.168.121.255 scope global dynamic eth0 valid_lft 3595sec preferred_lft 3595sec inet6 fe80::5054:ff:fe10:b80f/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:cd:58:c5 brd ff:ff:ff:ff:ff:ff inet 192.168.33.10/24 brd 192.168.33.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fecd:58c5/64 scope link valid_lft forever preferred_lft forever
eth1ãå¢ããŸãããããã¡ãã«ãæå®ãããã©ã€ããŒãIPã¢ãã¬ã¹ãåæ ãããŠããŸããeth0ãååšããŠããŸããããã¡ãã¯DHCPã§ããã
ã«ãŒãã£ã³ã°ã確èªã
$ ip route default via 192.168.121.1 dev eth0 proto dhcp src 192.168.121.192 metric 100 192.168.33.0/24 dev eth1 proto kernel scope link src 192.168.33.10 192.168.121.0/24 dev eth0 proto kernel scope link src 192.168.121.192 192.168.121.1 dev eth0 proto dhcp scope link src 192.168.121.192 metric 100
確èªããã®ã§ãä»®æ³ãã·ã³ãç Žæ£ã
$ vagrant destroy -f
ä»åã¯IPã¢ãã¬ã¹ã®ã¿æå®ããŸããããããããã¹ã¯ãæå®ããããšãã§ããŸãã
ããšãã°ããããªæãã§ã
config.vm.network "private_network", ip: "10.0.0.10", netmask: "16"
ä»®æ³ãã·ã³ãèµ·åããŠSSHæ¥ç¶ãããããã¯ãŒã¯ã€ã³ã¿ãŒãã§ãŒã¹ã®ç¢ºèªãããŠã¿ãŸãã
$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:cc:f4:c2 brd ff:ff:ff:ff:ff:ff inet 192.168.121.3/24 brd 192.168.121.255 scope global dynamic eth0 valid_lft 3578sec preferred_lft 3578sec inet6 fe80::5054:ff:fecc:f4c2/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:4e:5e:b3 brd ff:ff:ff:ff:ff:ff inet 10.0.0.10/16 brd 10.0.255.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fe4e:5eb3/64 scope link valid_lft forever preferred_lft forever
ããããã¹ã¯ããæå®ãã16ã«ãªã£ãŠããŸãããããã©ã«ãã®ããããã¹ã¯ã¯ã24ãšããããšã§ããã
â»IPv6ã¯ãŸãå¥ã
ã«ãŒãã£ã³ã°ã
$ ip route default via 192.168.121.1 dev eth0 proto dhcp src 192.168.121.3 metric 100 10.0.0.0/16 dev eth1 proto kernel scope link src 10.0.0.10 192.168.121.0/24 dev eth0 proto kernel scope link src 192.168.121.3 192.168.121.1 dev eth0 proto dhcp scope link src 192.168.121.3 metric 100
ã¡ãªã¿ã«ãDHCPã§ãå²ãåœãŠãããšãã§ããŸãããã¡ãã§å²ãåœãŠãããŠããIPã¢ãã¬ã¹ã«ããvagrant sshãã§æ¥ç¶ããŠããããšã«
ãªã£ãŠããããã§ããã
eth0ã«æ®ã£ãŠããã®ã¯ãããã©ã«ãã§äœããããããã¯ãŒã¯ã€ã³ã¿ãŒãã§ãŒã¹ã ãšæãã®ã§ãPrivate Networkã®èšå®ãè¡ããšã
å®è³ªããããã¯ãŒã¯ã€ã³ã¿ãŒãã§ãŒã¹ãè¿œå ããããšããããšã«ãªããããªæãã§ããã
ä»®æ³ãã·ã³éã®éä¿¡ãè¡ã
æåŸã«ãä»®æ³ãã·ã³ã2ã€çšæããŠã以äžã®ãããªéä¿¡ãè¡ã£ãŠã¿ãŸãããã
- ãã¹ãããcurl â Apache on ä»®æ³ãã·ã³1ïŒ192.168.33.10ã10.0.0.10ïŒ â Apache on ä»®æ³ãã·ã³2ïŒ10.0.0.11ïŒ
ä»®æ³ãã·ã³1ã§åäœããApacheã¯ãä»®æ³ãã·ã³2ã§åäœããApacheãžã®ãªããŒã¹ãããã·ãšããŠåäœãããŸãã
ä»®æ³ãã·ã³1ã«ã¯2ã€ã®ãã©ã€ããŒãIPã¢ãã¬ã¹ïŒ192.168.33.10ã10.0.0.10ïŒãäžãããã¹ãåŽããã¯ä»®æ³ãã·ã³1ã®192.168.33.10ã«
察ããŠHTTPãªã¯ãšã¹ããæããä»®æ³ãã·ã³2ãžã¯ãœãŒã¹IPã10.0.0.10ãšãªã£ãŠããããšã確èªã§ããã°OKã§ãã
åããµããããã®æ¹ã®IPã¢ãã¬ã¹ã䜿ã£ãŠãããŸãããããšã
ä»®æ³ãã·ã³1ã®äœæã
$ vagrant init generic/ubuntu1804
ãã©ã€ããŒãIPã¢ãã¬ã¹ã¯ã以äžã®ããã«èšå®ããŸãã
config.vm.network "private_network", ip: "192.168.33.10" config.vm.network "private_network", ip: "10.0.0.10"
ä»®æ³ãã·ã³1ãèµ·åããŠãSSHæ¥ç¶ã
$ vagrant up $ vagrant ssh
ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ãŒã¹ãèŠãŠã¿ãŸããeth1ãeth2ãè¿œå ãããŠããŸããã
$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:b4:15:04 brd ff:ff:ff:ff:ff:ff inet 192.168.121.202/24 brd 192.168.121.255 scope global dynamic eth0 valid_lft 3308sec preferred_lft 3308sec inet6 fe80::5054:ff:feb4:1504/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:64:ce:38 brd ff:ff:ff:ff:ff:ff inet 192.168.33.10/24 brd 192.168.33.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fe64:ce38/64 scope link valid_lft forever preferred_lft forever 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:e2:ba:6c brd ff:ff:ff:ff:ff:ff inet 10.0.0.10/24 brd 10.0.0.255 scope global eth2 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fee2:ba6c/64 scope link valid_lft forever preferred_lft forever
ã«ãŒãã£ã³ã°ãèŠãŠã¿ãŸããeth1ã®åãå¢ããŠããŸããã
$ ip route default via 192.168.121.1 dev eth0 proto dhcp src 192.168.121.202 metric 100 10.0.0.0/24 dev eth2 proto kernel scope link src 10.0.0.10 192.168.33.0/24 dev eth1 proto kernel scope link src 192.168.33.10 192.168.121.0/24 dev eth0 proto kernel scope link src 192.168.121.202 192.168.121.1 dev eth0 proto dhcp scope link src 192.168.121.202 metric 100
次ã«ãä»®æ³ãã·ã³2ã®äœæã
$ vagrant init generic/ubuntu1804
ä»®æ³ãã·ã³2ã«ã¯ããã©ã€ããŒãIPã¢ãã¬ã¹ãã²ãšã€èšå®ããŸãã
config.vm.network "private_network", ip: "10.0.0.11"
ä»®æ³ãã·ã³2ãèµ·åããŠãSSHæ¥ç¶ã
$ vagrant up $ vagrant ssh
ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ãŒã¹ã®ç¢ºèªã
$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:0a:0c:ac brd ff:ff:ff:ff:ff:ff inet 192.168.121.87/24 brd 192.168.121.255 scope global dynamic eth0 valid_lft 3349sec preferred_lft 3349sec inet6 fe80::5054:ff:fe0a:cac/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:3f:ad:e3 brd ff:ff:ff:ff:ff:ff inet 10.0.0.11/24 brd 10.0.0.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fe3f:ade3/64 scope link valid_lft forever preferred_lft forever
ã«ãŒãã£ã³ã°ã®ç¢ºèªã
$ ip route default via 192.168.121.1 dev eth0 proto dhcp src 192.168.121.87 metric 100 10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.11 192.168.121.0/24 dev eth0 proto kernel scope link src 192.168.121.87 192.168.121.1 dev eth0 proto dhcp scope link src 192.168.121.87 metric 100
ä»®æ³ãã·ã³ã®æºåãã§ããã®ã§ãApacheãã€ã³ã¹ããŒã«ããŸããããä»®æ³ãã·ã³1ãä»®æ³ãã·ã³2ã®ãããã«ããApacheãã€ã³ã¹ããŒã«ããŸãã
$ sudo apt install apache2
ä»®æ³ãã·ã³1åŽã®ã¿ããªããŒã¹ãããã·ãšããŠæ§ç¯ããã®ã§ãmod_proxyããã³mod_proxy_httpãæå¹ã«ããŸãã
$ sudo a2enmod proxy proxy_http
ä»®æ³ãã·ã³2ãžã®ãªããŒã¹ãããã·ãšããŠèšå®ã
/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ProxyPass / http://10.0.0.11 ProxyPassReverse / http://10.0.0.11 </VirtualHost>
Apacheãåèµ·åããŸãã
$ sudo systemctl restart apache2
ãŸããä»®æ³ãã·ã³2ã®æ¹ã¯ãã¢ã¯ã»ã¹ç¢ºèªã®ããã«index.htmlãå€æŽããŸãïŒHTMLã«ãªã£ãŠãªãã§ããã©ïŒã
/var/www/html/index.html
Hello Apache!!
ããã§ããã¹ãåŽããä»®æ³ãã·ã³1ã«å¯ŸããŠHTTPãªã¯ãšã¹ããæããŸãã
$ curl -i 192.168.33.10 HTTP/1.1 200 OK Date: Sat, 11 Apr 2020 13:14:34 GMT Server: Apache/2.4.29 (Ubuntu) Last-Modified: Sat, 11 Apr 2020 13:13:03 GMT ETag: "f-5a3039c1f6fed" Accept-Ranges: bytes Content-Length: 15 Content-Type: text/html Hello Apache!!
ãŸããä»®æ³ãã·ã³2ãŸã§å°éããŠããããšã確èªã§ããŸããã
ãã®æã®ãä»®æ³ãã·ã³1ã®Apacheã®ã¢ã¯ã»ã¹ãã°ã確èªã
192.168.33.1 - - [11/Apr/2020:13:14:34 +0000] "GET / HTTP/1.1" 200 241 "-" "curl/7.58.0"
次ã«ãä»®æ³ãã·ã³2ã®Apacheã®ã¢ã¯ã»ã¹ãã°ã確èªããŸãããœãŒã¹IPããä»®æ³ãã·ã³1ã®ã10.0.0.10ããšãªã£ãŠããŸãã
10.0.0.10 - - [11/Apr/2020:13:14:34 +0000] "GET / HTTP/1.1" 200 297 "-" "curl/7.58.0"
æ³å®éãã®æåã§ããã
tcpdumpã§ãããã±ãããèŠãŠãããŸããã
$ sudo tcpdump -i any tcp port 80 -n tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes 13:14:34.437266 IP 192.168.33.1.36380 > 192.168.33.10.80: Flags [S], seq 4126635863, win 29200, options [mss 1460,sackOK,TS val 1069883733 ecr 0,nop,wscale 7], length 0 13:14:34.437347 IP 192.168.33.10.80 > 192.168.33.1.36380: Flags [S.], seq 3231866269, ack 4126635864, win 65160, options [mss 1460,sackOK,TS val 3515437649 ecr 1069883733,nop,wscale 7], length 0 13:14:34.437425 IP 192.168.33.1.36380 > 192.168.33.10.80: Flags [.], ack 1, win 229, options [nop,nop,TS val 1069883733 ecr 3515437649], length 0 13:14:34.437448 IP 192.168.33.1.36380 > 192.168.33.10.80: Flags [P.], seq 1:78, ack 1, win 229, options [nop,nop,TS val 1069883733 ecr 3515437649], length 77: HTTP: GET / HTTP/1.1 13:14:34.437478 IP 192.168.33.10.80 > 192.168.33.1.36380: Flags [.], ack 78, win 509, options [nop,nop,TS val 3515437649 ecr 1069883733], length 0 13:14:34.437759 IP 10.0.0.10.39794 > 10.0.0.11.80: Flags [F.], seq 3809542179, ack 1644144670, win 501, options [nop,nop,TS val 3564697986 ecr 3477033970], length 0 13:14:34.437815 IP 10.0.0.10.39796 > 10.0.0.11.80: Flags [S], seq 1591844355, win 64240, options [mss 1460,sackOK,TS val 3564697986 ecr 0,nop,wscale 7], length 0 13:14:34.438097 IP 10.0.0.11.80 > 10.0.0.10.39794: Flags [.], ack 1, win 508, options [nop,nop,TS val 3477042455 ecr 3564697986], length 0 13:14:34.438117 IP 10.0.0.11.80 > 10.0.0.10.39796: Flags [S.], seq 3826655060, ack 1591844356, win 65160, options [mss 1460,sackOK,TS val 3477042456 ecr 3564697986,nop,wscale 7], length 0 13:14:34.438129 IP 10.0.0.10.39796 > 10.0.0.11.80: Flags [.], ack 1, win 502, options [nop,nop,TS val 3564697986 ecr 3477042456], length 0 13:14:34.438182 IP 10.0.0.10.39796 > 10.0.0.11.80: Flags [P.], seq 1:193, ack 1, win 502, options [nop,nop,TS val 3564697986 ecr 3477042456], length 192: HTTP: GET / HTTP/1.1 13:14:34.438291 IP 10.0.0.11.80 > 10.0.0.10.39796: Flags [.], ack 193, win 508, options [nop,nop,TS val 3477042456 ecr 3564697986], length 0 13:14:34.439187 IP 10.0.0.11.80 > 10.0.0.10.39796: Flags [P.], seq 1:298, ack 193, win 508, options [nop,nop,TS val 3477042457 ecr 3564697986], length 297: HTTP: HTTP/1.1 200 OK 13:14:34.439201 IP 10.0.0.10.39796 > 10.0.0.11.80: Flags [.], ack 298, win 501, options [nop,nop,TS val 3564697987 ecr 3477042457], length 0 13:14:34.439327 IP 192.168.33.10.80 > 192.168.33.1.36380: Flags [P.], seq 1:242, ack 78, win 509, options [nop,nop,TS val 3515437651 ecr 1069883733], length 241: HTTP: HTTP/1.1 200 OK 13:14:34.439381 IP 192.168.33.1.36380 > 192.168.33.10.80: Flags [.], ack 242, win 237, options [nop,nop,TS val 1069883735 ecr 3515437651], length 0 13:14:34.439469 IP 192.168.33.1.36380 > 192.168.33.10.80: Flags [F.], seq 78, ack 242, win 237, options [nop,nop,TS val 1069883735 ecr 3515437651], length 0 13:14:34.439543 IP 192.168.33.10.80 > 192.168.33.1.36380: Flags [F.], seq 242, ack 79, win 509, options [nop,nop,TS val 3515437652 ecr 1069883735], length 0 13:14:34.439650 IP 192.168.33.1.36380 > 192.168.33.10.80: Flags [.], ack 243, win 237, options [nop,nop,TS val 1069883736 ecr 3515437652], length 0
ãªããšãªãã確èªããŠãããšå®å¿ããªããšããPrivate Networkã®èšå®åãã§ããããšã