樹莓派開啓透明代理

在樹莓派上實現一個透明代理(設備連接上樹莓派開放的熱點,然後流量自動經過代理從有線網絡出去)非常容易,只需要在開始前明確一下自己的需求是什麼就好了,首先開熱點的需求,我們需要一個 hostapd,注意開了熱點之後並不是直接就可以連接上來用了,hostapd啥都好,就是沒有 DHCP 功能,這樣對於那些喜歡連上熱點之後就急忙想着看 PH 的同學來說就不很友好了,所以我們還需要一個被稱爲 dnsmasq的軟體來負責 DHCP 分配(也就是一個 dhcpd啦),相關的軟件其實網上能找到很多的替代品,但是這裏個人感覺比較簡單的一個方式是通過以上兩個軟件,所以就記錄一下咯~

本例中我用的是樹莓派官方的 raspbian ,直接 apt install安裝 hostapddnsmasq,然後分別創建兩個配置文件(分別位於:/etc/hostapd.conf/etc/dnsmasq.conf,內容如下:

interface=wlan0
hw_mode=g
channel=10
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
wpa_passphrase=PASSWORD
ssid=SSID

以上配置指定了我們將使用 wlan0 網卡開熱點,如果你的樹莓派無線網卡不是這個名字的話,需要自行修改,然後 ssidwpa_passphrase 改成自己喜歡的就好了。

#this line existes to make sure below starts in a new line
interface=wlan0
dhcp-range=192.168.33.24,192.168.33.200,255.255.255.0,12h

以上配置說明了我們的網卡接口是 wlan0 (也就是用來開熱點的無線網卡),IP 地址分配段是 192.168.33.24 ~ 192.168.33.200 分配了一個 /24 的段,DHCP 地址過期時間是 12 小時。

由於我們需要將無線網絡流量轉發到有線網卡上,所以我們需要在 /etc/sysctl.conf 中追加如下行,保存退出後通過 sysctl -p 立即生效.

net.ipv4.ip_forward=1

最後如果需要開機啓動(其實一般不需要那樣)的話可以在 /etc/rc.local 中如下寫,不過一般按需開啓的話就寫一個 bash 文件就好了,內容可以如下:

ifconfig wlan0 down
ifconfig wlan0 192.168.33.1 netmask 255.255.255.0 up # 這一步是用來設置無線網卡作爲熱點時自己的 IP 地址,
iwconfig wlan0 power off
service dnsmasq restart
hostapd -B /etc/hostapd.conf & > /dev/null 2>&1
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE  # 這裏是轉發流量到 eth0 ,請仔細觀察自己的網卡名稱,別直接照抄
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT  # 這裏同理,看清楚網卡名
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT # 同理

這裏有個坑需要注意一下,樹莓派的默認有線網卡地址可能並不是 eth0 ,所以最好先 ifconfig 確認一下自己有線 interface 名稱。

之後需要開啓 ss-redir 開啓代理轉發,相關配置方法可以參考: Linux 开启热点并转发代理流量使 Blackberry Passport 出墙