노드 서버 이더넷에 외부 통신 용 공인 IP, 내부 사설 IP 1개씩 할당되어 있는 상태에서 VM이 사설 IP만 할당받더라도 외부와의 아웃바운드 통신이 가능하도록 외부 통신 용 NAT 용도의 브릿지 네트워크 생성
| eth 명 | 할당 대역 |
|---|---|
xenbr0 | 외부 공인 IP |
xenbr1 | 내부 사설 IP |
물리 NIC가 없는 브릿지 전용 네트워크르를 생성합니다.
# 생성
NET=$(xe network-create name-label=nat-ext)
# 브릿지 명 확인
xe network-param-get uuid=$NET param-name=bridge
===
xapi0
===
xe network-attach uuid=$NET host-uuid=$(xe host-list --minimal)
ovs-vsctl list-br
===
xapi0
xenbr0
xenbr1
===
xapi0 IP 할당192.168.0.1/24로 할당하겠습니다.
# 브릿지명 변수 화
BR=$(xe network-param-get uuid=$NET param-name=bridge)
# 브릿지 IP 할당 후 UP
ip addr add 192.168.0.1/24 dev $BR
ip link set $BR up
MASQUERADE 설정# 명령어 임시 추가
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o xenbr0 -j MASQUERADE
# 영구 추가
vi /etc/sysctl.conf
===
net.ipv4.ip_forward = 1
===
cp -arp /etc/sysconfig/iptables /etc/sysconfig/iptables_ori
vi /etc/sysconfig/iptables
===
nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# 특정 포트 포워딩
-A PREROUTING -i xenbr0 -p tcp --dport $BindingPort -j DNAT --to $VM_IP:$PORT
# 외부 통신 포워딩
-A POSTROUTING -s 192.168.0.0/24 -o xenbr0 -j MASQUERADE
===
기본적으로 NAT-External로 패킷이 흐르지만 사내 대역대만 사설 IP 쪽으로 흐르게 해줘야 하는 경우가 있습니다.
그럴 때에는 라우팅을 고정합니다.
cd /etc/NetworkManager/system-connections
vi $이더넷_명.nmconnection
===
[ipv4]
address1=10.10.0.130/24
dns=8.8.8.8;
method=manual
never-default=true
route1=10.172.16.0/24,10.10.0.1
===
nmcli con reload
nmcli up $이더넷_명
route -n # 후 확인
cd /etc/netplan
vi 00-installer-config.yaml
===
enX2:
accept-ra: true
addresses:
- 10.10.0.130/24
nameservers:
addresses:
- 8.8.8.8
search:
- 8.8.8.8
routes:
- to: 10.172.16.0/24
via: 10.10.0.1
table: 100
routing-policy:
- from: 10.10.0.130
table: 100
===
netplan apply
route -n # 후 확인