정맥이 작동하려면 터널의 한쪽 끝을 다른 인터페이스와 연결해야합니다. 이 모든 가상을 유지하려면 brm이라는 브리지에서 탭 유형 가상 인터페이스로 터널의 vm1 끝 (vm2는 터널의 다른 끝)을 브리지 할 수 있습니다. 이제 brm 및 vm2 (각각 10.0.0.1 및 10.0.0.2)에 IP 주소를 제공하고 다음을 통해 IPv4 전달을 활성화합니다.
echo 1 > /proc/sys/net/ipv4/ip_forward
모든 인터페이스를 가동시키고 커널에게 IP 주소 10.0.0.0/24에 도달하는 방법을 알려주는 경로를 추가하십시오. 그게 다야.
더 많은 쌍을 만들려면 다른 서브넷 (예 : 10.0.1.0/24, 10.0.2.0/24 등)으로 아래 단계를 반복하십시오. IPv4 전달을 활성화하고 커널 라우팅 테이블에 적절한 경로를 추가했기 때문에 서로 대화 할 수 있습니다.
또한 사용하는 대부분의 명령 (brctl, ifconfig, ...)은 더 이상 사용되지 않습니다. iproute2 제품군에는이 모든 작업을 수행하는 명령이 있습니다. 아래의 ip 명령 사용을 참조하십시오 .
이것은 veth 유형의 인터페이스를 사용하기위한 올바른 명령 순서입니다 .
먼저 필요한 모든 인터페이스를 만들고
ip link add dev vm1 type veth peer name vm2
ip link set dev vm1 up
ip tuntap add tapm mode tap
ip link set dev tapm up
ip link add brm type bridge
brm과 vm2는 IP 주소를 할당해야하기 때문에 가져 오지 않았지만 tapm과 vm1은 브리지 brm에 포함시키는 데 필요했습니다. 이제 인터페이스 tapm과 vm1을 브리지 brm에 종속시킵니다.
ip link set tapm master brm
ip link set vm1 master brm
이제 브리지와 나머지 veth 인터페이스 vm2에 주소를 제공합니다.
ip addr add 10.0.0.1/24 dev brm
ip addr add 10.0.0.2/24 dev vm2
이제 vm2와 brm을 불러옵니다.
ip link set brm up
ip link set vm2 up
서브넷 10.0.0.0/24에 경로를 명시 적으로 추가 할 필요가 없으며 자동으로 생성되므로 ip route show로 확인할 수 있습니다 . 결과
ping -c1 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.035 m
--- 10.0.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.035/0.035/0.035/0.000 ms
또한, 거꾸로 할 수있는 즉, BRM에 VM2의 뒤쪽에서 :
ping -I 10.0.0.2 -c1 10.0.0.1
PING 10.0.0.1 (10.0.0.1) from 10.0.0.2 : 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.045 ms
--- 10.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 ms
veth 종류 의 NIC의 가장 유용한 응용 프로그램은 Linux namespace (LXC)에서 사용되는 네트워크 네임 스페이스 입니다. 다음과 같이 nnsm이라는 것을 시작합니다.
ip netns add nnsm
그런 다음 vm2를 전송합니다.
ip link set vm2 netns nnsm
우리는 lo 인터페이스를 가진 새로운 네트워크 네임 스페이스를 부여합니다 (절대적으로 필요합니다).
ip netns exec nnsm ip link set dev lo up
메인 머신에서 NATting을 허용합니다.
iptables -t nat -A POSTROUTING -o brm -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
( eth0을 통해 인터넷에 연결된 경우 에는 다르게 변경) 새 네트워크 네임 스페이스에서 셸을 시작하십시오.
ip netns exec nnsm xterm &
이제 새 xterm을 입력하기 시작하면 IP 주소가 10.0.0.2 인 별도의 가상 머신에 있지만 인터넷에 연결할 수 있습니다. 이것의 장점은 새로운 네트워크 네임 스페이스가 사용자 PC의 나머지 동안 수단, 예를 들어, 당신이 그것에 VPN을 시작할 수 있습니다 자신의 스택을 가지고 있다는 것입니다 하지 VPN을에 있습니다. 이것이 LXC의 기반이되는 contraption입니다.
편집하다:
vm2 인터페이스를 가져 오면 실수로 주소가 지워집니다. 따라서 xterm 내에서 다음 명령을 추가해야합니다.
ip addr add 10.0.0.2/24 dev vm2
ip link set dev vm2 up
ip route add default via 10.0.0.1
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf
이제 xterm 내에서 탐색 할 수 있습니다.
ip명령도 함께 xterm을하기 전에 수행 할 수 있습니다
ip -netns nnsm addr add 10.0.0.2/24 dev vm2
ip -netns nnsm link set dev vm2 up
ip -netns nnsm route add default via 10.0.0.1
br0자체까지?