현재 OpenVPN에서 브리지 모드를 실험 중이며 지금까지는 tun 어댑터만 사용했습니다. Virtualbox(Ubuntu 22.04 LTS)에 3개의 가상 머신(Oracle Virtualbox)과 내부 네트워크를 설정했습니다.
VM01(VPN 브리지): 인터페이스 2개
enp0s3: 192.168.10.10/24 intnet1
enp0s8: 192.168.20.10/24 intnet2
VM02: 인터페이스 1개
enp0s3: 192.168.10.11/24 Virtualbox 네트워크 intnet1
VM03: 인터페이스
enp0s3: 1개 8.20.11 /24 가상 박스 네트워크 intnet2
VPN이 없으면 예상대로 작동하며 VM01에서 VM02, VM03으로 ping할 수 있습니다. 하지만 VM02의 경우 VM03을 ping할 수 없습니다.
VM02와 VM01 간의 연결은 시뮬레이션된 인터넷 연결이며, 목표는 인터넷 연결 간의 VPN을 시뮬레이션하여 네트워크 192.168.10.0/24를 연결하는 것입니다.
VM02(192.168.10.0/24) <--VPN--> VM01(VPN 브리지) <--브리지--> 네트워크 192.168.20.0/24
OpenVPN의 스크립트를 사용하여 브리지를 만듭니다.
#!/bin/bash
#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################
# Define Bridge Interface
br="br0"
# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"
# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth="enp0s8"
eth_ip="192.168.20.10"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.20.255"
for t in $tap; do
openvpn --mktun --dev $t
done
brctl addbr $br
brctl addif $br $eth
for t in $tap; do
brctl addif $br $t
done
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
ifconfig $eth 0.0.0.0 promisc up
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
VM02와 VM01 사이에 VPN 연결을 설정한 후 ping 192.168.20.11을 사용하여 VM02에서 VM03으로 ping하려고 합니다. 브리지가 ARP 요청을 수신하고 올바른 MAC 주소도 찾을 수 있는 것 같지만 그렇지 않은 것 같습니다. 그 이상은 .
VPN 호스트에 대한 ping이 제대로 작동합니다(VM02에서: ping 192.168.20.10). 또한 네트워크 어댑터에서 무차별 모드를 활성화했습니다.