dnsmasq
DHCP와 DNS 서버가 결합되어 있고 구성하기 쉬우므로이 용도로 패키지를 사용 합니다.
좀 더 '무거운'것을 원한다면 DHCP와 DNS에 각각 isc-dhcp-server
및 bind9
패키지를 사용할 수
있지만, 우리의 목적 상 dnsmasq
잘 작동합니다.
sudo apt-get install dnsmasq
인터페이스를 구성해야합니다. eth0
게이트웨이로 사용될 고정 IP 주소를 할당
합니다. 인터페이스 파일을여십시오
sudo nano /etc/network/interfaces
다음 eth0
과 같이 섹션을 편집하십시오 .
allow-hotplug eth0
iface eth0 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
다음으로을 구성합니다 dnsmasq
. 제공된 dnsmasq
구성 파일에는 사용 방법에 대한 많은 정보가 포함되어 있습니다. 그래서 나는 그것을 옮기고 새로운 것을 만들 것을 권합니다.
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf
다음을 새 파일에 붙여 넣기
interface=eth0 # Use interface eth0
listen-address=192.168.2.1 # listen on
# Bind to the interface to make sure we aren't sending things
# elsewhere
bind-interfaces
server=8.8.8.8 # Forward DNS requests to Google DNS
domain-needed # Don't forward short names
# Never forward addresses in the non-routed address spaces.
bogus-priv
# Assign IP addresses between 192.168.2.2 and 192.168.2.100 with a
# 12 hour lease time
dhcp-range=192.168.2.2,192.168.2.100,12h
/etc/sysctl.conf
패킷 전달을 사용 하도록 파일을 편집하십시오.
sudo nano /etc/sysctl.conf
다음에 재부트 할 때 패킷 전달을 사용 가능하게 #
하는 행의 시작 부분에서를
제거하십시오 net.ipv4.ip_forward=1
. 그러나 재부팅하지 않고 지금 시도하려면이 작업을 수행하십시오.
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
또한 Wi-Fi를 통해 연결된 장치와 RPi의 인터넷 연결을 공유해야합니다. eth0
와
사이에 NAT를 구성합니다 wlan0
.
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
그러나 Pi를 재부팅 할 때마다이 규칙을 적용해야하므로 sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
규칙을 파일에 저장하십시오 /etc/iptables.ipv4.nat
. 이제 다시 부팅 할 때마다이 작업을 실행해야합니다. 따라서 줄 바로 위와 /etc/rc.local
파일을
열고 다음 줄을 추가하십시오.sudo nano /etc/rc.local
exit 0
iptables-restore < /etc/iptables.ipv4.nat
그리고 그게 다야! 이제 RPi를 재부팅하면 인터넷에 액세스 할 수 있습니다
sudo reboot
최신 버전의 Raspbian에서는 위 구성이 작동하지 않습니다. 그래서 나는 고통을 덜게하는 스크립트를 만들었습니다.
파일의 전체 경로를 제공했는지 확인하십시오. 그리고 당신은 끝났습니다. 이제 재부팅하여 변경 사항을 확인하십시오.