Mac에서 NAS로 포트포워딩하기

HaeJin Lee·2022년 3월 4일
0

공유기에 NAS를 물려놓고 Mac에서 접속하여 사용 중이다. 문제는 WiFi를 통해서 데이터를 이동하다보니 너무 느리다. 주로 집에서 사용하기 때문에 Mac에 이더넷 포트로 직접 물려서 사용하는게 빠를 것 같았다. Mac에 남아있는 이더넷 포트를 사용하여 NAS를 연결하려고 이리저리 정보를 찾아 해결한 내용을 정리하였다.

'인터넷 공유' 사용하기

시스템 환경설정에서 공유를 선택한 뒤, 연결 공유는 Wi-Fi로 다음 사용에는 이더넷을 선택한다.

설정이 끝나면 네트워크에서 이더넷 항목을 보면 자체 할당 IP라고 되어 있는 것을 볼 수 있다.

Mac OS 내부 포트포워딩

$ ifconfig

# bridge100의 IP 확인

Mac에서 인터넷 공유 활성화하는 경우 맥 내부의 DHCP 서버 IP는 192.168.2.1로 할당되는 것을 확인하였다. 해당 IP를 라우터로 하여 NAS에서 고정 IP는 192.168.2.2, 서브넷 마스크는 255.255.255.0으로 설정하였다.

Mac에서 포트포워딩은 OSX까지는 간단하게 설정할 수 있었던 것 같은데 최근 OS에서는 직접 시스템 파일을 건드려 줘야하는 것 같다.

1. anchor 파일 생성

$ sudo vi /etc/pf.anchors/com.nas

com.nas 대신에 다른 이름을 해도 무방하다.

2. anchor 파일 내용 입력

아래의 내용을 생성한 anchor 파일 안에 입력해준다.

rdr pass inet proto tcp from any to self port 80 -> 192.168.2.2 port 80

# 80번 포트로 들어오는 모든(any) 패킷을 192.168.2.2의 80번 포트로 넘긴다. 

원하는 포트에 따라 내용을 수정하거나 더 추가하면 된다. 여러 포트를 포워딩하는 경우 ... port { 80 8000 } -> ... 이런 식으로 작성하면 된다.

3. anchor 파일 테스트하기

아래의 명령어로 포워딩되는 포트들을 확인한다.

$ sudo pfctl -vnf /etc/pf.anchors/com.nas

# result
# rdr pass inet proto tcp from any to 127.0.0.1 port = 80 -> 192.168.2.2 port 80
# rdr pass inet proto tcp from any to 169.254.24.229 port = 80 -> 192.168.2.2 port 80
# rdr pass inet proto tcp from any to XXX.XXX.XXX.XXX port = 80 -> 192.168.2.2 port 80
# rdr pass inet proto tcp from any to 192.168.2.1 port = 80 -> 192.168.2.2 port 80

4. pf.conf에 anchor 파일 추가하기

$ sudo vi /etc/pf.conf

위 명령어를 통해 아래의 내용을 입력해준다.

rdr-anchor "com.nas"
load anchor "com.nas" from "/etc/pf.anchors/com.nas"

여기서 주의할 점은 rdr-anchor는 기존 rdr-anchor 줄 아래, load anchor는 기존 load anchor 줄 아래에 입력해야 한다.

추가내용)
anchor 파일의 내용을 rdr-anchor 줄 아래 바로 추가해도 됨. load anchor는 필요 없음.

5. 포트포워딩 적용하기

아래의 명령어를 통해 Mac 자체 포트포워딩을 할 수 있다. 추가로 공유기에서도 포트포워딩 IP를 수정해주어야한다. 최종적으로 외부에서 NAS에 접속되는 것을 알 수 있다.

$ sudo pfctl -ef /etc/pf.conf

추가 내용

# 포트포워딩 룰 확인
$ sudo pfctl -s nat

# 모든 포트포워딩 제거
$ sudo pfctl -F all -f /etc/pf.conf

# 포트포워딩 비활성화 
$ sudo pfctl -d

# 포트포워딩 바로 적용
$ echo "rdr pass inet proto tcp from any to any port 80 -> 192.168.2.2 port 80" | sudo pfctl -ef -

0개의 댓글