IBM Cloud VPC의 가상 서버에 OpenVPN으로 연결
목적
IBM Cloud의 가상 서버에 VPN을 연결하려는 경우 클래식 인프라에서 SSL-VPN을 표준으로 사용할 수 있었지만 VPC에서는 작동하지 않습니다. 따라서 VPC에서 클래식 인프라처럼 VPN 연결을 원하면 클래식 인프라의 가상 서버에 VPN 먼지에 원격으로 로그인하고 Transit Gateway를 통해 VPC의 가상 서버에 원격으로 액세스합니다. 합니다. 그것은 번거롭기 때문에 VPC의 가상 서버에 OpenVPN을 설정하고 연결할 수 있도록 해보십시오.
VPC에는 VPN Gateway가 있지만 IPsec VPN에서 사이트 간 연결에 사용하기 때문에 개인 사용자의 VPN 연결로 사용하기가 어렵습니다.
절차
서버 전제
서버 전제
OpenVPN 설치
EPEL 리포지토리를 활성화하고 OpenVPN 및 EasyRSA를 설치합니다.
# dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
# dnf -y install easy-rsa openvpn
IP 포워딩 활성화
/etc/sysctl.d/ipv4-ip-forward.conf
net.ipv4.ip_forward = 1
# sysctl --system
PKI 설정
초기화
# /usr/share/easy-rsa/3/easyrsa init-pki
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /root/pki
CA 만들기
# /usr/share/easy-rsa/3/easyrsa build-ca
Using SSL: openssl OpenSSL 1.1.1c FIPS 28 May 2019
Enter New CA Key Passphrase: # パスフレーズ
Re-Enter New CA Key Passphrase: # パスフレーズ(確認)
Generating RSA private key, 2048 bit long modulus (2 primes)
........................................+++++
...................................................................................................................+++++
e is 65537 (0x010001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:Example CA # 名前
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/root/pki/ca.crt
DH 만들기
# /usr/share/easy-rsa/3/easyrsa gen-dh
Using SSL: openssl OpenSSL 1.1.1c FIPS 28 May 2019
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.............................................
DH parameters of size 2048 created at /root/pki/dh.pem
서버 키 및 인증서 작성
nopass
붙이는 것으로 키의 패스 프레이즈를 없애 줍니다.# /usr/share/easy-rsa/3/easyrsa build-server-full server nopass
Using SSL: openssl OpenSSL 1.1.1c FIPS 28 May 2019
Generating a RSA private key
........................................................................................................................................................+++++
......+++++
writing new private key to '/root/pki/easy-rsa-8951.WNkyCo/tmp.2IbkNL'
-----
Using configuration from /root/pki/easy-rsa-8951.WNkyCo/tmp.LtjSs2
Enter pass phrase for /root/pki/private/ca.key: # CA作成時のパスフレーズ
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'server'
Certificate is to be certified until Jan 2 01:24:37 2023 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
공유 키 생성
클라이언트에 배포할 공유 키를 생성합니다. 이것을 사용하지 않을 수도 있지만, 신뢰할 수있는 사람 만 연결할 수 있도록 이번에는 사용합니다 (단, 공유 키를 안전하게 사용자에게 전달하는 메커니즘이 필요합니다).
# openvpn --genkey --secret pki/ta.key
서버 설정
생성한 것을 배치합니다.
# cp pki/ca.crt pki/ta.key pki/private/server.key pki/issued/server.crt /etc/openvpn/server/
# cp pki/dh.pem /etc/openvpn/server/dh2048.pem
구성 파일의 편지지를 복사합니다.
# cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/server.conf
필요한 설정을 합니다.
/etc/openvpn/server/server.conf
# VPNで使用するアドレスレンジ(他で使っているものと重複しないこと)
server 192.168.255.0 255.255.255.0
# VPNを通して直接通信可能にするVPC内のネットワーク
push "route 10.244.0.0 255.255.255.0"
# /etc/passwdでユーザー認証・クライアント証明書は使わない(行末に追加)
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so login
client-cert-not-required
username-as-common-name
서버 시작
# systemctl enable openvpn-server@server
# systemctl start openvpn-server@server
1194/udp 허가
Firewalld 및 VPC ACL 보안 그룹에서 1194/udp 인바운드를 허용합니다.
VPN 클라이언트
설치
Windows 사용자의 경우 OpenVPN 클라이언트는 vpnux Client가 매우 간단합니다. 아래 사이트에서 설치합니다.
htps //w w. vp 없음 x. jp/
CA 인증서 및 공유 키 얻기
방금 서버에서 만든
안전한 방법으로 얻으십시오.
프로필 만들기
클라이언트를 시작하고 프로파일을 작성합니다.
연결
연결합니다.
연결 확인
자체 PC에서 VPC의 서브넷으로 통신할 수 있습니다.
$ ping 10.244.0.4 # OpenVPNサーバ
PING 10.244.0.4 (10.244.0.4) 56(84) bytes of data.
64 bytes from 10.244.0.4: icmp_seq=1 ttl=64 time=10.4 ms
64 bytes from 10.244.0.4: icmp_seq=2 ttl=64 time=12.8 ms
...
$ ssh ****@10.244.0.4
****@10.244.0.4's password:
[****@**** ~]$
그러나 이대로는 OpenVPN 서버 이외와는 통신할 수 없습니다.
$ ping 10.244.0.19
(応答なし)
OpenVPN 서버 이외와도 통신을 하고 싶은 경우는, OpenVPN 클라이언트로부터의 통신(192.168.255.0.24)을 NAT 하는 것으로 회피할 수 있습니다.
/etc/nftables/openvpn-nat.nft
#!/usr/sbin/nft -f
table ip nat {
chain PREROUTING {
type nat hook prerouting priority -100; policy accept;
}
chain INPUT {
type nat hook input priority 100; policy accept;
}
chain POSTROUTING {
type nat hook postrouting priority 100; policy accept;
oifname "eth0" ip saddr 192.168.255.0/24 counter packets 1 bytes 84 masquerade
}
chain OUTPUT {
type nat hook output priority -100; policy accept;
}
}
/etc/sysconfig/nftables.conf
# 行追加
include "/etc/nftables/openvpn-nat.nft"
덧붙여서 iptables의 경우는 이하의 커멘드에 해당합니다.
$iptables -A POSTROUTING -o eth0 -t nat -s 192.168.255.0/24 -j MASQUERADE
이제 VPC의 다른 호스트와 통신할 수 있습니다.
$ ping 10.244.0.19
PING 10.244.0.19 (10.244.0.19) 56(84) bytes of data.
64 bytes from 10.244.0.19: icmp_seq=1 ttl=63 time=9.37 ms
64 bytes from 10.244.0.19: icmp_seq=2 ttl=63 time=9.56 ms
이상입니다.
Reference
이 문제에 관하여(IBM Cloud VPC의 가상 서버에 OpenVPN으로 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/teruq/items/b19e575f7e106215658c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)