추천, 2024

에디터의 선택

라우터 및 콘텐츠 필터로 라스베리 파이를 사용하는 방법

집에 자녀가 있으면 원하지 않는 특정 웹 사이트를 차단해야 할 필요성을 느꼈을 것입니다. 또 다른 공통된 문제 영역은 소셜 미디어 웹 사이트입니다. 어린이 (및 성인)가 Facebook, Twitter 등에서 너무 많은 시간을 낭비하고 차단하고 싶거나 적어도 특정 시간대에만 액세스 가능하게 만들 수 있습니다.

이를 가능하게하려면 랩탑, 스마트 폰 및 태블릿과 같은 모든 기기를 인터넷에 연결하는 기기 인 라우터콘텐츠 필터 가 필요합니다. 또한이 어플라이언스는 이러한 장치가 액세스하는 웹 사이트를 가로 채고 블랙리스트에있는 웹 사이트에 액세스하려고 시도하면 차단합니다.

시중에서 판매되는 상업용 콘텐츠 필터가 있지만, DIY 유형의 경우 재미가 없습니다. 따라서 우리는 손을 더럽 히고 일을 위해 나무 딸기 파이를 만들 것입니다. 우리는 작은 크기와 무시할만한 전력 소비로 인해이 프로젝트를 위해 라스베리 파이를 선택했습니다. 그러나이 지침은 Debian Linux 또는 파생 상품 (Ubuntu, Mint 등)을 실행하는 거의 모든 컴퓨터에서 거의 변경되지 않습니다 .

면책 조항 : 이 안내서는 중간 수준의 Linux 사용 경험과 문제가 발생했을 때 문제를 해결하고자하는 의지를 전제로합니다. 명령 줄 및 방화벽에 대한 이전 경험은 보너스입니다.

작동 원리

하드웨어

우리는 라즈베리 파이 3을 라우터 겸 컨텐츠 필터로 사용할 것입니다. 이를 위해 우리는 두 개의 네트워크 인터페이스 가 필요합니다. 하나는 인터넷에 연결하고 다른 하나는 다른 장치가 연결될 WiFi 핫스팟 역할을하는 것입니다. Raspberry Pi 3에는 이더넷 잭과 WiFi 모듈이 내장되어 있습니다. 따라서이 시나리오에서는 이더넷 케이블 ( eth0 )을 사용하여 인터넷에 연결하고 WiFi 모듈 ( wlan0 )은 핫스팟으로 사용합니다.

물론 이더넷을 사용하여 인터넷에 연결할 수있는 것은 아닙니다. 이 경우 내장 WiFi 모듈 ( wlan0 )이 핫스팟으로 작동하는 동안 인터넷에 연결하려면 호환되는 USB WiFi 동글 ( wlan1 )이 필요합니다. 이것이이 가이드에서 사용할 구성입니다.

Raspberry Pi 3은 대부분의 노트북과 스마트 폰을 갖춘 가정용 설치에 적합하지만 큰 사무실 설정에 필요한 성능을 제공하지는 않습니다 . 많은 클라이언트가 콘텐츠 필터에 연결하는 경우 더 많은 기능을 갖춘 하드웨어를 살펴보십시오.

소프트웨어

우수한 E2guardian을 사용하여 웹 요청을 가로 채고 필터링합니다. 콘텐츠 필터링은 차단 목록의 크기에 따라 성능에 영향을 줄 수 있으므로 Squid 캐시를 사용하여이 성능 저하를 상쇄합니다.

전제 조건

1. 최신 버전의 Raspbian OS가 설치된 Raspberry Pi 3 및 인터넷 액세스. Raspberry Pi를 시작하는 경우 Raspberry Pi 3을 시작하는 방법에 대한 안내서를 읽는 것이 좋습니다.

2. [선택 사항] USB WiFi Dongle - 이더넷 케이블을 사용하여 인터넷에 연결할 수없는 경우에만 필요합니다. 인터넷 연결과 핫스팟 모두에 WiFi를 사용하려면이 작업이 필요합니다.

3. 라즈베리 파이에 대한 물리적 액세스 -이 기사의 특성상, 헤드리스 모드에서 파이를 사용하면 방화벽 구성에서 실수로 Pi가 잠길 수 있습니다. 따라서 모든 것이 설정 될 때까지 모니터, 키보드 및 마우스를 연결하는 동안 모니터, 키보드 및 마우스를 연결하는 것이 좋습니다.

라우터로 라스베리 파이를 사용하십시오.

1. 이더넷 ( eth0 )을 사용하여 Pi를 인터넷에 연결하십시오 . USB WiFi 동글 (아마도 wlan1 )을 대신 사용하는 경우 인터넷에 연결하십시오. 내장 WiFi 모듈 ( wlan0 )은 그대로 두십시오.

2. 우리가 필요로하는 전제 조건 소프트웨어 를 얻으십시오 :

 sudo apt iptables iptables-persistent hostapd dnsmasq squid3 설치 

3. 우리는 Pi가 WiFi 핫스팟으로 작동 할 수 있도록 hostapd 를 설정합니다. 이를 위해, 좋아하는 텍스트 편집기 (예 : sudo nano /etc/hostapd/hostapd.conf 를 사용하여 설정 파일을 만들고 GitHub 페이지의 내용을 붙여 넣으십시오.

취향에 따라 수정할 수있는 일부 줄은 다음과 같습니다.

 ssid = RaspberryPiAP 

이 줄은 액세스 포인트의 이름을 지정합니다. 나는 RaspberryPiAP 선택했다.

 wpa_passphrase = beebom.com 

핫스팟에 액세스하는 데 사용되는 암호를 지정합니다. beebom.com 사용했지만 강력한 암호로 변경하는 것이 좋습니다.

4. 다음으로 dnsmasq 사용하여 DHCP 서버설정합니다 . 구성 파일 /etc/dnsmasq.conf 편집하고 끝에 다음 행을 추가하십시오.

[소스 코드] interface = lo, wlan0

no-dhcp-interface = lo

dhcp-range = 192.168.8.20, 192.168.8.254, 255.255.255.0, 12h [/ sourcecode]

이렇게하면 wlan0 (내장형 WiFi 모듈)의 인터페이스가 192.168.8.20 에서 192.168.8.254 범위의 클라이언트에 IP 주소를 할당합니다.

5. 내장 WiFi 모듈 wlan0 의 고정 IP 주소 를 설정합니다. /etc/network/interfaces 파일을 엽니 다. 아마 다음과 같이 보일 것입니다.

[소스 코드] source-directory /etc/network/interfaces.d

자동차
iface lo inet 루프백

iface eth0 inet 매뉴얼

허용 - 핫 플러그 ​​wlan0
iface wlan0 inet 매뉴얼
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

허용 - 핫 플러그 ​​wlan1
iface wlan1 inet 설명서
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]

여기에서 wlan0 다루는 굵게 표시된 행을 찾아서 변경 하면 파일이 다음과 같이 표시됩니다.

[소스 코드] source-directory /etc/network/interfaces.d

자동차
iface lo inet 루프백

iface eth0 inet 매뉴얼

허용 - 핫 플러그 ​​wlan0
iface wlan0 inet static
hostapd /etc/hostapd/hostapd.conf
주소 192.168.8.1
넷 마스크 255.255.255.0
허용 - 핫 플러그 ​​wlan1
iface wlan1 inet 설명서
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]

이것은 wlan0에 고정 IP 주소 192.168.8.1 을 설정합니다. 이 주소 는 나중에 Raspberry Pi와 통신 할 때 사용할 주소이기 때문에 기억하십시오.

6. 이제 IP 전달을 설정하십시오 . /etc/sysctl.conf 파일을 편집하고 다음 행을 추가하십시오.

 net.ipv4.ip_forward = 1 

7. 이제 방화벽에서 NAT (Network Address Translation)를 구성 할 것입니다. 이렇게하려면 다음 두 명령을 입력하십시오.

 sudo iptables -t nat -A POSTROUTING -s 192.168.8.0/24! -d 192.168.8.0/24 -j MASQUERADE sudo iptables-save | sudo tee /etc/iptables/rules.v4 

첫 번째 명령은 NAT를 설정하고 두 번째 명령은 현재 방화벽 구성을 /etc/iptables/rules.v4 라는 파일에 /etc/iptables/rules.v4 합니다. 이렇게하면 다시 부팅 할 때마다 구성이 유지됩니다.

8. 이 시점에서 Raspberry Pi를 재부팅하십시오 . 이는 구성 파일에서 변경 한 사항이 모두 작동하는지 확인하는 것입니다.

9. 재부팅 후 랩톱 및 스마트 폰과 같은 다른 장치에서 새로 만든 RaspberryPiAP 핫 스폿 (3 단계에서 이름을 변경하지 않은 경우)을 볼 수 있어야합니다. 지정한 암호를 사용하여 연결하고 인터넷에 액세스 할 수 있습니다.

저전력의 기본 라우터가 필요한 경우이 작업 만 수행하면됩니다. 콘텐츠 필터도 설정하려면 계속 읽으십시오.

E2guardian을 사용하여 콘텐츠 필터 설정

E2guardian은 기본 Raspbian 저장소에 없습니다. 설치하려면 프로젝트의 Github 페이지로 이동하여 armhf.deb 끝나는 파일을 다운로드하십시오. 이제 터미널을 열고 다운로드 폴더 (또는 파일 다운로드를 선택한 위치)로 이동하여 설치하십시오.

 cd ~ / downloads sudo dpkg -i ./e2guardian_*_jessie_armhf.deb 

E2guardian을 설치할 때 누락 된 패키지에 대한 몇 가지 오류가 표시됩니다. 이 문제를 해결하려면 설치가 끝나고 다음 명령을 입력하십시오.

 sudo apt-get install -f 

콘텐츠 목록 사용

/etc/e2guardian/lists 디렉토리에 여러 목록이 있습니다. 이 파일에는 bannedextensionlist, bannediplist, bannedphraselist, bannedsitelist, bannedurllist, 예외 목록 등이 포함됩니다. 이러한 파일은 주석으로 적절하게 문서화됩니다. 그들에게 익숙해 지도록보십시오.

예를 들어, 인기있는 소셜 네트워크차단 하려고한다고 가정 해 봅시다. /etc/e2guardian/lists/bannedsitelist 파일을 열고 Blanket SSL / CONNECT 블록 아래에서 (이 웹 사이트는 일반 http 대신 https 를 사용하므로) 다음 행을 추가하십시오.

 facebook.com twitter.com reddit.com 

이제 sudo service e2guardian reload 명령을 사용하여 E2guardian 서비스를 sudo service e2guardian reload ( 구성 파일을 수정할 때마다이 명령을 실행해야합니다 ). 콘텐츠 필터를 사용하는 모든 클라이언트는 이제 이러한 웹 사이트에 액세스 할 수 없습니다. 모바일 사이트 (예 : m.twitter.com) 및 전용 스마트 폰 앱조차도 작동하지 않습니다.

E2guardian은 기본적으로 포르노를 차단 합니다. 그것을 허용하고 싶다면 ( /etc/e2guardian/lists/bannedphraselist 우리가 판단하지는 않습니다.) /etc/e2guardian/lists/bannedphraselist 파일을 /etc/e2guardian/lists/bannedphraselist 다음 행을 찾으십시오 :

 .포함 

앞 부분에 해시 (# 기호)를 추가하여 주석 처리하여 다음과 같이 표시합니다.

 #.포함 

다시, sudo service e2guardian reload reload를 사용하여 구성을 다시로드하면 완료됩니다.

클라이언트 구성

이제 프록시 서버가 설정되었으므로 클라이언트를 구성 할 수 있습니다. 콘텐츠 필터를 사용하려면 모든 클라이언트를 Rapberry Pi의 핫스팟에 연결하고 프록시를 사용하도록 구성해야합니다. 프록시 구성은 모든 운영 체제 및 장치에서 다릅니다. 그러나 Windows 및 Android에서이 기능을 설정하는 방법을 시연합니다.

Windows

제어판> 네트워크 및 인터넷> 인터넷 옵션으로 이동하십시오 . 열리는 창에서 연결 탭으로 이동하고 LAN 설정을 클릭하십시오.

여기에서 고급을 클릭하고 프록시 주소로 192.168.8.1 을 입력하고 포트로 8080 을 입력하십시오. 모든 프로토콜에 대해 동일한 프록시 서버 사용 상자가 선택되어 있는지 확인하십시오. 확인을 클릭하십시오.

그것이 당신이해야 할 전부입니다. Chrome 및 Firefox와 같은 가장 널리 사용되는 웹 브라우저는 자동으로 시스템 프록시 설정을 선택합니다.

기계적 인조 인간

시스템 설정> WiFi로 이동하십시오. 이제 Raspberry Pi 핫스팟을 누르고 누른 다음 네트워크 수정을 선택하십시오. 고급 옵션 에서 프록시 옵션을 수동으로 설정하십시오. 이제 Proxy hostname 아래에서 Pi 192.168.8.1 의 IP 주소를 입력하십시오. 프록시 포트 아래에 8080 입력하고 저장을 누릅니다.

이제 프록시 구성을 테스트 할 수 있습니다. 블랙리스트에있는 웹 사이트로 이동해보십시오. 다음과 같은 "액세스 거부"페이지가 표시됩니다.

프록시 사용 시행

지금까지 우리는 콘텐츠 필터를 통해 인터넷을 사용하고 좋은 게임을하는 고객에게 의존하고 있습니다. 물론 이것은 거의 현실 세계에서 발생하지 않습니다. 따라서 모든 클라이언트가 프록시를 통과하도록하려면 다음 명령을 실행하십시오.

 sudo iptables -A PREROUTING -t nat -p tcp --destination-port 80 -j REDIRECT - 포트 8080 sudo iptables -A PREROUTING -t nat -p tcp --destination-port 443 -j REDIRECT --to - 8080 sudo iptables-save | sudo tee /etc/iptables/rules.v4 

이렇게하면 라스베리 파이의 핫스팟에있는 모든 http (포트 80) 및 https (포트 443) 트래픽이 콘텐츠 필터 프록시로 자동으로 리디렉션됩니다. 이제 기기에 프록시 설정을 구성하지 않아도 Facebook, Gmail, Twitter 등의 보안 https 웹 사이트에 액세스 할 수 없습니다. 이렇게하면 파이 핫스팟에 연결하려는 사람은 반드시 프록시를 통과해야합니다.

이는 콘텐츠 필터의 기본 사용법에 대해 알아야 할 모든 것입니다. 고급 기능을 배우고 싶다면 계속 읽으십시오.

고급 사용 시나리오

시간 기반 필터 설정

위의 콘텐츠 목록 사용 섹션에서 언급 한 웹 사이트를 차단하려는 경우 하루 중 특정 시간에만 차단한다고 가정 해 보겠습니다. 개인적으로 평일에는 업무 시간 (오전 9시 - 오후 5시) 동안 Reddit, Facebook 및 Twitter를 차단하는 것을 선호합니다. 왜냐하면 생산성이 악몽이기 때문입니다.

/etc/e2guardian/lists/bannedsitelist 파일을 열고 다음 행을 추가하십시오.

 시간 : 9 0 17 0 01234 

이 라인은 다음과 같이 작동합니다. 타이머는 0 (월요일)에서 4 (금요일)까지 17 시 (오후 4시 형식으로 오후 5시) 0 (00 분), 9시 (9시) 0 시에 시작됩니다.

다른 예를 들어 봅시다.

 시간 : 10 30 20 45 024 

이렇게하면 구성된 사이트가 월요일 (0), 수요일 (2) 및 금요일 (4) 오후 8시 45 분 (20 45)까지 오전 10시 30 분 (10 30)부터 차단됩니다.

특정 IP 주소가 프록시를 우회하도록 함

특정 IP 주소가 콘텐츠 필터를 우회하도록 할 수 있습니다. 이것은 방화벽구성하여 설정할 수 있습니다. dnsmasq.conf 에서 핫스팟을 설정하여 192.168.8.20 에서 192.168.8.254 사이의 IP 주소를 클라이언트에만 할당 할 수 있습니다. 즉, 192.168.8.2 에서 192.168.8.19 까지의 주소는 어떤 클라이언트에도 자동으로 할당되지 않습니다 (우리의 Raspberry Pi 자체에서 사용하기 때문에 192.168.8.1을 사용할 수 없습니다).

이렇게하려면 먼저 전체 액세스 권한을 부여 할 장치에 고정 IP를 설정하십시오. 예를 들어, Windows 시스템에서 정적 IP 192.168.8.2 를 설정하려면 다음 설정을 사용하십시오.

이제 Raspberry Pi에서 다음 명령을 실행하십시오.

 sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 --destination-port 80 -j RETURN sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 --destination-port 443 -j RETURN 

이제 장치 에서 프록시 사용을 비활성화하고 차단 된 웹 사이트를 열어보십시오. 당신은 그것을 열 수 있어야합니다. 허용 목록에 추가 할 IP 주소가 더있는 경우 위의 두 명령을 다시 실행하고 IP 주소를 원하는 주소로 바꿉니다. 허용 목록에 만족하면 다음 명령을 실행하여 방화벽 구성을 저장하십시오.

 sudo iptables-save | sudo tee /etc/iptables/rules.v4 

명심해야 할 중요한 점은 누구나 허용 된 IP 주소를 알리지 말아야한다는 것입니다. 그렇지 않으면 단순히 프록시를 우회하기 위해 장치를 해당 IP 주소로 설정할 수 있습니다.

보안 문제

귀하의 라즈베리 파이가 귀하의 모든 의사 소통을위한 출입구가 될 것이므로 보안을 유지하는 것이 중요합니다. 다음은 보안 향상 방법에 대한 몇 가지 팁입니다. 이것들은 단지 보안상의 함정에 대한 포괄적 인 목록이 아니라 기본적인 지침 일뿐입니다. 보안 수준은 네트워크 (가정, 소규모 사무실 등)의 성격과 사용자의 장난 정도에 따라 다릅니다.

불필요한 서비스 사용 중지

이 라우터이기 때문에 우리가 필요로하는 서비스 만 실행하는 것이 가장 좋습니다. 더 많은 서비스 실행은 잠재적으로 악용 될 수있는 더 많은 취약점을 의미합니다. 이 시스템을 일반 데스크탑으로 사용하지 마십시오 .

메뉴> 환경 설정> 나무 딸기 파이 구성으로 이동하십시오 . 인터페이스 탭에서 필요하지 않은 모든 서비스를 비활성화하십시오.

기본 암호 변경

신선한 Raspbian 설치에는 기본 사용자 'pi'에 대한 기본 암호 'raspberry'가 제공됩니다. 이 암호를보다 안전한 암호로 변경하는 것이 좋습니다. 이를 변경하려면 다음 명령을 실행하여 터미널을 엽니 다.

 passwd 

모니터 및 기타 주변 장치 분리

이 Pi에서 실행되는 소프트웨어는 라우터 및 웹 필터로 사용하기 위해 필요한 소프트웨어이므로 모니터 나 마우스 나 키보드와 같은 주변 장치가 필요하지 않습니다. 설정 등을 변경해야하는 경우 언제든지 SSH를 사용하거나 필요에 따라 모니터와 키보드를 연결할 수 있습니다.

자동 로그인 사용 중지

Raspbian은 암호를 요구하지 않고 'pi'사용자 자격 증명으로 자동 로그인하도록 설정됩니다. 일반용 패밀리 데스크탑에서는 좋지만 라우터에서는 위험 할 수 있습니다. 이 기능을 비활성화하려면 Raspbian 데스크탑에서 메뉴> 환경 설정> Raspberry Pi Configuration으로 이동하십시오 . 시스템 탭의 자동 로그인 제목 앞에서 사용자 'pi'로 로그인 확인란 선택을 취소하십시오.

동일한 대화 상자에서 부팅 설정을 To CLI 로 설정하는 것이 좋습니다. 이렇게하면 라우터에 GUI가 필요 없기 때문에 리소스를 절약 할 수 있습니다. 어떤 이유로 든 바탕 화면을 사용하려면 사용자 이름으로 로그인하고 startx 명령을 실행하여 그래픽 인터페이스를 켭니다.

일반적인 문제 해결

인터페이스의 이름이 계속 변경됨

파이에서 두 개의 무선 인터페이스 를 사용하는 경우 이는 매우 일반적입니다. 이더넷을 사용하여 파이를 인터넷에 연결하는 경우이 절을 무시해도 됩니다. 문제는 재부팅 후 두 무선 인터페이스 ( wlan0wlan1 )가 때때로 이름을 스왑한다는 것입니다. 즉, 내장 WiFi 모듈 wlan0wlan1 로 이름이 바뀌며 그 반대의 경우도 마찬가지입니다. 이것은 우리가 설정 파일에 대해 일관된 이름을 가지고 있기 때문에 큰 문제가됩니다. 다음은 다시 부팅 할 때 일관성있게 유지하는 방법입니다.

1. 인터페이스MAC 주소를 찾으십시오. ifconfig | grep HWaddr 명령을 실행하십시오. 당신의 나무 딸기 파이에 ifconfig | grep HWaddr . 다음과 같은 출력이 표시됩니다.

wlan0wlan1 섹션에서 'HWaddr'단어의 오른쪽에있는 텍스트를 기록 하십시오. eth0 섹션은 무시해도됩니다. 이것은 무선 인터페이스의 MAC 주소입니다.

어떤 MAC 주소가 어떤 인터페이스에 속해 있는지 잘 모르는 경우 USB WiFi 동글의 플러그를 뽑고 명령을 다시 실행하십시오. 지금 오는 wlan 공용 영역은 붙박이 WiFi 공용 영역이고, 다른 사람은 USB이다.

2. 원하는 텍스트 편집기를 사용하여 /etc/udev/rules.d/10-network.rules 파일을 새로 작성하십시오. 예 :

 sudo nano /etc/udev/rules.d/10-network.rules 

3. 이 파일에 다음 텍스트를 입력하십시오. xx : xx : xx : xx 등을 해당 MAC 주소로 바꿉니다 .

[sourcecode] # 내장 된 WiFi 모듈을 wlan0으로 설정하십시오. xx : xx : xx 등을
# 내장 모듈의 MAC 주소
SUBSYSTEM == "net", ACTION == "add", ATTR {address} == "xx : xx : xx : xx : xx : xx", NAME = "wlan0"

# USB WiFi 동글을 wlan1로 설정하십시오. yy : yy : yy 등을
# USB 동글의 MAC 주소
SUBSYSTEM == "net", ACTION == "add", ATTR {address} == "yy : yy : yy : yy : yy : yy", NAME = "wlan1"[/ sourcecode]

내장 WiFi 인터페이스의 MAC 주소가 wlan0에 해당하는지, USB WiFi가 wlan1에 해당하는지 확인하십시오.이 가이드는이 안내서에서 따라하기 때문에.

4. 라스베리 파이를 재부팅하십시오. 이제 인터페이스가 올바른 이름으로 시작됩니다.

방화벽 구성 재설정

또 다른 일반적인 문제는 잘못 구성된 방화벽입니다. 네트워크 구성에 따라 방화벽을 올바로 사용하기 전에 몇 가지 시도가 필요할 수 있습니다. 어느 시점에서든 방화벽 구성이 엉망이라고 생각하면 다음 명령을 실행하여 처음부터 시작하십시오.

 sudo iptables - 플래시 sudo iptables - 테이블 nat - 플래시 sudo iptables - 삭제할 - 체인 sudo iptables - 테이블 nat - 삭제 체인 

모든 방화벽 구성이 삭제 됩니다 . 이제 방화벽을 처음부터 구성 할 수 있습니다. 만족 스럽다면 sudo iptables-save | sudo tee /etc/iptables/rules.v4 구성을 영구적으로 만들려면 sudo iptables-save | sudo tee /etc/iptables/rules.v4 를 입력하십시오.

귀하의 라스베리 파이를 라우터 및 컨텐츠 필터로 사용하십시오.

그것은 라스베리 파이를 유력한 라우터와 콘텐츠 필터 프록시로 바꾸는 데 있습니다. GitHub 페이지에서 우리가 설정에 사용했던 정확한 설정 파일을 얻을 수 있습니다. 그것이 당신을 위해 어떻게 작동하는지 알려주십시오. 예상대로 작동하지 않거나 단계가 너무 혼란 스럽다면 아래 의견란에 질문 해주십시오.

Top