안녕하세요. 나스 초보 입니다.
이번에 윈도우 랩탑에서
맥북에어 M1 + 아이패드로 넘어가기 위해서
미니데스크탑 Deskmini X300을 들였습니다.
X300을 24시간 켜놓고..
평상시에 집에서 윈도우로 작업하고
이동할 때는 맥북에어 쓰다가 윈도우가 필요할 때 수시로 RDP 열어서
작업하려고 합니다.
RDP를 위해서 공유기 설정을 공부 중인데요
궁금한 것이 있습니다.
외부에서 접속할 때는 공유기 포트포워딩을 해주라고 했는데
1) 공유기에서 굳이 외부포트, 내부포트를 나눠 놓은 이유가 뭘까요?
보안을 위해서 인가요? 블로그를 찾아봐도 정확한 정보가 없네요
실제로 rdp 포트를 3333 개방해 놓았다면,
외부포트 4444, 내부포트 3333
DDNS를 설정해 놓았다고 가정했을 경우
외부에서 ooo.ooo.ooo:4444 로 접속하면 잘됩니다.
2) 외부포트, 내부포트를 동일하게 설정해도 보안상 문제는 없을까요?
너무 기초적인 질문이라서 죄송합니다 ㅠㅠ
외부로 공개되는 ip인경우 가급적 포트를 전부 막습니다. 잘 알려진 포트로 공격이 들어오기 때문에 외부 포트는 랜덤포트로 하고 내부 포트는 실서비스 하는 포트로 합니다
그리고 내부에서 사용하는 서비스가 많고 포트가 중첩될경우를 방지합니다 가령 예를 들어 외부ip:80 -> 192.168.0.1:80 과 외부ip:80 -> 192.168.0.2:80 일 경우 포트 중첩이 되어 설정 할수 없습니다 이경우 외부 ip:80을 외부ip:8080으로 다르게 해 줘야 합니다.
내부에서 동일한 포트를 사용하는 서비스는 1개밖에 못쓰게 됩니다.
공유기는 하나의 공인 IP로 여러개의 클라이언트를 연결하는 역할을 하는 기기이기때문에
외부포트와 내부포트 개념이 필요한것입니다.
공유기에 연결되는 인터넷 장비가 1개 뿐이라면 포트포워딩 개념이 필요 없습니다.
그냥 외부에서 들어온 포트를 그대로 전달해주면 되니까요.
-> 외부 3333 에서 들어온걸, 연결된 장비에 3333 으로 포워딩 해라~
문제는 공유기라는거... 공유기에는 인터넷 장비가 LAN 포트 개수만큼 연결 될 수 있습니다.
그럼 공유기에 연결된 기가가 A(192.168.1.11), B(192.168.1.12), C(192.168.1.13), D(192.168.1.14) 4개가 있다면 어떻게 될까요?
외부에서 접속하는 3333 포트를 공유기 내부에 연결된 A, B, C, D 4개중에서 어떤 장비에 전달해야 할까요?
그래서 포트 포워딩을 설정해줘야 합니다.
-> 외부 3333 에서 들어온걸, A(192.168.1.11)의 3333 으로 포워딩 해라~
-> 외부 2222 에서 들어온걸, B(192.168.1.12)의 3333 으로 포워딩 해라~
외부로 부터 들어온 포트를, 내부의 어떤 장비에 어떤 포트로 포워딩 할지를 결정해줘야지
공유기가 외부 인터넷과 내부에 연결된 다수의 장비들 간에 통신 관리가 가능해지게 됩니다.
그냥 포트를 동일하게 포워딩해도 동작에는 무방합니다.
다만 보안적인 측면에서 표준화된 포트를 그냥 사용하기 보다, 임의로 바꿔서 사용하는게 좋기 때문입니다.
포트를 열었다는건 외부로 부터 접근할 수 있는 구멍(?)을 오픈한 상태인데
남들 다 알고있는 FTP(21), SSH(22) 포트를 동일하게 사용하기 보다는
나만 알고 있는 포트로 포워딩해서 FTP(21 -> 3333) 처럼 사용한다면....
외부로 부터 포트 노출을 한번 감춰주는 역할을 해주기 때문에 다르게 사용하는걸 권장합니다.
리눅스의 conntrack 이라는 애가 해줍니다.
첫 패킷이 외부에서 내부로 들어오는 패킷인 경우에는, 이걸 수동으로 해줘야됩니다.
안 해주면 라우팅이 안 돼서, 공유기가 받고 버립니다.
버리는 이유를 좀 더 자세히 설명하면요.
리눅스 파일 /proc/sys/net/ipv4/ip_forward 값이 1 인 경우에,
리눅스 커널이 패킷이 도착한 해당 인터페이스 말고도,
ip addr 로 보이는 모든 인터페이스를 뒤져서 destination 에 적합한 애가 있으면 그쪽으로 보내주는데요.
내부 아이피로 안 바꿔주면, 들어온 인터페이스만 뒤지기 때문에 버립니다.
결론적으로, 원하시는 장비가 연결된 인터페이스 주소로 바꿔주셔야 됩니다.
이걸 수동으로 해주는 방법은 iptables 의 NAT 테이블에 넣어주면 됩니다.
말씀하신 포트포워딩은 DNAT 에 해당하는거고
destination address 를 바꿔주는 방식입니다.
아수스 공유기의 NAT 테이블을 리스트 한 결과입니다:
root@RT-AC86U-5240:/tmp/home/root# iptables -L -n -v -t nat
...
Chain VSERVER (1 references)
pkts bytes target prot opt in out source destination
109 6954 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2368 to:192.168.88.18:2368
1050 59760 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 to:192.168.88.18
...
포트는 바꿔도 되고 안 바꿔도 됩니다.