OpenVPN 브리지 모드를 활용하여 VPN에 분산 빌드 환경 구축
재택근무 체제가 언제까지 계속될지 모르는 상황에서 분산 빌드가 작동하지 않는 채로는 사업 계획에 심각한 영향을 미치기 때문에 VPN을 이용하여 분산 빌드 환경을 구축한다.
OpenVPN 서버 구축
SN-DBS의 분차 빌드를 동작시키기 위해서는, 컴퓨팅 자원이 동일 네트워크상(L2)으로 접속되고 있을 필요가 있다.
인터넷상에서 접속하는 시스템은 IP주소에 의한 라우팅이 필요하기 때문에 L3로 접속되어 동작하지 않는다.
OpenVPN 브리지 모드(TAP)는 OpenVPN 서버가 속한 네트워크에 가상적으로 L2로 연결할 수 있습니다.
OpenVPN 호환 AWS Client VPN은 TAP 모드로 만들 수 없으며 Client to Client 연결도 불가능하므로 ES2 인스턴스에 OpenVPN을 구축합니다.
네트워크 및 서버 구성
설명을 위해 구성을 작성합니다. 필요에 따라 변경하십시오.
VPC10.10.0.0/16
subnet10.10.21.0/24
route-table10.10.0.0/16 => local
0.0.0.0/0 => igw
instance10.10.21.5
인스턴스 시작 시 기본 IP 지정
서브넷의 기본 게이트웨이는 10.10.21.1
, 해석기는 10.10.21.2
입니다.
security-groupTCP 22 0.0.0.0/0
UCP 443 0.0.0.0/0
OpenVPN 서버 설정
설치 방법이나 인증 방법의 설정은 구그하면 나오므로 할애.
How To Guide: Set Up & Configure OpenVPN client/server VPN | OpenVPN
h tps://오페 vp. 네 t/쯤에 ty-그렇게 r세 s/호 w-와/
/etc/openvpn/server.confport 443
proto udp
dev tap0
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server-bridge 10.10.21.5 255.255.255.0 10.10.21.100 10.10.21.255
client-to-client
keepalive 10 120
cipher AES-256-GCM
compress lz4-v2
push "compress lz4-v2"
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 1
서버 주소 10.10.21.5
서브넷 마스크 255.255.255.0
클라이언트에 할당할 주소 10.10.21.100 ~ 10.10.21.255
server-bridge 10.10.21.5 255.255.255.0 10.10.21.100 10.10.21.255
네트워크 브리지 만들기
가상 네트워크 인터페이스tap0
와 물리적 네트워크 인터페이스ens5
를 브리지로 연결합니다.
또한 VPN 클라이언트로의 데이터 프레임(패킷)은 서버가 전송할 필요가 있기 때문에 OpenVPN 서버로 향하지 않는 프레임이 NIC에서 파기되지 않도록 무차별 모드를 설정한다.
이러한 설정은 도중에 인스턴스의 네트워크 접속이 끊어지기 때문에, 스크립트로 단번에 실시한다.
테스트 중에 ssh 연결이 끊어지면 콘솔에서 인스턴스를 다시 시작하는 것이 좋습니다.
이더넷 브리징 | OpenVPN
h tps://오페 vp. 네 t/쯤에 ty- 있을 것 rs s/에테
이번에는 Ubuntu Server 18.04에서 작성하고 있으므로 netplan
와 systemd-networkd
를 이용하여 브리지를 구축한다.
브리지 작성에는 bridge-utils
를 이용한다.
ens5: 物理NIC
tap0: 仮想NIC
br0 : 作成するブリッジ
netplan 설정
물리적 NIC에 설정된 macaddress를 브리지 측으로 설정합니다.
/etc/netplan/50-cloud-init.yaml# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
version: 2
ethernets:
ens5:
dhcp4: false
bridges:
br0:
interfaces: [ens5]
dhcp4: true
macaddress: 06:85:47:07:47:ac
networkd-dispatcher 설정
netplan 은 스크립트 기동을 서포트하지 않는 대신, networkd-dispatcher 를 이용한 스크립트 호출을 이용할 수 있다.
FAQ | Netplan
h tps : // 네 tp 응. 이오 / 후 q
/etc/networkd-dispatcher/routable.d/50-ifup-hooks#!/bin/sh
openvpn --mktun --dev tap0
ifconfig tap0 0.0.0.0 promisc up
ifconfig ens5 0.0.0.0 promisc up
brctl addif br0 tap0
실행 권한도 붙인다.
네트워크 인터페이스 확인
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0685470747ac no ens5
tap0
$ ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.10.21.5 netmask 255.255.255.0 broadcast 10.10.21.255
inet6 fe80::485:47ff:fe07:47ac prefixlen 64 scopeid 0x20<link>
ether 06:85:47:07:47:ac txqueuelen 1000 (Ethernet)
RX packets 341095 bytes 267201788 (267.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 308550 bytes 263056027 (263.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens5: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet6 fe80::485:47ff:fe07:47ac prefixlen 64 scopeid 0x20<link>
ether 06:85:47:07:47:ac txqueuelen 1000 (Ethernet)
RX packets 320874 bytes 268137556 (268.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 329184 bytes 266967804 (266.9 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 34370 bytes 2746382 (2.7 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 34370 bytes 2746382 (2.7 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
tap0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet6 fe80::c857:6eff:fe4a:d347 prefixlen 64 scopeid 0x20<link>
ether ca:57:6e:4a:d3:47 txqueuelen 100 (Ethernet)
RX packets 20388 bytes 3858461 (3.8 MB)
RX errors 0 dropped 7 overruns 0 frame 0
TX packets 201 bytes 9586 (9.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
클라이언트 설정
client
dev tap0
proto udp
remote SERVER_ADDRESS 443
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
verb 3
<ca>
-----BEGIN CERTIFICATE-----
MIIDSzC...
-----END CERTIFICATE-----
</ca>
cert /path/to/client.crt
key /path/to/client.key
라우팅 테이블 확인
10.10.21.0/24
에 대한 경로 정보가 있는지 확인
% netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.22.100.1 UGSc 91 7 en0
10.10.21/24 link#12 UC 4 0 tap0 !
10.10.21.5 link#12 UHLWI 0 0 tap0 !
10.10.21.101 f2:91:9a:c:1c:78 UHLWI 0 1 lo0
10.10.21.255 ff:ff:ff:ff:ff:ff UHLWbI 0 1 tap0 !
10.22.100/24 link#5 UCS 9 0 en0 !
10.22.100.1/32 link#5 UCS 1 0 en0 !
10.22.100.1 0:3a:9d:4e:4c:1b UHLWIir 31 78 en0 1145
10.22.100.116/32 link#5 UCS 1 0 en0 !
10.22.100.116 34:36:3b:d3:16:a UHLWI 0 6 lo0
10.22.100.255 ff:ff:ff:ff:ff:ff UHLWbI 0 6 en0 !
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 75 562099 lo0
169.254 link#5 UCS 1 0 en0 !
224.0.0/4 link#5 UmCS 2 0 en0 !
224.0.0.251 1:0:5e:0:0:fb UHmLWI 0 0 en0
239.255.255.250 1:0:5e:7f:ff:fa UHmLWI 0 693 en0
255.255.255.255/32 link#5 UCS 1 0 en0 !
255.255.255.255 ff:ff:ff:ff:ff:ff UHLWbI 0 6 en0 !
소통 확인
% ping google.com
PING 10.10.21.5 (10.10.21.5): 56 data bytes
64 bytes from 10.10.21.5: icmp_seq=0 ttl=54 time=14.021 ms
64 bytes from 10.10.21.5: icmp_seq=1 ttl=54 time=111.575 ms
64 bytes from 10.10.21.5: icmp_seq=2 ttl=54 time=27.658 ms
분산 빌드 사용
움직였다.
AWS 네트워크에서 실행 중이므로 EC2 인스턴스를 사용하여 에이전트를 늘릴 수 있습니다!
Reference
이 문제에 관하여(OpenVPN 브리지 모드를 활용하여 VPN에 분산 빌드 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Takezoh/items/329081779c57abf3b59a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
10.10.0.0/16
10.10.21.0/24
10.10.0.0/16 => local
0.0.0.0/0 => igw
10.10.21.5
TCP 22 0.0.0.0/0
UCP 443 0.0.0.0/0
port 443
proto udp
dev tap0
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server-bridge 10.10.21.5 255.255.255.0 10.10.21.100 10.10.21.255
client-to-client
keepalive 10 120
cipher AES-256-GCM
compress lz4-v2
push "compress lz4-v2"
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 1
server-bridge 10.10.21.5 255.255.255.0 10.10.21.100 10.10.21.255
ens5: 物理NIC
tap0: 仮想NIC
br0 : 作成するブリッジ
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
version: 2
ethernets:
ens5:
dhcp4: false
bridges:
br0:
interfaces: [ens5]
dhcp4: true
macaddress: 06:85:47:07:47:ac
#!/bin/sh
openvpn --mktun --dev tap0
ifconfig tap0 0.0.0.0 promisc up
ifconfig ens5 0.0.0.0 promisc up
brctl addif br0 tap0
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0685470747ac no ens5
tap0
$ ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.10.21.5 netmask 255.255.255.0 broadcast 10.10.21.255
inet6 fe80::485:47ff:fe07:47ac prefixlen 64 scopeid 0x20<link>
ether 06:85:47:07:47:ac txqueuelen 1000 (Ethernet)
RX packets 341095 bytes 267201788 (267.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 308550 bytes 263056027 (263.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens5: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet6 fe80::485:47ff:fe07:47ac prefixlen 64 scopeid 0x20<link>
ether 06:85:47:07:47:ac txqueuelen 1000 (Ethernet)
RX packets 320874 bytes 268137556 (268.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 329184 bytes 266967804 (266.9 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 34370 bytes 2746382 (2.7 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 34370 bytes 2746382 (2.7 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
tap0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet6 fe80::c857:6eff:fe4a:d347 prefixlen 64 scopeid 0x20<link>
ether ca:57:6e:4a:d3:47 txqueuelen 100 (Ethernet)
RX packets 20388 bytes 3858461 (3.8 MB)
RX errors 0 dropped 7 overruns 0 frame 0
TX packets 201 bytes 9586 (9.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
client
dev tap0
proto udp
remote SERVER_ADDRESS 443
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
verb 3
<ca>
-----BEGIN CERTIFICATE-----
MIIDSzC...
-----END CERTIFICATE-----
</ca>
cert /path/to/client.crt
key /path/to/client.key
라우팅 테이블 확인
10.10.21.0/24
에 대한 경로 정보가 있는지 확인% netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.22.100.1 UGSc 91 7 en0
10.10.21/24 link#12 UC 4 0 tap0 !
10.10.21.5 link#12 UHLWI 0 0 tap0 !
10.10.21.101 f2:91:9a:c:1c:78 UHLWI 0 1 lo0
10.10.21.255 ff:ff:ff:ff:ff:ff UHLWbI 0 1 tap0 !
10.22.100/24 link#5 UCS 9 0 en0 !
10.22.100.1/32 link#5 UCS 1 0 en0 !
10.22.100.1 0:3a:9d:4e:4c:1b UHLWIir 31 78 en0 1145
10.22.100.116/32 link#5 UCS 1 0 en0 !
10.22.100.116 34:36:3b:d3:16:a UHLWI 0 6 lo0
10.22.100.255 ff:ff:ff:ff:ff:ff UHLWbI 0 6 en0 !
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 75 562099 lo0
169.254 link#5 UCS 1 0 en0 !
224.0.0/4 link#5 UmCS 2 0 en0 !
224.0.0.251 1:0:5e:0:0:fb UHmLWI 0 0 en0
239.255.255.250 1:0:5e:7f:ff:fa UHmLWI 0 693 en0
255.255.255.255/32 link#5 UCS 1 0 en0 !
255.255.255.255 ff:ff:ff:ff:ff:ff UHLWbI 0 6 en0 !
소통 확인
% ping google.com
PING 10.10.21.5 (10.10.21.5): 56 data bytes
64 bytes from 10.10.21.5: icmp_seq=0 ttl=54 time=14.021 ms
64 bytes from 10.10.21.5: icmp_seq=1 ttl=54 time=111.575 ms
64 bytes from 10.10.21.5: icmp_seq=2 ttl=54 time=27.658 ms
분산 빌드 사용
움직였다.
AWS 네트워크에서 실행 중이므로 EC2 인스턴스를 사용하여 에이전트를 늘릴 수 있습니다!
Reference
이 문제에 관하여(OpenVPN 브리지 모드를 활용하여 VPN에 분산 빌드 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Takezoh/items/329081779c57abf3b59a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(OpenVPN 브리지 모드를 활용하여 VPN에 분산 빌드 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Takezoh/items/329081779c57abf3b59a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)