무엇이든 라우터로 만드는 방법
(nbailey.ca)- 일반 컴퓨터나 미니 PC를 활용해 완전한 라우터를 구성하는 절차를 단계별로 정리
-
Debian 또는 Alpine Linux 환경에서
hostapd,dnsmasq,bridge-utils등 최소 패키지로 유·무선 네트워크를 구성 - 이더넷 인터페이스 2개만 있으면 데스크탑, 노트북, SBC 등 어떤 장비도 라우터로 전환 가능
- 방화벽(nftables), DHCP/DNS 서비스, IP 포워딩 설정을 통해 상용 라우터 수준의 기능 구현
- 폐기 하드웨어와 오픈소스만으로 안정적이고 유연한 네트워크 인프라를 구축할 수 있음
어떤 기기든 라우터로 만드는 방법
- 미국 정부의 소비자용 라우터 수입 금지 조치 이후, 기존 하드웨어를 활용해 직접 라우터를 구성하는 방법을 소개
- Linux 기반 미니 PC를 이용해 수년간 안정적으로 라우터를 운용한 경험을 바탕으로, 필요한 구성과 설정 절차를 단계별로 정리
- 라우터는 본질적으로 일반 컴퓨터와 동일한 구조이므로, 데스크탑·노트북·SBC 등 다양한 장비로 구현 가능
- Debian 또는 Alpine Linux 환경에서 hostapd, dnsmasq, bridge-utils 등 최소 패키지로 구성
- 목적은 정책 대응이 아니라, 기존 하드웨어의 재활용과 네트워크 이해도 향상에 있음
하드웨어 선택
-
패시브 쿨링 미니 PC가 이상적이지만, 이더넷 인터페이스 2개만 있으면 어떤 장비도 사용 가능
- USB-Ethernet 동글로 보완 가능하며, 신뢰성은 다소 떨어지지만 충분히 동작
- 예시로 Celeron 3205U 듀얼코어(1.5GHz) 장비는 유선 820~850Mbps, 무선 약 300Mbps 처리 가능
- 과거에는 ThinkPad T60, ExpressCard-PCIe 브리지, Cisco 2960 스위치, D-Link 라우터(AP 전용) 등 폐기 부품으로 구성
- 외형은 조잡하지만 완전한 라우터로 동작
네트워크 구성
- 인터페이스 구성
-
eth0: WAN -
eth1: LAN (유선) -
wlan0: LAN (무선)
-
- 유·무선 LAN은 브리지(bridge) 로 묶어 동일 네트워크로 동작
- 추가 LAN 포트가 필요하면 USB-Ethernet 동글을 추가해 브리지에 연결 가능
- 운영체제는 Debian Linux, 필수 구성 요소는 다음과 같음
-
hostapd: Wi-Fi 네트워크 생성 -
dnsmasq: DNS 및 DHCP 서비스 -
bridge-utils: 포트 브리징
-
설치 및 초기 설정
- BIOS/UEFI 설정
- PXE 네트워크 부팅 비활성화
- USB/PCI 전원 관리 비활성화
- “AC 전원 복구 후 자동 부팅” 옵션 활성화
- 디스플레이 미연결 시 부팅 문제 해결용 HDMI 더미 동글 사용
- 일부 하드웨어는 non-free-firmware 저장소 활성화 필요
- 무선 칩셋별 펌웨어 설치
- Intel:
firmware-iwlwifi - Realtek:
firmware-ath9k-htc - 구형 Atheros:
firmware-atheros
- Intel:
필수 패키지 설치
- 다음 명령으로 주요 유틸리티 설치
sudo apt install bridge-utils hostapd dnsmasq - 전체 시스템 패키지는 약 250개 수준
네트워크 인터페이스 이름 고정
- 최신 Linux는
enp0s31f6형태의 이름을 사용하지만, 전통적 ethX 형식으로 고정 가능 -
/etc/systemd/network/10-persistent-ethX.link파일 생성[Match] MACAddress=AA:BB:CC:DD:00:11 [Link] Name=ethX
무선 네트워크 생성
- USB Wi-Fi 동글을 액세스 포인트(AP) 로 설정
-
/etc/hostapd/hostapd.conf예시interface=wlan0 bridge=br0 hw_mode=g channel=11 ssid=My Cool and Creative Wi-Fi Name wpa_passphrase=mysecurepassword -
hostapd서비스 활성화sudo systemctl unmask hostapd sudo systemctl enable --now hostapd
인터페이스 설정
-
/etc/network/interfaces구성allow-hotplug eth0 allow-hotplug eth1 auto wlan0 auto br0 iface eth0 inet dhcp iface br0 inet static bridge_ports eth1 wlan0 address 192.168.1.1/24 - 재부팅 후
brctl show br0명령으로 브리지 상태 확인
IP 포워딩 활성화
-
/etc/sysctl.d/10-forward.conf파일에 추가net.ipv4.ip_forward=1 - 적용
sudo systemctl restart systemd-sysctl.service
방화벽 및 NAT 설정
-
nftables 기반 구성(
/etc/nftables.conf)- 외부 트래픽 차단
- 내부 DNS, DHCP, SSH 허용
- NAT 수행
- 서비스 활성화
sudo systemctl enable nftables.service
DHCP 및 DNS 설정
-
dnsmasq사용(/etc/dnsmasq.conf)interface=br0 dhcp-range=192.168.1.50,192.168.1.250,255.255.255.0,6h dhcp-option=option:router,192.168.1.1 dhcp-option=option:dns-server,192.168.1.1 cache-size=10000 - 서비스 활성화
sudo systemctl enable dnsmasq
시리얼 포트 관리
- 장치에 시리얼 콘솔 포트가 있다면 모니터 없이 관리 가능
-
/etc/default/grub수정GRUB_CMDLINE_LINUX='console=tty0 console=ttyS0,115200n8' GRUB_TERMINAL=serial GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" -
systemctl enable [email protected]후sudo update-grub실행
동작 확인
- 재부팅 후
sudo nft list ruleset으로 방화벽 상태 점검 -
sudo nft -c -f /etc/nftables.conf로 설정 검증 -
sudo systemctl reload nftables.service로 무중단 규칙 갱신 가능 - DHCP 로그 확인
sudo less /var/lib/misc/dnsmasq.leases sudo journalctl -eu dnsmasq.service
추가 기능
- 로그 기록 및 트래픽 분석, VLAN 분리, IPv6 지원, VPN 터널링, 동적 라우팅(BGP, IGP) 등 확장 가능
- Prometheus 기반 모니터링, DMZ 포트 포워딩, 침입 탐지 및 차단 기능 추가 가능
- 단, 라우터 자체에 과도한 소프트웨어 설치는 피하고, DMZ나 VLAN으로 트래픽을 분리하는 것이 바람직
결론
- 무료 소프트웨어와 폐기 하드웨어만으로도 완전한 라우터 구축 가능
- 라우터는 결국 일반 컴퓨터에 불과하며, 누구나 직접 제작 가능
- 불필요한 장비를 재활용해 안정적이고 유연한 네트워크 인프라를 구축할 수 있음
Hacker News 의견들
-
훌륭한 글임. 내가 오랫동안 유지보수해온 create_ap 스크립트를 소개하고 싶음
GitHub 저장소에서 볼 수 있음.
이건 단 한 줄의 명령으로 어떤 Linux 컴퓨터든 WiFi 라우터로 바꿔주는 셸 스크립트임.
기본적으로 WiFi 카드를 AP 모드로 설정하고, WPA2/3, MAC 필터링, DHCP/DNS 서버까지 자동 구성함.
의존성도 거의 없고, NetworkManager도 필요 없음.
오래된 Atom 미니 PC로 집 인터넷 게이트웨이로도 썼고, IoT 기기 리버스 엔지니어링용 테스트 네트워크를 만들 때도 자주 사용함
관련 사례는 이 글에서 볼 수 있음- AP 모드에서 성능이 괜찮은 WiFi 칩셋 추천이 있을지 궁금함
-
많은 댓글이 “그냥 X 써라”라고 하지만, 이 글의 핵심은 라우팅의 최소 구성과 그 단순함을 보여주는 데 있음
Docker나 VM에서 NAT를 써본 적 있다면 이미 같은 일을 해본 셈임.
Android의 WiFi 핫스팟 기능도 결국 같은 Linux 커널 기능을 활용함.
지금 이 메시지도 아마 여러 개의 소프트웨어 라우터를 거쳐 전달되고 있을 것임- 나도 처음부터 직접 만들어보는 게 더 흥미로움. 그렇게 해야 스스로 구현할지, 아니면 기존 솔루션을 쓸지 판단할 수 있음
이런 접근은 좋은 소프트웨어 설계 원칙이라고 생각함 - 사실 어떤 컴퓨터든 마음만 먹으면 라우터가 될 수 있음
Windows의 Internet Connection Sharing도 결국 NAT를 켜는 체크박스였음
방화벽, 스위치, 파일 서버 등을 한 기기에 묶어 “라우터”라 부르는 게 사람들을 헷갈리게 하는 듯함
- 나도 처음부터 직접 만들어보는 게 더 흥미로움. 그렇게 해야 스스로 구현할지, 아니면 기존 솔루션을 쓸지 판단할 수 있음
-
이 글을 보니 예전 생각이 남. 내 첫 Linux 사용 목적이 남는 컴퓨터로 라우터 만들기였음
100MHz Pentium에 3Com ISA NIC 두 개 꽂고, IP-Masquerading HOWTO를 따라 설정했음.
이후 Robert Ziegler의 Linux Firewalls 책을 기반으로 발전시켰고, 스팸 필터나 Squid 캐시까지 얹어서 버려질 하드웨어를 꽤 유용하게 썼음- 나도 비슷한 길을 걸었음. 신문사 사무실의 ISDN 회선을 한 대의 컴퓨터로 공유했는데, 그게 웹사이트 구축으로 이어졌음
27년이 지난 지금도 여전히 “Linux와 고무줄, 클립으로 싸게 해결하는 법”을 묻는 사람들에게 불려감 - 예전에 Pentium MMX 200MHz로 부모님 집의 DSL이 끊겼을 때 OpenBSD 브리지로 임시 WiFi 연결을 만든 적 있음. 놀랍게도 충분히 빨랐음
- VLAN 지원 스위치만 있으면 NIC 하나로도 라우팅이 가능함
- 내 경우는 반대로, 처음엔 OpenWRT로 라우터 펌웨어를 플래싱하며 Linux를 배웠음
- 이제는 25년 된 책이라 너무 낡았음. 누군가 새로운 Linux 라우터 책을 써야 함
참고: Linux Routers - A Primer for Network Administrators
- 나도 비슷한 길을 걸었음. 신문사 사무실의 ISDN 회선을 한 대의 컴퓨터로 공유했는데, 그게 웹사이트 구축으로 이어졌음
-
나는 오랫동안 OPNsense/pfSense를 써왔고 강력히 추천함
자동 업데이트, 백업, WireGuard 터널, Suricata 기반 패킷 필터링 등 기능이 훌륭함
주말에 네트워크 관리할 때 터미널 대신 웹 UI로 설정할 수 있어서 편함
공식 사이트- 동의하지만 GUI가 Linux의 개념과 안 맞을 때가 많음. Barracuda 라우터를 쓰다 결국 SSH로 직접 명령어 입력해서 문제를 해결했음
pfSense, OpenWRT, Barracuda, Verizon OEM 등은 기능은 같지만 표현 방식이 제각각임 - 나는 이제 주말에 네트워크 관리하고 싶지 않음. TrueNAS처럼 완전한 어플라이언스형 라우터 배포판이 있으면 좋겠음
- OPNsense를 버린 이유는, 내가 하려던 설정을 제한했기 때문임.
“기기가 나보다 잘 안다”는 태도를 가진 제품은 싫음. 유연성 부족이 결정적이었음 - Linux로 배우는 건 좋지만, 라우터는 잘못되면 곤란함
Atom 미니 PC로 300Mb/s까지 라우팅했지만, 기가비트 인터넷으로 바꾸며 VM 기반 OPNsense로 전환했음
Intel 4포트 카드로 포트를 VM에 개별 패스스루하는 게 재미있음
- 동의하지만 GUI가 Linux의 개념과 안 맞을 때가 많음. Barracuda 라우터를 쓰다 결국 SSH로 직접 명령어 입력해서 문제를 해결했음
-
나는 N100 + 10Gbit 라우터 장비를 쓰고 있는데, 전용 하드웨어 라우터보다 지연(latency) 이 높은 것 같음
전용 칩셋은 패킷을 CPU 개입 없이 처리하므로 훨씬 효율적임.
실제로 이런 차이를 측정한 사람이 있는지 궁금함. 대부분은 대역폭 테스트만 함- 맞음, Linux bridge는 전용 스위치 ASIC만큼 빠를 수 없음
OpenWRT가 일부 하드웨어 스위치 API를 지원하지만, PCIe 카드 형태로는 거의 없음
Mikrotik의 CCR2004-1G-2XS-PCIe는 흥미로운 예임.
RouterOS가 돌아가는 완전한 라우터 보드를 PCIe로 연결하는 방식임.
25Gbps 포트를 활용할 수 있다면 가치가 있지만, 그렇지 않다면 RB5009와 큰 차이는 없음
- 맞음, Linux bridge는 전용 스위치 ASIC만큼 빠를 수 없음
-
관리형 스위치가 있다면 NIC 하나로도 라우터 구성이 가능함
802.1q 트렁크 포트로 설정하면 스위치를 인터페이스 확장기로 쓸 수 있음
내 집은 이런 “router-on-a-stick” 구성임.
PoE 스위치와 중고 Aruba IAP를 조합하면 소비자용보다 훨씬 품질 좋은 WiFi를 구축할 수 있음
예전엔 Thinkpad를 라우터로 썼지만, 지금은 Dell Optiplex로 바꿔서 VM도 함께 돌리는 홈랩 라우터로 사용 중임
Alpine Linux가 이런 용도로 아주 좋음- WiFi mesh의 지연 성능이 어느 정도까지 개선될 수 있는지 궁금함. 소비자용 라우터와 비교하면 얼마나 차이날까?
- 내 ISP 제공 AP도 기가비트 WiFi를 지원함. 다만 DNS를 강제 설정해 감시 목적이 있어 교체하려 함
같은 성능의 AP를 사려면 180달러 정도 들어서 아쉬움
-
라우터 수입 금지 정책의 정책적 이유가 궁금함
이미 대부분의 트래픽이 TLS로 암호화되어 있는데, 왜 여전히 위험하다고 보는지 의문임
혹시 봇넷, DDoS, 약한 기본 비밀번호, 또는 내부망 침투 같은 이유 때문인지?- 보안 업계에서는 이를 APT(Advanced Persistent Threat) 라 부름.
Volt Typhoon, Flax Typhoon 같은 사례들이 여전히 활동 중임.
외국 장비 금지로 완전히 해결되진 않지만, 보안은 제품이 아니라 과정이므로 공급망을 조절하는 건 필요함 - 네가 말한 모든 이유가 맞음. 추가로 “원격으로 장비를 꺼버릴 수 있는 능력”도 큰 위험임
예전에 Amazon에서 Bot Mitigation을 하며 전 세계 소비자 기기에서 발생한 트래픽을 본 적 있음.
절반도 안 되는 활성 기기만으로도 막을 수 없는 수준의 트래픽이 발생했음 - 사실 FCC가 진짜 보안을 걱정했다면 고유 비밀번호 의무화나 패치 미비 제조사 책임제를 도입했을 것임.
Huawei든 Netgear든 DDoS의 근원은 같음 - 이유는 여러 가지임
DNS/트래픽 메타데이터 접근, 내부망 공격, DDoS, 인터넷 차단 등
결국 감시와 통제 수단으로 악용될 수 있음 - 기술적으로는 맞음. TLS로 암호화돼도 메타데이터만으로도 충분히 감시 가능함.
외국 장비가 백도어를 가질 가능성은 현실적인 가정임
- 보안 업계에서는 이를 APT(Advanced Persistent Threat) 라 부름.
-
“그냥 OPNsense 써라”는 운영 환경에서는 좋은 조언이지만, 학습용으로는 최악임
이 글의 가치는 라우팅이 얼마나 단순한 원리로 동작하는지 보여주는 데 있음- SOHO급 장비는 진짜 의미의 라우팅을 하지 않음
-
글에서 언급되지 않은 부분인데, 라우터로 쓸 때는
/etc/sysctl.d/10_router.conf에net.ipv4.ip_early_demux = 0 net.ipv4.tcp_early_demux = 0 net.ipv4.udp_early_demux = 0같은 설정으로 오버헤드 감소를 할 수 있음.
VoIP나 게임용으로 지연과 지터를 줄이는 튜닝에 효과적임.
gro_flush_timeout, sch_cake, napi_defer_hard_irqs 등도 조정함.
가족들이 더 나은 게이밍 체감을 느끼게 하는 게 목표임- 나도 early_demux를 끄지만 실제 차이는 테스트해본 적 없음.
내 경우 fq_codel만으로도 10Gbps 환경에서 충분히 안정적임
- 나도 early_demux를 끄지만 실제 차이는 테스트해본 적 없음.
-
나는 오히려 광모뎀 대체가 더 궁금함
AT&T에서 받은 게 자주 느려지고 보안도 의심스러움.
직접 광모뎀으로 바꾸는 방법에 대한 가이드가 있을까 궁금함