나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-04-04 11:40:04

인터넷 공유기/자작

파일:상위 문서 아이콘.svg   상위 문서: 인터넷 공유기
1. 개요2. 용도3. 장점4. 단점5. 직접 만들기
5.1. 컴퓨터 준비하기
5.1.1. CPU5.1.2. 그래픽카드5.1.3. RAM5.1.4. 메인보드5.1.5. OS 저장장치5.1.6. 네트워크 카드5.1.7. 전원공급장치5.1.8. 케이스5.1.9. 기타 구성 팁
5.2. 운영체제 준비하기
5.2.1. (1) 라우팅 전용 배포판5.2.2. (2) 리눅스 설치하기
6. 여담7. 관련 문서

1. 개요

Homebuilt Network Router / Homebrew Router / DIY Network Router
[ruby(自作, ruby=じさく)]ルーター

2000년대 초에는 지금과는 달리 인터넷 공유기를 저렴하게 구입할 수 없었다. 그래서 당시 대세이던 ADSL을 공유하기 위해 창고에서 잠자고 있던 구형 x86 PC[1]에 리눅스나 FreeBSD 등을 깔아 CLI로 명령어를 쳐서 설정하는 공유기를 직접 제작 및 운용하기도 했었다. 일명 '소프트웨어 라우터'. 당시 인터넷 환경상 10Mbps정도면 충분했기에 386 CPU에 4MB RAM 정도만 되어도 리눅스 깔아서 그럭저럭 사용할 수 있었던 모양. 이후 가정용 공유기가 시중에 매우 저렴하게 풀리고 아예 통신사들이 끼워주기까지 하는 현재 상황에서, 이것을 조립하는 것은 다소 생소하게 느껴지기도 한다.

그래도 현대 사회에서 매우 보편적으로 사용되는 AMD64 기반 데스크탑 컴퓨터는 이 '소프트웨어 라우터' 역할을 하기에 매우 힘차고 훌륭한 성능을 가지고 있다. 데스크탑의 확장 슬롯에 이더넷 카드(랜카드)를 설치해 이를 공유기로 활용할 수 있는데, 웬만한 고급 공유기 뺨을 후려치고도 남는 성능을 자랑할 것이다.



파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는
문서의 r732
, 6번 문단
에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r732 (이전 역사)
문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

2. 용도

보통은 이런 공유기가 필요하지 않지만, 일반 가정에서 다음과 같은 사용목적이 있다면 매우 유용하게 쓰인다.
VPN 서버 구축 목적으로도 자작 공유기를 활용할 수 있다.[5] 한국 가정집 대상 ISP의 인터넷 환경에서는 어떤 이유 때문에 VPN 서버 수요가 별로 없어서 큰 의미는 없지만, 인터넷 검열이 거의 없는 국가에서 거주하고 있는데 한국 같은 곳을 자주 방문할때 유료 VPN 서비스 대용으로 사용해 볼 만하다. 다만 이런 용도로 사용할 경우 랜카드가 주렁주렁 달린 공유기보다는 램 빵빵하고 VPN 구축용 OS 또는 소프트웨어가 설치된 서버를 자작하는 게 더 낫다.

그 외에도 QoS와 같이 가정용 공유기에서는 제대로 지원하지 않거나, 엔터프라이즈 레벨 이상에서야 지원하는 기능을 가정에서 사용하는 등 활용성은 그야말로 무궁무진하다.

3. 장점

4. 단점

5. 직접 만들기

5.1. 컴퓨터 준비하기

당연히 컴퓨터를 이용해 만들기 때문에 컴퓨터가 필요하다. 랜 포트가 달려있는 일체형 산업용 PC를 구입할 수도 있고, 데스크탑용 부품을 직접 조립할 수도 있다. 아래는 직접 조립하는 경우에 참고할 내용.

5.1.1. CPU

원하는 성능을 충족시켜줄만한 CPU가 필요하다. 소프트웨어 라우터는 거의 대부분의 연산을 전용 칩셋이 아닌 CPU에 의존하게 되므로 처리량이나 필요한 기능에 따라 적절한 CPU를 선택하는 것이 중요하다. 물론 일반적인 가정 사용 용도에서는 사무용 또는 저전력 제품이면 충분하며, VPN이나 각종 암호화 기능을 사용할 계획이라면 그러한 가속 엔진이 탑재된 CPU를 선택하면 된다.
2023년 기준 기가비트 수준의 단순 라우팅 연결에서는 셀러론을 사용하더라도 차고 넘치는 성능을 보여주므로, 굳이 비싼걸 살 이유는 없다. 네트워크 처리에는 그리 많은 성능이 필요하지 않다.

5.1.2. 그래픽카드

가능한 한 내장그래픽을 사용하자. 만약 내장그래픽이 없다면 저전력, 단순 디스플레이 표시 용도로 만들어진 그래픽 카드를 장착하면 된다. 하지만, 외장 그래픽을 장착하면 그만큼의 확장카드 슬롯을 차지하게 되는 것을 감안해야 한다.

5.1.3. RAM

임베디드용으로 자주 등장하는 용량의 메모리면 충분하다. 2023년 기준 2GB 혹은 4GB.
물론 무엇을 구동할 것인지에 따라 달라지지만, 리눅스를 사용하는 경우 메모리 사용량은 1GB를 채 넘기지 않으며, GUI를 사용해도 4GB면 충분하다. SQL 서버나 복잡한 웹 서버를 구동한다면 이보다 더 사용할 수 있지만, 그때부터는 라우터라고 부르기 민망해진다.

5.1.4. 메인보드

메인보드는 성능에 직접적인 영향을 미치지 않으므로, 장착하려는 확장카드 및 메모리, CPU 등에 맞춰서 구입하면 된다. 중요한 점은 장착하려고 하는 확장카드만큼 충분한 슬롯이 제공되는지 확인할 것. PCIe의 경우 사용하려는 카드의 버전을 지원하는지, 그 만큼의 레인(배속)을 지원하는지 잘 확인해야 한다. 네트워크 확장카드는, 아무리 하위호환이 지원된다고 한들, 버전이 다르면 느려지기 십상이므로 잘 확인하자.

5.1.5. OS 저장장치

다음과 같은 것들이 권장된다.
그리고, 다음과 같은 것들은 추천되지 않는다.

5.1.6. 네트워크 카드

대부분의 메인보드에는 랜포트가 장착되어 있다. 하지만 서버용 카드를 따로 구입하는 것을 추천한다. 그 이유는 단순한데, 라우터를 구성하면, 기가비트 환경 기준, 일반 데스크탑용 카드로는 표시된 대역폭 전체를 모두 사용할 수 없기 때문이다. 드라이버, 칩셋 통신 지연 시간 및 지터, 발열, 전기적 간섭 등 여러가지 이유로 필연적인 성능 하락이 발생하며, 서버용 카드는 대부분 이러한 것들을 고려하여 설계된다. 라우터는 받은 패킷을 다른 인터페이스로 전달하는 장비이므로, 일반적인 PC와 다르게 같은 패킷을 두 번 (혹은 그 이상) 처리하게 되는데, 데스크탑용 칩셋을 사용하면 CPU는 처리해도 랜카드가 이러한 수준의 입출력 속도를 감당하지 못하는 경우가 생긴다.

5.1.7. 전원공급장치

부품의 전력 사용량을 모두 감당할 수 있는 수준의 전원공급장치를 선택하면 된다. 일반적인 PC의 전력 사용량 비중이 대부분 그래픽카드에서 나오는 것을 고려하면, 그래픽카드를 사용하지 않는 라우터의 전력 사용량은 결코 크지 않다. 기가비트 카드에 펜티엄 기준 200W 정도면 남아돈다. 허나 이런 낮은 용량의 전원공급장치는 구하기 쉽지 않고, 가격 또한 비싸기 때문에 정격용량 500W급 정도인 전원공급장치를 구매하는 것을 추천한다.[7]

소프트웨어 라우터는 24시간 켜져있는 장비이다. 그리고 네트워크를 제공하는 장비이다. 전원 공급 부분이 부실하면 예상치 못한 순간에 네트워크를 사용할 수 없게 되거나, 심하면 이런 중요한 장비를 망가트려 인터넷 사용에 지장을 초래할 수 있다. 따라서 일반 PC를 조립할 때보다 가능한 안정적인 부품을 사용할 것을 권장하고, 신뢰할 수 없는 브랜드의 파워서플라이의 구입은 반드시 피하자.

5.1.8. 케이스

원하는대로 부품을 선택했다면, 적당한 케이스를 선택한다. 허브랙에 장착할 수 있도록 나온 랙 케이스나, 가전제품과 유사한 외관을 가진 HTPC 케이스 등을 고려해볼 수 있다.

5.1.9. 기타 구성 팁

5.2. 운영체제 준비하기

대부분의 라우터/방화벽용 운영체제는 리눅스 또는 유닉스 계열 운영체제를 사용한다. 물론 배포판이 있으며, 직접 설치할 수도 있다.

5.2.1. (1) 라우팅 전용 배포판

라우팅에 최적화된 OS를 설치하는 방법이 있다. 복잡한 설정을 건들이기 귀찮고, GUI가 필요하거나, 이제 막 시작하려는 경우 추천된다.

파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는
문서의 r103
, 5번 문단
에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r103 (이전 역사)
문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

5.2.2. (2) 리눅스 설치하기

조금 더 세부적인 설정을 할 수 있고, 필요한 경우 관련 프로그램을 직접 빌드해 적용할 수도 있다. 특히 배포판을 사용하는 경우에는 보안 업데이트 및 소프트웨어 업데이트를 자동화할 수 있다는 장점도 있다.

=====# 시스템 예시 #=====
아래 내용은 WAN 및 LAN 인터페이스가 각각 1개씩(wan0, lan0) 할당되고, IPv4를 지원하며, 내부(192.168.0.0/24, DHCP서버) 및 외부(DHCP클라이언트) 네트워크가 분리되고, 내부 네트워크에서 외부 네트워크로의 통신이 수립(via NAT, Masquerade)될 수 있는 환경에 대한 예시이다.

systemctl을 사용하는 리눅스 커널 6.3을 기준으로 systemctl의 구성 요소인 systemd-networkd와 Netfilter 구성 프로그램인 nftables를 이용한 예시를 설명한다.

1. sysctl을 사용하여 커널 매개변수를 수정해 커널이 ipv4 포워딩을 수행하도록 설정한다.
/proc/sys 디렉터리를 수정해도 동일한 결과를 받을 수 있으나, 재부팅 후 설정값이 초기화되므로 sysctl을 사용한다.
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/ipv4_forward.conf
위 명령어를 실행한 뒤 시스템을 다시 시작해 적용시킨다.

2. 인터페이스를 활성화하고, 한 인터페이스는 WAN, 한 인터페이스는 LAN 역할을 하도록 한다. (DHCP 설정 포함)
WAN 및 해당 인터페이스에 DHCP 클라이언트 설정:
nano /etc/systemd/network/20-wan.network
[Match]
Name=wan0
[Network]
DHCP=ipv4

LAN 및 해당 인터페이스에 DHCP 서버 설정:
nano /etc/systemd/network/20-lan.network
[Match]
Name=lan0
[Network]
Address=192.168.0.1/24
DHCPServer=yes

systemd-networkd 재시작:
systemctl restart systemd-networkd

위와 같이 설정하면 lan0 인터페이스에 연결된 기기가 IP를 자동으로 할당받을 수 있다.

3. Netfilter 방화벽 filter에서 forward를 허용하고, postrouting에 masquerade 규칙을 추가한다.
nano /etc/nftables.conf
table ip filter {
chain forward {
type filter hook forward priority filter; policy accept;
}
}
table ip nat {
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
oifname "wan0" masquerade
}
}

아래 명령어를 실행해 적용한다.
nft -f /etc/nftables.conf

6. 여담

알리익스프레스 등지에서 중국의 수많은 중소기업에서 제작한 완제품 소프트웨어 라우터를 팔고 있다. 부피와 전력소모를 줄이기 위해 노트북용 CPU를 사용하고 랜포트를 4개 이상 달아놓은 경우가 대부분이다. 추가확장을 포기한 대신 크기가 기성품 공유기 수준으로 작고 DC 전원을 사용해서 전원 연결하기가 간편하다는 장점이 있다. 이런 제품을 구입하고 라우팅 특화 OS를 설치하면 직접 조립한 소프트웨어 라우터와 동일한 기능을 한다. 다만 기업 국적이 국적이니만큼 장비의 신뢰성을 잘 따져보는 것을 추천한다. 보통 2.5GbE 4포트 + 아톰시피유를 장착한 베어본이 150불 전후로 팔리고 있다. 만약 하드웨어가 없어서 제로베이스로 시작된다면 가성비가 좋다.

노트북USB 3.0 포트가 많이 달려 있다면, 해당 포트마다 기가비트 USB 랜 어댑터를 달아서 운용할수도 있다. 이렇게 만들면 외관이 보통 지저분한게 아니지만, 화면을 여는 것만으로 많은 공간 차지 없이 모니터와 키보드가 달린 환경을 쉽게 마련할 수 있다는 장점이 있다. 필요에 따라 밖으로 쉽게 들고가서 유선랜 인프라가 있을때 좁은 범위 내에 간이 와이파이존을 만들어주는건 덤. 모뎀은 해당되지 않아서 의미는 없지만, 배터리가 멀쩡하다면 UPS처럼 정전시에도 잘 작동한다.

7. 관련 문서



[1] 2000년대 이전에는 컴퓨터의 성능 발전이 매우 빨랐기 때문에 당시 제법 괜찮은 성능의 컴퓨터를 장만해도 조금만 시간이 지나면 공간만 차지하는 퇴물단지가 되어버리기 일쑤였다.[2] 이 경우 공유기(또는 공유기 목적을 할 랜카드/컴퓨터의) MAC주소를 알려달라고 하는 경우가 있다.[3] 한국에 정식 출시된 10기가비트 가정용 공유기는 없다. 고로 직구를 해야 하고 당연히 항공운송을 하는 만큼 운송비가 비싸며 여기에 부가세는 비싼 제품 가격에 비례하여 별도 지불해야 한다.[4] 인텔 i5 린필드 760 , DDR3 PC3200 8GB 기준으로 1Gbps 정도의 속도를 가지는 OpenVPN 구동은 매우 여유있게 가능하다. 2.5Gbps까지도 2~3대 수준의 연결은 성능하락 없이 가능은 하며 WireGuard로 구성시 10Gbps도 3대정도는 까지는 아슬아슬하게 버텨준다.[5] 이것 또한 웬만한 기성품 공유기에 다 있지만, 역시 연산속도가 많이 느려서 속도가 잘 안나온다.[6] 일부 라우팅 특화 OS는 방화벽에서 SNI 검출 여부를 선택할 수 있다.[7] 저전력에서의 전력 효율을 위해 80Plus 인증을 고려할 수도 있다.[8] 다만 메뉴얼과는 별개로 이미지 자체는 지속적으로 업데이트되고 있다.