Draft
2019-04-23
Origin Post
https://willhaley.com/blog/raspberry-pi-wifi-ethernet-bridge/
목표
라즈베리파이를 통해서 내 데스크탑을 와이파이에 연결합니다. 따라서 라즈베리파이를 Ethernet Bridge로 만듭니다.
준비물
- Raspberry Pi 3B+, 키보드, 마우스, 모니터
- 데스크탑과 와이파이 네트워크의 브릿지로 사용합니다.
- 라즈베리파이 3B+는 802.11ac 와이파이를 가지고 있어서 이 프로젝트에 적당합니다.
- 데스크탑: iMac 27
- 공유기: ipTime
- Raspbian Stretch
단계
sudo -Es
apt-get update && apt-get upgrade
라즈베리파이를 Wifi에 연결합니다. /etc/wpa_supplicant/wpa_supplicant.conf 파일을 열어서 아래와 유사하게 되어있는 걸 확인합니다. country_code는 US로 지정했습니다.
country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="YOUR SSID"
psk="YOUR PASSWORD"
}
아래 커맨드를 실행합니다.
systemctl enable wpa_supplicant && \
rfkill unblock wifi && \
systemctl restart dhcpcd
dnsmasq
를 설치합니다.
apt-get install dnsmasq
디렉토리를 만들고 iptables
룰을 저장합니다.
mkdir -p /etc/iptables
rules.v4
파일을 생성하고 아래 명령을 실행하여 iptables
룰을 생성하게 합니다.
cat <<'EOF' >/etc/iptables/rules.v4
# Generated by iptables-save v1.6.0 on Sat Apr 14 22:29:00 2018
*nat
:PREROUTING ACCEPT [98:9304]
:INPUT ACCEPT [98:9304]
:OUTPUT ACCEPT [2:152]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
# Completed on Sat Apr 14 22:29:00 2018
# Generated by iptables-save v1.6.0 on Sat Apr 14 22:29:00 2018
*filter
:INPUT ACCEPT [791:83389]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [333:34644]
-A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o wlan0 -j ACCEPT
COMMIT
# Completed on Sat Apr 14 22:29:00 2018
EOF
부팅할 때마다 iptables
룰을 로드할 수 있게 스크립트를 생성합니다.
cat <<'EOF' >/etc/network/if-up.d/iptables
#!/bin/sh
iptables-restore < /etc/iptables/rules.v4
EOF
위의 스크립트를 실행할 수 있게 모드를 변경합니다.
chmod +x /etc/network/if-up.d/iptables
부팅될때마다 ipv4 포워딩이 켜져있게 설정합니다.
sed -i'' \
s/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/ \
/etc/sysctl.conf
고정 IP주소 설정을 새로 만듭니다. eth0
어댑터는 10.1.1.1
이란 새 서브넷과 고정 IP주소를 갖게됩니다.
cat <<'EOF' >/etc/network/interfaces.d/eth0
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 10.1.1.1
netmask 255.255.255.0
gateway 10.1.1.1
EOF
dnsmasq
DHCP 설정을 /etc/dnsmasq.d/bridge.conf
에 생성합니다. 라즈베리파이는 이더넷을 통해 연결된 클라이언트에게 DHCP 서버로 동작합니다.
DNS 서버는 8.8.8.8
이 되고, 범위는 10.1.1.2
부터 시작합니다.
cat <<'EOF' >/etc/dnsmasq.d/bridge.conf
interface=eth0
bind-interfaces
server=8.8.8.8
domain-needed
bogus-priv
dhcp-range=10.1.1.2,10.1.1.254,12h
EOF
재부팅합니다.
reboot
View our current iptables to verify that they are loadng at boot as needed. iptables가 원하는 대로 잘 로드되었는지 확인하기 위해 다음 명령을 실행합니다.
iptables -L
이제, 라즈베리파이의 이더넷 포트에 데스크탑과 연결할 수 있습니다. 그리고 데스크탑은 라즈베리파이로부터 IP주소를 할당받습니다.