樹莓派開啓透明代理 #
在樹莓派上實現一個透明代理(設備連接上樹莓派開放的熱點,然後流量自動經過代理從有線網絡出去)非常容易,只需要在開始前明確一下自己的需求是什麼就好了,首先開熱點的需求,我們需要一個 hostapd
,注意開了熱點之後並不是直接就可以連接上來用了,hostapd
啥都好,就是沒有 DHCP 功能,這樣對於那些喜歡連上熱點之後就急忙想着看 PH 的同學來說就不很友好了,所以我們還需要一個被稱爲 dnsmasq
的軟體來負責 DHCP 分配(也就是一個 dhcpd
啦),相關的軟件其實網上能找到很多的替代品,但是這裏個人感覺比較簡單的一個方式是通過以上兩個軟件,所以就記錄一下咯~
本例中我用的是樹莓派官方的 raspbian
,直接 apt install
安裝 hostapd
和 dnsmasq
,然後分別創建兩個配置文件(分別位於:/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
網卡開熱點,如果你的樹莓派無線網卡不是這個名字的話,需要自行修改,然後 ssid
和 wpa_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 出墙。