중국 여행에 필수인 VPN 사용하기 – wireguard

아무 준비 없이 중국에 입국하는 순간 큰 어려움을 겪었다. 구글을 비롯한 거의 대부분의 유명한 서비스를 사용할 수 없었던 것이다. 심지어 중국에서 결제에 사용가능하다는 카카오페이조차 USIM을 바꾼다면 사용할 수 없었다. 위챗도 바뀐 usim을 이용하여 설치하면 가입이 되지 않았다. 필요하다면 중국 입국전에 미리 설치하고 가입했어야 했던듯하나 정확한것은 아니다.
아무튼,유로 vpn을 사용하기에는 여행 기간이 짧았기에 그냥 불편하게 지냈다.
언제가 될지 모르지만 vpn을 사용할 일이 생길수도 있기에, vpn 서버를 구성해 놓기로 한다.

1. 우분투 리눅스 24.04에 wireguard를 설치한다.(작업은 root 계정으로)

# apt install wireguard

2. 리눅스 커널 파라메터에서 패킷을 포워딩하도록 설정을 변경한다.
현재 IP forwarding 파라메터 확인은,

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

변경이 필요한 상태이므로, 아래 파일에서 해당부분의 주석을 삭제하거나 설정을 변경해 둔다.

# vi /etc/sysctl.conf

...
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
net.ipv4.ip_forward=1
...

적용 후 확인

# sysctl -p
net.ipv4.ip_forward = 1

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

3. fireguard 설정
설정파일과 암호키를 저장하기위한 디렉토리(/etc/wireguard)로 이동한후 아래 작업을 진행한다.

디렉토리 이동

# cd /etc/wireguard

암호키 생성

# wg genkey > privatekey
# wg pubkey < privatekey > publickey

설정파일 생성

PrivateKey는 위에서 만든 키파일의 내용이다.
172.16.2.1/24는 VPN이 사용할 IP주소 대역.
wg0는 vpn이 사용할 네트워크 인터페이스의 이름.
eth0는 인터넷에 연결되어 있는 네트워크 인터페이스의 이름으로 실제와 다를 수 있기 때문에, ip link 명령어로 확인 해야 한다.

# vi wg0.conf

[Interface]
Address = 172.16.2.1/24
ListenPort = 51820
PrivateKey = yHwNX/xxxxxx+R99Zhe9gbREKKwjH9cy9urzzz23o9VQ=

PostUp = sysctl -w net.ipv4.ip_forward=1
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

4. wireguard 실행

이제, systemctl 명령어로 시작 서비스에 등록하고 서비스를 실행한다.

# systemctl enable wg-quick@wg0
# systemctl start wg-quick@wg0 

서비스가 잘 실행되고 있다면, wg 명령어를 실행했을 때 아래와 같은 화면을 볼 수 있다.

# wg
interface: wg0
  public key: ykctXmobv9zdu9XtXXXXXXXX1MnsQOaMST0ug99xxxx=
  private key: (hidden)
  listening port: 51820

5. 클라이언트 설정(iPhone)

5.1 아이폰 설정
앱스토어에서 WireGuard 앱을 다운로드 받아실행하면, 아래처럼 썰렁한 화면을 볼 수 있다.

화면 중앙의 ‘Add a tunnel’ 버은을 누른다.

여기서 Create from scratch를 선택하면 아래처럼 설정 화면이 나온다.

Name: VPN 연결 이름으로 임의의 이름을 입력한다.
비밀키/공기키: Generate keypair를 누르면 자동으로 만들어진다. 여기서 공개키는 서버에 등록해야한다.

Addresses: ip 주소를 등록하는데, 서버에서 vpn이 사용하는 대역중 하나를 선택한다. 172.16.2.100/32 를 사용(서버 설정에 등록해야함).
DNS 서버: 8.8.8.8 또는 알고있는 DNS 서버를 사용하면 된다. 이부분을 입력하지 않으면 vpn 서버에 접속이 잘 되더라도 인터넷 접속이 안된다.

이후, Add peer를 누르면 서버설정 부분이 나온다.

Public key: vpn 서버에서 만든 공개키를 입력한다.
EndPoint: vpn 서버의 ‘공인 IP:port 번호’, vpn 서버가 IP 공유기 안쪽에 있으면 공유기에서 WAN 설정에서 확인가능하다.
여기서는 115.90.100.40:51820
Allowed IPs: 0.0.0.0/0
인터넷 접속을 원한다면 0.0.0.0/0 을 입력하고 공유기 안쪽 PC또는 서버만 접속하려면 공유기의 ip 주소대역을 입력하면 된다. 하지만, 인터넷 접속이 목적이므로 0.0.0.0/0을 입력한다.

마지막으로 cellular, Wi-Fi는 모두 On 하여 모든 접속을 VPN을 거치도록 설정한다.

화면 위쪽의 Save를 눌러 설정을 저장한다.

5.2. VPN 서버 설정
이제, 위에 등록한 클라이언트를 vpn 서버에 등록해야한다.

/etc/wireguard/wg0.conf 파일의 아래쪽에, 아래와 같이 등록한다.
PublicKey는 클라이언트(여기서는 아이폰)에서 만든 공개키를 입력하면된다.
AllowedIPs 에는 클라이언트에서 지정한 172.16.2.100/32를 입력한다.

[Peer]
PublicKey = +vpnWswyVBzZkSItI1IcjsQYHe7zZ1RyhwU9t2etJjY=
AllowedIPs = 172.16.2.100/32

설정이 변경되었으므로, 서비스를 재시작한다.

# systemctl restart wg-quick@wg0

6. VPN 사용.
설정을 마치고 VPN을 켜면 VPN표시가 나타났다가 사라진다.

이제, 모든 인터넷 접속은 vpn을 통해 이루어진다.

답글 남기기

Your email address will not be published.