LDAP 구성을 위한 Virtualbox의 실제 IP 주소 얻기

LDAP 구성을 위한 Virtualbox의 실제 IP 주소 얻기

Windows 시스템의 두 우분투 가상 시스템 간에 LDAP 구성을 설정할 계획입니다.

그래서 VirtualBox를 사용하여 Windows 컴퓨터에 두 개의 우분투 16.04 가상 머신을 설치했습니다. 이제 어디에서나 VM에 연결할 수 있도록 실제 IP를 얻고 싶습니다.

사용할 때는 NATIP가 10.0.4.14로 설정되어 있고, 선택하거나 Bridged adapter인터넷 Host-only Adapter에 연결되어 있지 않습니다.

Ubuntu 16.04에서 Virtualbox를 사용할 때 LDAP에 이 IP를 사용할 수 있도록 "실제" IP를 얻는 방법을 알려줄 수 있는 사람이 있습니까?

답변1

도보 여행가

Vagrantfiles나는 Virtualbox를 통해서만 이 작업을 수행하는 Vagrant +를 사용하도록 전환했습니다 . 이 파일을 사용하여 랩탑에 2개의 가상 머신을 설정합니다.

이 작품의 특징 Vagrantfile:

  • VM은 Ubuntu 16.04(xenial64)입니다.
  • 가상 머신은 LAN의 DHCP 서버에서 공용 IP 주소를 요청합니다.
  • 가상 머신은 Virtualbox 호스트의 NIC 인터페이스를 활용합니다(문서 참조).
  • centos/7전환하고 싶으시다면 파일에 이미지 이름을 남겨두었어요

방랑자원

Vagrant 파일 예시

$ cat Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :


##############
### References
# - https://www.vagrantup.com/docs/vagrantfile/machine_settings.html
# - https://www.vagrantup.com/docs/vagrantfile/tips.html
# - https://www.vagrantup.com/docs/networking/forwarded_ports.html
##############

#unless Vagrant.has_plugin?("HostManager")
#  raise 'HostManager plugin not installed!'
#end

require 'digest/sha1'

uniqID = "_" + (Digest::SHA1.hexdigest Dir.pwd()).slice(0..8)
image  = "ubuntu/xenial64"
#image = "centos/7"

if Vagrant::Util::Platform.windows? then
  interfaces = [
    "Intel(R) 82583V Gigabit Network Connection",
    "Intel(R) 82579LM Gigabit Network Connection",
  ]
elsif Vagrant::Util::Platform.darwin? then
  interfaces = [
    "en0: Wi-Fi (AirPort)",
    "en1: Wi-Fi (AirPort)",
  ]
else
  interfaces = [
    "eth0",
    "eth1",
    "wlan0",
  ]
end


Vagrant.configure("2") do |config|
  vboxName1 = "box-101"
  hostname1 = "box101"
  config.vm.define "#{vboxName1}" do |front|
    front.vm.box = "#{image}"
    #front.vm.network :private_network, ip: "192.168.56.101"
    front.vm.network :public_network, use_dhcp_assigned_default_route: true, bridge: interfaces
    front.vm.provider :virtualbox do |v|
      v.customize ["modifyvm", :id, "--memory", 512]
      v.customize ["modifyvm", :id, "--name", "#{hostname1}#{uniqID}"]
    end
  end
  vboxName2 = "box-102"
  hostname2 = "box102"
  config.vm.define "#{vboxName2}" do |front|
    front.vm.box = "#{image}"
    #front.vm.network :private_network, ip: "192.168.56.102"
    front.vm.network :public_network, use_dhcp_assigned_default_route: true, bridge: interfaces
    front.vm.provider :virtualbox do |v|
      v.customize ["modifyvm", :id, "--memory", 512]
      v.customize ["modifyvm", :id, "--name", "#{hostname2}#{uniqID}"]
    end
  end
end

용법

두 개의 가상 머신 시작
 $ vagrant up
한 번에 하나의 가상 머신 시작
 $ vagrant up box-101
 $ vagrant up box-102
SSH에서 VM box-101로
$ vagrant ssh box-101
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-130-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.


/usr/bin/xauth:  file /home/vagrant/.Xauthority does not exist
vagrant@ubuntu-xenial:~$
IP 주소 확인
vagrant@ubuntu-xenial:~$ ip a l
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 02:97:71:8a:f0:d8 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
    inet6 fe80::97:71ff:fe8a:f0d8/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:e6:43:ac brd ff:ff:ff:ff:ff:ff
    inet 172.16.12.208/24 brd 172.16.12.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fee6:43ac/64 scope link
       valid_lft forever preferred_lft forever
vagrant@ubuntu-xenial:~$

노트:예상되는 동작인 2개의 인터페이스가 있습니다. Vagrant/Virtualbox는 항상 enp0s3이 인터페이스와 관련된 인터페이스와 유사한 인터페이스를 설정합니다 10.0.2.15/24. 이는 Vagrant가 SSH를 통해 가상 머신에 연결하는 등의 작업을 수행할 때 사용하는 NIC입니다.

네트워크 연결 테스트

위와 Vagrantfile같이 2개의 가상 머신(box-101 및 box-102)이 시작되면 3개의 네트워크 연결 시나리오를 확인할 수 있습니다.노트:시작하기 전에 가상 머신의 IP 주소를 기록해 두십시오.

배경

상자 101(172.16.12.208)의 경우:
$ ip a l enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:e6:43:ac brd ff:ff:ff:ff:ff:ff
    inet 172.16.12.208/24 brd 172.16.12.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fee6:43ac/64 scope link
       valid_lft forever preferred_lft forever
상자 102(172.16.12.116)의 경우:
$ ip a l enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:df:3b:06 brd ff:ff:ff:ff:ff:ff
    inet 172.16.12.116/24 brd 172.16.12.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fedf:3b06/64 scope link
       valid_lft forever preferred_lft forever

애플리케이션 시나리오

시나리오 #1: 상자-102 → 상자-101
## On box-101 run:
$ nc -l 12345

## On box-102 run:
$ curl -v telnet://172.16.12.208:12345
* Rebuilt URL to: telnet://172.16.12.208:12345/
*   Trying 172.16.12.208...
* Connected to 172.16.12.208 (172.16.12.208) port 12345 (#0)
^C
시나리오 #2: Virtualbox 호스트 → box-101
## On box-101 run:
$ nc -l 12345

# On Virtualbox Host
$ curl -v telnet://172.16.12.208:12345
* Rebuilt URL to: telnet://172.16.12.208:12345/
*   Trying 172.16.12.208...
* Connected to 172.16.12.208 (172.16.12.208) port 12345 (#0)
^C
시나리오 #3: 원격 서버 → box-101
## On box-101 run:
$ nc -l 12345

## In Remote Server
$ curl -v telnet://172.16.12.208:12345
* About to connect() to 172.16.12.208 port 12345 (#0)
*   Trying 172.16.12.208...
* Connected to 172.16.12.208 (172.16.12.208) port 12345 (#0)
^C

관련 정보