Raspberry Pi 3B+ Wifi Ethernet Bridge

2020-01-29

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주소를 할당받습니다.

rpiraspberry piwifi

How to use ionicons in Devextreme Vuejs

Raspberry Pi Boot without screen on MacOS