업무를 수행하고 일부 리소스에 안전하게 접근하기 위해 FortiClient를 통해 VPN에 연결해야 한다. 2021년 3월에 회사에 입사했을 때 M1 MacBookPro를 받았다. M1 MacBookPro는 새로운 CPU 아키텍처를 탑재했기 때문에 다른 제품과 다르다. 이전에 Apple은 Intel 기반 CPU를 사용했지만, 이제 ARM 기반 CPU로 macOS를 실행하기로 결정했고 Apple은 현재 M1이라고 부른다.

많은 소프트웨어가 ARM과 호환되지 않는다. 때로는 "이 구성 요소는 귀하의 CPU와 호환되지 않습니다"와 같은 문제가 발생한다.

FortiClient v6.4.3.1325를 통해 VPN에 연결했을 때 연결된 것처럼 보이지만 인터넷 속도가 너무 느려졌다. 일반적으로 100MB/sec 인터넷 속도를 가지고 있다. 동료들에게 "VPN 또는 VPN 속도에 문제가 있나요?"라고 물었더니 그들은 "아니오!"라고 답했다. 그들은 Intel 기반 CPU를 사용하는 내 것보다 조금 더 오래된 MacBookPro를 사용하고 있었고, Intel 기반 버전은 괜찮고 안정적이기 때문에 정상적인 상황이라고 생각했다.

근본 원인을 찾기 위해 디버깅을 시작했고 VPN 연결 전에 라우팅 테이블을 확인했다.

~ netstat -rn
Routing tables

Internet: Destination Gateway Flags Netif Expire default 192.168.31.1 UGScg en0 127 127.0.0.1 UCS lo0 127.0.0.1 127.0.0.1 UH lo0 169.254 link#14 UCS en0 ! 192.168.31 link#14 UCS en0 ! 192.168.31.1/32 link#14 UCS en0 ! 192.168.31.1 ec:41:18:ec:c6:bc UHLWIir en0 1189 192.168.31.147/32 link#14 UCS en0 ! 192.168.31.147 a0:78:17:87:b4:88 UHLWI lo0 192.168.31.171 b8:bc:5b:6:28:18 UHLWI en0 1165 192.168.31.255 ff:ff:ff:ff:ff:ff UHLWbI en0 ! 224.0.0/4 link#14 UmCS en0 ! 224.0.0.251 1:0:5e:0:0:fb UHmLWI en0 239.255.255.250 1:0:5e:7f:ff:fa UHmLWI en0 255.255.255.255/32 link#14 UCS en0 !

라우트 테이블은 괜찮아 보인다. 192.168.31.1은 내 무선 라우터이며 기본 라우트로 설정되어 있다. 괜찮다.

이후 FortiClient를 통해 VPN에 연결하고 라우트 테이블을 다시 확인했다. 10.212.134.152는 FortiClient에 의해 할당된 내 로컬 IP 주소다.

우리 VPN 서비스는 Split-Tunneling을 사용하지 않으며, link#19 또는 10.212.134.152가 무선 라우터와 동시에 기본 경로의 다음 홉이어야 한다.

기본 라우트를 삭제한다!

그렇다, 수동으로 라우팅 테이블을 조작하기로 결정했다.

~ sudo route delete default
Password:
delete net default

이제 다음 홉은 내 FortiClient 로컬 IP 주소여야 한다. 내 경우 10.212.134.152다. 이 로컬 IP 주소는 DHCP가 할당하기 때문에 연결 시마다 동적으로 변경된다.

새 기본 경로를 추가하자...

~ sudo route add default 10.212.134.152
add net default: gateway 10.212.134.152

이제 새 기본 경로를 추가한 후 8.8.8.8에 ping을 보낼 수 있다.

이제 모든 것이 완벽하게 실행된다. VPN 연결이 안정적이고 빠르다!

보너스

VPN에 연결해야 할 때마다 기본 경로를 삭제하고 새로 추가해야 한다. 매번 수동으로 하고 싶지 않아 이 루틴을 위한 작은 bash 스크립트를 작성했다.

sudo vim으로 /usr/local/bin/ 경로에 스크립트를 저장할 수 있다. 그 후 스크립트에 chmod 권한을 추가하는 것을 잊지 말자.

#!/bin/bash

FortiIP=$(netstat -rn | grep “10.212.134” | awk ‘{print $2}’)

sudo route delete default sudo route add default $FortiIP

처음부터 읽었다면, 감사하다는 말을 전하고 싶다! : )