Mac Yosemite port forwarding
Mac에서 개발하다보면 Tomcat port가 80으로 바뀌지 않아 개발하는데 귀찮음을 느낄때가 많다.
구글에서 Mac에서 8080포트를 80포트로 포트포워딩 하는방법으로 대부분 ipfw 명령어를 사용하는것이 많다. 하지만 Yosemite에서는 ipfw대신 pf를 사용한다고 한다.(Yosemite firewall: IPFW is gone, Moving to PF)
아래에 쓴내용은 이미 내 MacBook에 적용하여 사용하고 있으며, 해당 출처는 내 선임분께서 알려주신 방법이다.
물론, 구글에서 검색하면 나오는 방법 중 하나이다.
-
sudo vi /etc/pf.anchors/com.test com.test파일을 /etc/pf.anchors/ 경로에 생성한다. 물론 /etc인 시스템폴더 중 하나를 접근하기 때문에 super user 권한이 필요하기 때문에 sudo를 사용한다.
-
생성한 파일에 아래 내용으 넣는다.(8080포트를 80 포트로) rdr pass on lo0 inet proto tcp from any to any port { 80 8080 } -> 127.0.0.1 port 8080 rdr은 redirect의 약자인거 같은데 pf에 사용되는 명령어중 하나이다. 이에 대한 자세한 내용은 http://www.openbsd.org/faq/pf/rdr.html를 참고하면 된다. 간단하게 요약을 하자면, lo0(loopback) 디바이스의 80 또는 8080 포트를 127.0.0.1 8080 으로 리다이렉트 시킨다는 말이다.
-
/etc/pf.conf 파일을 vi에디터로 연다. 물론 해당 파일도 시스템과 관련된 파일이기 때문에 super user의 권한이 필요하다. sudo vi /etc/pf.conf
-
해당파일의 rdr-anchor “com.apple/*”: 다음줄에 rdr-anchor “com.test”를 추가한뒤, load anchor “com.apple” from “/etc/pf.anchors/com.apple”: 다음줄에 load anchor “com.test” from “/etc/pf.anchors/com.test” 를 추가한다.
-
이제 아래 명령어를 실행한다. sudo pfctl -f /etc/pfconf sudo pfctl -e
위의 내용을 따라하다보면 anchor라는것이 자주 보이는데 anchor는 iptables의 ruleset처럼 사용자 또는 시스템에서 정의한 rule들의 집합(table)을 말한다.
맨 아래의 pfctl 명령어의 f옵션은 파라미터로 오는 파일 옵션으로 ruleset을 변경하는 옵션이다. e옵션은 설정한 필터를 적용한다는 옵션이다.
pfctl 명령어는 다음 사이트 를 참고하면 된다.
anchor에 대한 내용은 다음 사이트를 참고하면 된다.