2015/4/18

【樹莓派】無線網路轉送有線網路橋接

參考下圖,需求是讓RPi連接無線的網路訊號並用網路線連接到一台電腦,讓電腦能夠透過樹莓派來上網。
無線網路的設定可以參考【設定無線網路】,這篇文章著重在有線的網路封包轉傳。在Linux上要實現封包轉送只需要設定好iptable就可以了!

首先編/etc/sysctl.conf檔案,將net.ipv4.ip_forward=1這行註解拿掉
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
重新載入設定檔,讓設定生效
sysctl --system

完成上述動作RPi的iptable功能就被啟動了,接著設定RPi的eth0網卡IP設定為192.168.0.1
,修改/etc/network/interfaces
#iface eth0 inet dhcp
allow-hotplug eth0
iface eth0 inet static
  address 192.168.0.1
  network 192.168.0.0
  netmask 255.255.255.0
  broadcast 192.168.0.255
  gateway 192.168.0.1
修改後重新啟動eth0
ifconfig eth0 down
ifconfig eth0 up

最後設定iptable,在家目錄下編輯一個新檔nat.sh
#!/bin/sh
IPT=/sbin/iptables
LOCAL_IFACE=eth0
INET_IFACE=wlan0
INET_ADDRESS=`ifconfig wlan0 | grep "inet addr" | cut -d ' ' -f 12 | cut -d : -f 2`

# Flush the tables
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD

$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT

# Allow forwarding packets:
$IPT -A FORWARD -p ALL -i $LOCAL_IFACE -j ACCEPT
$IPT -A FORWARD -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT

# Packet masquerading
$IPT -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_ADDRESS

執行nat.sh
chmod +x ~/nat.sh
~/nat.sh

到這裡一切就設定完成了,接著在電腦端設定固定IP(ex. 192.168.0.2)、路由與DNS等資訊就可以透過RPi上網了。

3 則留言:

  1. 請問這個動作【最後設定iptable,在家目錄下編輯一個新檔nat.sh】家目錄是在哪裡呢?我在/home/pi下面建立該檔案,後來執行都跟我說沒有這個檔案

    回覆刪除
    回覆
    1. 上面寫/nat.sh 所以應該是根目錄吧

      刪除
    2. 如果放在家目錄應該要把
      chmod +x ~/nat.sh
      ~/nat.sh
      改成
      chmod +x ~/home/pi/nat.sh
      ~/home/pi/nat.sh

      刪除