좋습니다. 지금쯤이면 KVM에 꽤 정통하셨을 것입니다. 기본 소개 및 중간 설정 및 사용, 네트워크 및 스토리지 구성, VirtualBox와 함께 KVM 설정을 포함하여 몇 가지 자습서가 있습니다. 다음 논리적 단계는 포트 등을 전달해야 하는 경우 가상 머신에 사용 가능한 외부 IP 주소를 제공할 수 있도록 브리지된 네트워킹에 대해 배우는 것입니다. 피>
오늘 보여드릴 내용은 다른 곳에서 대부분의 자습서에서 본 내용과 약간 다를 것입니다. 즉, 다른 자습서에서 볼 수 있는 무차별 대입 접근 방식을 해결하려고 노력할 것입니다. 가상 머신을 외부 세계에 노출할 수 있는 두 가지 방법을 보여드리겠습니다. 방법 중 하나는 해킹이지만 절대적으로 천재적입니다. 당신은 전에 그것을 본 적이 없다! 그리고 제한 사항과 가능한 문제에 대해 조금 이야기하겠습니다. 피>
피>
참고:CC BY-SA 3.0에 따라 라이선스가 부여된 Wikipedia에서 가져온 이미지입니다. 인덱스 티저, 같은 용어. 피>
기본 준비
현실 확인부터 시작하겠습니다. 브리지된 네트워킹은 약간 추하고 Linux 명령줄에 대한 이해가 필요합니다. 그러나 때때로 브리징이 필요합니다. 가상 머신 내에서 어떤 종류의 서버를 실행하려는 경우 다른 호스트가 직접 통신할 수 있도록 외부 IP 주소를 제공할 수 있습니다. 피>
예:라우터가 10.0.0.X 범위의 주소를 부여합니다. 실제 호스트는 10.0.0.4를 사용하지만 가상 머신은 192.168.2.133으로 실행됩니다. 시스템이 앞뒤로 전송된 패킷을 해석하는 방법을 일부 변경하지 않으면 10.0.0 네트워크의 클라이언트가 192.168.2 네트워크의 클라이언트와 통신할 수 없습니다. 피>
브리징을 사용하여 문제를 해결할 수 있습니다. 이렇게 하면 가상 머신이 라우터에 연결되고 외부 IP 주소를 얻을 수 있습니다. 이 맥락에서 외부는 물리적 호스트가 사용하는 모든 것을 의미하며 반드시 비공개 주소는 아닙니다. 피>
기본적으로 KVM은 자체 브리지인 192.168.122.1을 생성합니다. 이 장치는 가상 머신의 가상 라우터 역할을 하며 이 범위의 IP 주소를 부여합니다. 그러나 우리는 머신이 외부 주소를 임대하기를 원합니다. 이 자습서에서는 192.168.2 범위입니다. 피>
두 가지 대체 솔루션
이를 시도할 수 있는 두 가지 방법이 있습니다. 피>
하나, 우리는 다리를 만들 것입니다. 두 장치가 브리지됩니다. 물리적 장치는 eth1이고 가상 장치는 vnet0입니다. 브리지가 제대로 작동하는지 확인한 후 변경 사항을 디스크의 네트워크 구성 파일에 커밋합니다. 가상 머신은 라우터에서 IP 주소를 임대합니다. 이것은 VirtualBox에서 수행한 것과 유사합니다. 이것이 여기서 다룰 방법입니다. 피> 두 번째 방법은 작동이 보장되지 않지만 그럴 수도 있습니다. 네트워크 어댑터가 즉시 브리징을 지원하는 경우 직접 사용할 수 있습니다. 변경해야 할 유일한 변경 사항은 네트워크의 물리적 호스트에서 사용하는 주소와 겹치지 않는 KVM의 가상 브리지에 주소의 작은 서브넷을 할당하는 것입니다.
제한 사항
잘못될 수 있는 일이 많이 있습니다. 라우터가 브리징을 지원하지 않을 수 있습니다. 네트워크 인터페이스가 브리징을 지원하지 않을 수 있습니다. 사용 가능한 IP 주소 임대 풀이 제한될 수 있습니다. 방화벽이 간섭할 수 있습니다. 마지막으로 특히 Ubuntu의 경우 Network Manager가 브리지된 인터페이스를 관리하는 경우 문제 및 충돌이 발생할 수 있습니다. 피>
자세한 내용은 다음 설명서를 참조하십시오.
Linux Foundation에서 브리지 설정
KVM 네트워킹 - Ubuntu 커뮤니티 문서
좋아요, 이제 당신은 우리 앞에 무엇이 놓여 있는지 압니다. 브리징은 확실히 간단한 것이 아닙니다. 고려해야 할 몇 가지 사항이 있습니다. 첫째, 네트워크 어댑터가 브리징을 지원합니까? 예를 들어 일부 랩톱에서는 무선 어댑터가 이 작업 모드를 실제로 지원하지 않습니다. 둘째, 네트워크 설정을 조작하는 것이 편합니까? 셋째, 무엇을 성취하려고 하는가? 아마도 NAT가 당신에게 충분할까요? 피>
기본 네트워킹 개념
내 테스트 상자는 우분투이지만 이 튜토리얼은 배포에 구애받지 않기를 바랍니다. Ubuntu KVM 커뮤니티 문서를 따르는 것이 좋지만 Debian 기반 시스템에서만 작동합니다. 따라서 조금 벗어나 RedHat 및 SUSE 시스템 모두에 적용할 수 있는 네트워킹 개념을 소개하겠습니다. 피>
Ubuntu와 같은 Debian 기반 시스템에서는 영구 네트워크 구성이 /etc/network/interfaces에 보관됩니다. RedHat 기반 시스템과 SUSE 친구 및 가족에서 네트워크 구성은 일반적으로 ifcfg-ethX 또는 ifcfg-eth-MAC-address 접두사가 붙는 /etc/sysconfig/network 아래의 개별 파일에 저장됩니다. ifconfig 명령을 사용하여 시스템에서 볼 수 있는 해당 인터페이스 이름으로 일반 eth를 바꾸십시오. 피>
구성 파일을 변경하지 않고 명령줄에서 brctl 유틸리티를 사용하여 브리지를 생성할 수도 있지만 네트워크 서비스를 다시 시작할 때마다 설정이 손실됩니다. 이것은 시스템 파일을 편집하기 전에 먼저 테스트하는 권장 방법입니다. 조작하기 전에 구성을 백업하는 것을 잊지 마십시오. 네트워크 설정에 대한 자세한 내용은 제 Linux 명령 기사를 참조하십시오. 피>
브리지 만들기
이제 플레이할 준비가 되었습니다. brctl, ifconfig 및 dhclient 명령을 사용하여 시작하는 것이 좋습니다. 이것들이 어떻게 사용되는지에 대해 너무 자세히 설명하지 않으면 실례하겠습니다. 대중적인 수요가 있는 경우 추가 자습서가 있을 것입니다. 일반적으로 순서는 다음과 같습니다(Sudo 사용 또는 루트 사용). br0, 물리적 및/또는 가상 장치 eth0/1 및 스위치 또는 라우터에서 DHCP 임대를 가정합니다.
ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
dhclient br0
가상 머신을 생성하고 시작할 때까지 가상 어댑터를 사용하지 못할 수도 있습니다. 따라서 아직 가상 어댑터를 추가할 필요가 없습니다. 고급 옵션에서 브리지 네트워킹을 선택하면 KVM이 이를 자동으로 수행합니다. 피>
피> DHCP 서버에서 외부 주소를 임대하는 브리지 인터페이스가 보이면 올바른 길을 가고 있는 것입니다. 가정 사용자의 경우 DHCP 서버가 라우터가 됩니다. 인터넷에 직접 연결되어 있는 경우 ISP가 사용자당 하나 이상의 IP 주소를 허용하지 않을 수 있으므로 이것이 불가능할 수 있습니다.
브리지 인터페이스가 나타나면 네트워크 기능이 변경되지 않았는지 확인하십시오. /etc/resolv.conf를 편집하고 라우팅 테이블을 수정해야 할 수도 있습니다. 피>
피>
이 방법이 작동하면 네트워크 구성 파일에 대한 변경 사항을 커밋할 수 있습니다. 내 예제는 일반적이며 커뮤니티 문서에 표시된 것과 매우 유사합니다. 예를 들어 다중 홉 또는 순환 경로를 적절하게 처리하려면 브리지에서 스패닝 트리 프로토콜(STP)을 활성화해야 할 수 있습니다. 피>
특히 우리의 경우에는 /etc/network/interface를 편집하고 거기에 br0을 추가하려고 합니다. STP가 필요한 경우 bridge_stp를 off로 변경하고 bridge_stp를 on으로 변경하십시오. btctl show 명령을 실행하여 브리지가 수행하는 작업을 확인할 수 있습니다. 피>
그리고 약간의 STP 재미 - 못된 소리, 그렇지 않습니다. 피>
피>
가상 머신 생성
이전에 이 작업을 수행하는 방법을 배웠으므로 새로운 것이 아닙니다. 마지막 단계의 고급 옵션에서 네트워크 주소 할당을 변경하고 가상 어댑터에 다른 것과 충돌하지 않는 고유한 MAC 주소가 있는지 확인합니다. 피>
운이 좋다면 특별한 브리징을 설정할 필요조차 없을 수도 있습니다. 네트워크 어댑터가 기본적으로 지원할 수 있으면 괜찮습니다! 그러나 아마 운이 좋지 않을 것이므로 약간의 힘든 키보드 노동을 예상하십시오. 피> 모든 것이 제대로 작동하는지 확인하려면:
ping을 할 수 있으면 해킹할 수 있습니다. 이것은 VirtualBox에서 수행한 것과 거의 동일합니다. 이제 서비스를 노출하고 데이터를 공유하는 등 필요한 모든 것을 할 수 있습니다. 즐기다. 피>
대체 설정(작동하지 않을 수도 있지만 훌륭함)
당신은 그렇게 운이 좋지 않을 수도 있습니다. 네트워크 관리자는 협조를 거부할 수 있으며 설정에 다른 많은 문제가 있을 수 있습니다. 이를 위해 별도의 가상 네트워크 어댑터를 만들고 기본적으로 브리징을 지원한다고 생각되는 물리적 장치로 라우팅할 수 있습니다. 충돌하는 IP 주소에 주의하십시오. 피>
피>
피>
마지막으로, 이것이 효과가 있다면 매우 지저분한 해킹을 시도할 수 있습니다. 네트워크와 동일한 /24 공간을 공유하는 가상 네트워크를 만듭니다. 예를 들어 라우터가 192.168.2.0 네트워크에 있는 경우 192.168.2.160에서 시작하는 가상 네트워크를 생성하고 전체 16개 정도의 작은 범위만 지정합니다. 라우터가 네트워크의 다른 클라이언트에게 해당 주소를 제공하지 않도록 하십시오. 피>
다음은 예입니다. 네트워크 192.168.2.160/28을 만들었습니다. 내 라우터가 해당 범위의 주소를 임대할 것이라고는 생각하지 않지만 DHCP 할당을 제한할 수 있습니다. 그런 다음 가상 네트워크를 물리적 장치(이 경우 무선 어댑터 eth1)로 라우팅합니다. 피>
피>
피>
이제 위와 같이 가상 머신을 만들고 eth1로 라우팅합니다. 온라인 상태가 되면 멋진 협력 관계를 확인하세요. 호스트에는 .102 주소가 있고 가상 NIC virbr1에는 .161 주소가 있으며 가상 머신에는 .168 주소가 있습니다. 피>
피>
피>
그리고 여기 .103 주소를 사용하는 동일한 네트워크의 물리적 Windows 7 상자에서 Ubuntu Lucid 상자의 .161 주소를 사용하여 가상 어댑터를 핑합니다. 둘 다 무선이며 둘 다 동일한 라우터를 통해 연결되어 얼마나 귀엽고 똑똑한지 보여줍니다. 설정이 정말. 이제 항상 작동하지는 않지만 작동하면 천재적입니다. 피>
피>
기존 가상 머신
이미 존재하는 가상 머신의 경우 /etc/libvirt/에서 지시문을 변경하여 설정을 편집할 수도 있습니다. 각 가상 머신에는 별도의 .xml 구성 파일이 있습니다. 변경 사항을 적용하려면 가상 머신의 전원을 껐다 켜야 합니다. 예:
<인터페이스 유형='브리지'>
<맥 주소='00:11:22:33:44:55'/>
<소스 브리지='br0'/>
인터페이스>
결론
KVM 브리지 네트워킹 설정은 실제로 직관적이지 않습니다. 2~3년 전의 VirtualBox만큼 친근합니다. 그러나 실제 한계는 네트워크 토폴로지의 이해와 기능이지만 관리가 가능합니다. 시간이 지나면 분명 나아질 것입니다. 피>
운이 좋다면 네트워크 어댑터가 즉시 브리징을 지원할 것입니다. 그렇지 않은 경우 브리지 어댑터를 만들고 물리적 및 가상 네트워크 장치를 할당해야 합니다. 그런 다음 DNS, DHCP 또는 라우팅과 관련된 잠재적 문제를 해결하십시오. 마지막으로 더러운 해킹으로 네트워크 범위를 남용하고 서브넷 내에 서브넷을 만들고 IP 주소가 겹치지 않는지 확인한 다음 가상 어댑터를 물리적 장치로 라우팅할 수 있습니다. 피>
이 튜토리얼은 매우 기본적이지만 교활한 반전이 있지만 밝혀지지 않은 많은 문제가 있을 수 있습니다. KVM에서 어려운 네트워크 설정을 극복하는 방법에 대한 질문, 제안 또는 팁이 필요한 경우 메일을 보내 주시면 이러한 새로운 문제를 해결하는 방법에 대한 속편을 만들 수 있습니다. 피>
건배. 피>