Virtualbox에 내부 네트워크에 연결된 두 개의 가상 머신(VM)이 있습니다. 첫 번째에는 n0이라는 네트워크 네임스페이스가 있습니다. 이 네임스페이스를 네트워크 인터페이스에 연결하고 마지막으로 내부 연결을 사용하여 두 번째 가상 머신(VM2)에 연결하려고 합니다. 네트워크 예:
보시다시피 192.168.127.2/24와 192.168.127.1/24 사이의 연결을 원합니다.
openvswitch를 사용하여 이 문제를 해결하려고 했습니다(작동하지 않음).
sudo ovs-vsctl add-br br0
sudo ifconfig br0 up
sudo ip link add veth type veth peer name veth-br
sudo ip link set veth netns ns0
sudo ifconfig veth-br up
sudo ovs-vsctl add-port br0 veth-br
sudo ip netns exec ns0 ip addr add 192.168.127.2/24 dev veth
sudo ip netns exec ns0 ip link set veth up
sudo ip addr add 192.168.127.3/24 dev br0
sudo ovs-vsctl add-port br0 eth0
이 문제를 해결하는 데 도움을 주실 수 있나요? 솔루션이 제대로 작동하도록 개선할 수 있는 방법을 알고 계십니까?
확장된 네트워크 토폴로지:
ns1과 ns0 사이에는 유효한 연결이 있지만 ns1을 192.168.127.1/24와 연결하려고 합니다. 이렇게 하려면 192.168.127.2/24와 192.168.127.1/24 사이의 연결 외에 고정 경로를 추가해야 하는데 그렇게 할 수 없습니다. openvswitch와 다음 명령을 사용하여 이 작업을 수행하려고 합니다.
sudo ip netns exec ns1 route add -net 192.168.127.0/24 gw 192.168.1.10 dev wlan1
sudo ip route add 192.168.1.0/24 via 192.168.127.2 dev br0
여기서 br0은 openvswitch-bridge입니다.
답변1
(질문을 변경하는 것은 설명을 추가하는 데 허용되는 방법이므로 완전히 괜찮습니다)
하지만 여전히 openvswitch가 필요한 이유를 이해하지 못합니다. 내가 하는 일은 다음과 같습니다(네트워크 세그먼트를 선으로 표현하는 방법에 주목하세요. 이러한 세그먼트를 명확하게 보여주는 것은 네트워크 설계에서 중요합니다).
192.168.1.*/24 192.168.127.*/24
WLAN Internal
: |
: +------------------------------+ | +----------------------+
: | +--------------------------+ | | | |
+--|-|- wlan0 192.168.1.1 | | +--|- 192.168.127.1 eth0 |
: | | ns1 | | | | |
: | +--------------------------+ | | | VM2 |
: | | | +----------------------+
: | +--------------------------+ | |
+--|-|- wlan1 192.168.1.10 | | |
: | | | | |
: | | macvlan0 192.168.127.2 -|-|--+
: | | (to eth0) ns0 | | |
: | +--------------------------+ | |
: | | |
: | eth0 192.168.127.4 ---|--+
: | | |
: | VM1 | |
+------------------------------+
따라서 VM1, ns0 및 VM2는 virtualbox 내부 네트워크에서 서로를 볼 수 있습니다. 우리가 말하면예아직 당신의 목표가 확실하지 않습니다.
macvlan
따라서 마스터로 사용 하여 생성 eth0
하고 내부로 이동합니다 ns0
.
# In VM1, main namespace
ip link add macvlan0 link eth0 type macvlan mode bridge
ip link set macvlan0 netns ns0
ip -n ns0 addr add 192.168.127.2/24 dev macvlan0
ip -n ns0 link set macvlan0 up
ip -n ns0 show macvlan0
또는 내부 네트워크의 DHCP 서버를 사용하여 macvlan이 IP를 얻고 DHCP 클라이언트를 실행하도록 할 수 있습니다. 배포판에 따라 위의 항목을 영구적으로 만드는 방법은 다양합니다.
해결책은 virtualbox 내부 네트워킹과 함께 사용되는 macvlan에 달려 있습니다(그럴 수도 있고 아닐 수도 있습니다. 제가 쓴 것처럼 virtualbox 네트워킹은 이상합니다). 작동하지 않으면 다음으로 시도할 것은 내부 세그먼트를 폐기하고 가상 머신을 사용하여 세그먼트를 연결하는 것입니다.
openvswitch가 필요 없으며 실제로 openvswitch를 virtualbox 내부 네트워킹과 결합하는 쉬운 방법이 없습니다.
따라서 어딘가에서 읽고 흥미로워서 openvswitch를 사용하고 싶다면 여기에서 사용할 필요가 없을 수도 있습니다.