• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글
피곤ㅠ

공유기 만드는건 엄청 어려운 일이네요

일회용아이 541

0

27

이번에 다들 좋다고 하시는 proxmox를 처음 써보는데요.

여기에 openwrt를 올리고 공유기 만들라고 했으나

5시간정도 씨름을 해도 결국 못했습니다.😂😂

 

어떻게하면 될까요 ㅠㅠ 오늘은 지쳐서 다음에 다시 도전해봐야겠네요....

 

지금까지 시도해본 결과입니다...

openwrt 주소를 수동 아이피로 192.168.1.1 설정하고 iptime에서 라우팅테이블로 설정하니까 

현재 pc(192.168.0.2)에서 openwrt(192.168.1.1)관리자 화면은 접속 되네요.

 

그런데 pc2에 dhcp 클라이언트로 192.168.1.x로 할당하고 싶은데 도저히 안되네요. 

dhcp 클라이언트로만 설정될뿐 실제 아이피 할당이 안됩니다;;; 

240501_130328.jpg

 

신고공유스크랩
27
일회용아이 글쓴이 2024.05.04. 13:35
klayf

도와주셔서 정말 감사합니다!!!!!!

99.9% 해결되었어요~

외부 인터넷 안되었던 문제는 wan에 랜포트 설정을 안하고 lan에 해서 그렇더라구요.240504_133012.jpg

이제 외부망도 문제 없이 됩니다!!! 감사합니다~

192.168.1.2 -> x.x.x.x(구글같은 외부망) 확인

192.168.1.2 -> 192.168.0.2 확인

 

다만... 문제가 하나 있는데, 이건 중요한것도 아니고 차차 확인 예정입니다.

192.168.0.2 -> 192.168.1.1, 192.168.1.2 불가

느낌이... 상위 공유기(192.168.0.1)에서 풀어줘야할거같아서 확인중입니다.

240504_133129.jpg

240504_133222.jpg

이렇게 해도 안되네요 하하;; ㅋㅋ

 

klayf 2024.05.04. 17:42
일회용아이

결론부터 말씀드리면, 현재 설정으로 0.x 대역에서 1.x 대역의 접근은 불가능한 것이 정상입니다!

(정확하게는, 불가능해야만 합니다)

 

해당 현상을 설명하려면 두 기기의 통신 과정에 조금 더 깊게 접근해야 합니다.

 

일반적으로 공유기는 마스커레이드(Masquerade)라는 과정으로 NAT(실제로는 포트까지 변환하므로 NAPT)를 통해 사설 주소와 포트를 공인 주소로 변환합니다.

 

기본적으로 NAT는 내부에서 외부로 포워드될 통신을 L3 수준까지 변장하여 단일 클라이언트처럼 만들고,

 

사전 정의된 보안 정책에 기반하여 외부 -> 내부의 접근을 통제하기 위한 방화벽의 기능이기 때문에 아이피타임과 같은 흔한 공유기일지라도 그 자체로 라우터 겸 게이트웨이(방화벽) 역할을 수행합니다.

 

그렇기 때문에 현재 OpenWRT 입장에서는 이미 내부 -> 외부로 Established 되어 Conntrack에 의해 추적되는 커넥션이 아니라면, 외부망에 해당하는 0.x 대역의 주소로 Input이 있더라도 모두 거부하게 되며 0.x 대역의 기기 입장에서는 1.x 대역의 존재를 알 수 없습니다.

 

이는 공유기 아래에 NAS 설치시, 외부에서 접근할 수 없는 것을 생각하시면 이해가 쉬우실 겁니다.

 

그리고 아시다시피 이를 해결하기 위해서는 공유기 특정 포트로 들어오는 패킷을 NAS라는 특정 클라이언트의 특정 포트로 전달되도록 포트포워딩이라는 소정의 DNAT 과정이 필요합니다.


위의 문제를 해결하려면 두 가지 방법이 있는데 간단하게 줄이면, OpenWRT를 공유기가 아닌 라우터로 동작하도록 설정을 변경하는 것입니다.

 

 

1. 서브넷 마스크를 변경하여 상위 공유기까지 단일 서브넷으로 통일

 

1-1. 설명

 

처음에 구성하실 때 lan의 서브넷 마스크를 23비트(254.0)으로 설정하셔서 24비트(255.0)으로 변경을 요청드렸는데, 그 이유를 더 자세히 설명드리면 아래와 같습니다.

 

Out of the Box 상태의 OpenWrt는 공유기로 동작하도록 NAT가 기본적으로 활성화 되어있고 DHCP 서버(dnsmasq)도 포함되어 있는데, lan 인터페이스에 대해 1.x로 23비트 마스크(와일드카드 1.255)로 설정하면 외부망에 해당하는 0.x/24 네트워크와 동일한 서브넷에 속하게 됩니다.

 

즉, 공유기로 치면 공인 IP와 동일한 서브넷에 속하는 내부망이 만들어지게 되고 동일 서브넷에서 통신하는데 마스커레이드 및 별도 옵션 없는 DHCP 서버가 구축되게 되어 참조 가능한 경로가 중복되는 라우팅 오류 또는 경로 플래핑, DHCP 할당 오류 등이 발생함을 물론, 동일 서브넷에 속함에도 불구하고 마스커레이드 때문에 0.x 대역에서 1.x 대역으로 통신이 불가능합니다.


1-2. 처음에서 23비트 마스크로 아이피타임 설정 페이지 접속이 가능했던 이유

 

처음에 올려주신 설정으로는 MASQ(마스커레이드)가 이뤄지지 않고, 브릿지로 선언된 eth0에 lan과 wan의 인터페이스가 중복되어 서로 통신이 가능했으며 wan의 DHCP 클라이언트 설정은 정상이므로 0.x 대역에 대한 라우팅 경로는 Auto learn 되었을 것입니다.

 

위에서 언급했던 것과 같이 PC2는 lan2에 속하더라도 1.x 주소와 23비트 마스크 설정시 동일 서브넷이면서 OpenWrt 입장에서는 라우팅 테이블을 참조하여 호스트를 알고 있으므로 기본 게이트웨이로 보낼 필요 없이 192.168.0.1로 포워드할 수 있고, 아이피타임 라우팅 테이블 설정에서 1.x 대역을 PVE 주소로 설정하면 역시 포워딩이 가능하여 서로 통신할 수 있습니다.

 

그러나 이는 상위 공유기와 OpenWrt의 서브넷 마스크가 서로 다르게 설정되고 설정 인터페이스의 중복으로 브릿징과 라우팅이 혼재되며 발생한 불완전한 통신입니다.

 

1-3. 적용 방법

 

OpenWrt의 lan 인터페이스와 상위 공유기(아이피타임) 설정에서 내부 네트워크에 대해 255.255.254.0(23비트)로 설정합니다.

 

OpenWrt에서 dnsmasq를 끄거나 상위 공유기(아이피타임)의 DHCP 서버를 꺼서 DHCP 서버를 단일화해야 합니다.

 

이렇게 서브넷을 확장하시면 0.x과 1.x 대역이 동일한 네트워크에 속하게 되어 0.x과 1.x 대역의 L3 수준의 제한이 사라지므로 자유롭게 통신할 수 있습니다.

 

그러나 이 방법은 결정적으로... OpenWRT 및 1.x 대역을 구축한 의미가 완전히 사라지게 됩니다..ㅠㅠ

 


2. 상위 공유기의 0.x 대역 서브넷과 OpenWrt의 1.x 대역 서브넷을 나누고 두 기기간 라우팅 설정

 

가장 일반적인 네트워크 구축 방법입니다. (그러나 NAT 과정이 없으므로 공유기가 아닌 라우터/L3 스위치로 동작)

상위 공유기는 기존과 동일하게 게이트웨이로 두고 OpenWrt를 공유기가 아닌 라우터(L3 스위치)로 역할하도록 설정을 변경하는 것입니다.

 

이미 상위 아이피타임 공유기는 192.168.0.0/24에 대한 서브넷을 구성하고 기본 게이트웨이 역할을 하고 있습니다.

 

여기에 OpenWrt로 192.168.1.0/24의 서브넷을 새로 구축하고 여기에 연결되는 기기는 1.x의 ip 주소를 할당 받으며 구글이나 네이버 같은 외부 인터넷과 0.x 대역으로 접속시 OpenWrt를 통해 라우팅되어 상위 공유기로 포워드 되게 하는 것입니다.

 

이 경우 상위 공유기의 라우팅 테이블에는 OpenWrt의 wan 포트 0.x 대역 주소를 192.168.1.0에 대한 경로로 추가하고, OpenWrt의 라우팅 테이블에는 0.0.0.0/0 (Default Gateway)의 경로로 상위 공유기(192.168.0.1)를 지정해야 합니다.

 

이렇게 구축하면 두 서브넷간 DHCP 서버를 각각 구축할 수 있고(즉 0.x 대역 주소는 아이피타임 공유기가 할당하고 1.x 대역 주소는 OpenWrt의 dnsmasq가 할당), 공유기와 OpenWrt간 브로드캐스트 스코프가 구분되어 효율적입니다.


도움이 되셨기를 바랍니다...!!

일회용아이 글쓴이 2024.05.04. 18:37
klayf
와~~~~~~~ 이렇게까지 상세히 설명을 해주실줄은 몰랐습니다. 완전 선생님이십니다!!!

말씀해주신 바로 기존에 제가 했던 방식은, 지금 돌이켜보면 23비트로 아이피타임도 dhcp임대해주고openwrt도 임대해주는 혼선이였던거 같네요. 덕분에 많이 배워갑니다~~!
당연히 하위 공유기는 통신이 "당연히" 안되야한다니.... 저는 아직도 네트워크 기초도 없었던거 였습니다 ㅋㅋ

1번과 2번에 대해 꼼꼼히 읽어보았으나,
1번은 openwrt에서도 임대를 하고 싶기에, 제가 원하는 방식이 아니라서 적용시에 의미가 사라지게되는 경우네요. 아쉽지만 넘겨야겠습니다.
2번이 적합해보입니다~! 말씀해주신 방법으로 적용해보겠습니다~~

다시한번 정말정말 감사합니다~~!!!
profile image
행복구슬 2024.05.02. 00:35

proxmox opnsense설치해서 사용해봤는데 뭐 침입자도 없고 아수스공유기 aiprotection 기능이 훌륭해서 걍opnsense 삭제하고 안씁니다 침입자가 없다는것은  포트를 최대한 적게 열었다는 뜻이겠죠?  80.443  32400  헤놀드라이브  이정도만 열었습니다  서브도메인도 귀찮아서  npm도 최대한 서브도메인 적게 사용하고  전부 tailscale로 사용합니다  tailscale 설정하면 1대사용이아니고 제한없이 사용할수있거든요  proxmox 하고 tailscale 은 환상 조합입니다

profile image
수라 2024.05.02. 09:10
이글보니 아주 예전에 공유기 십만원 하던 시절 코요테 리눅스 가지고 공유기 만들었던 기억이 나네요 ㅎㅎ
123

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story