目标:
家庭网络 --> wlan0 --> VPN --> wlan1 --> 热点
Raspbian Jessie 与 Pixel:
使用内置 Wifi 适配器连接到我的家庭网络,同时使用外部 Wifi 适配器作为主机。没有以太网。我已经尝试了一个多星期来设置我的 rpi 3 model b 以使用 hostapd 和许多 dhcp 配置通过 Hostpot 使用 VPN,但没有成功。
智慧之言: 不是新手也不是专家
我从许多在线文章中借用了我的步骤,但没有更新版本可以与新的 rpi 3 b 一起使用。我将在这里提供它们作为参考。
什么有效: wlan0 连接到 Pi 上的家庭网络 VPN,静态 IP 分配给 wlan1 Hostapd,isc-dhcp 驱动程序为 wlan1 安装 IP 地址,子网分配给客户端。
什么不是:客户端(手机)用VPN制作的热点
我的嫌疑人:iptables或网络接口或dhcpcd.conf(位于etc/dhcpcd.conf)
奇怪的场景:如果“# iface default inet dhcp”添加到接口,isc-dhcp 会失败!即使经过哈希处理,我也遇到了这个问题。删除后,一切正常!
使用的配置:
DHCPD:/etc/dhcp/dhcpd.conf:
subnet 192.168.42.0 netmask 255.255.255.0 {
range 192.168.42.10 192.168.42.50;
option broadcast-address 192.168.42.255;
option routers 192.168.42.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
ISC-DHCP 服务器:/etc/default/isc-dhcp-server:
INTERFACES="wlan1"
主机:/etc/hostapd/hostapd.conf:(此处使用自定义版本)
interface=wlan1
driver=rtl871xdrv
ssid=Net
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=Test123
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
/etc/default/hostapd:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
网络接口:/etc/网络/接口:
auto lo
iface lo inet loopback
iface eth0 inet manual
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#allow-hotplug wlan1
iface wlan1 inet manual
# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
up iptables-restore < /etc/iptables.nat.vpn.secure
DHCPCD:/etc/dhcpcd.conf:
interface wlan1
static ip_address=192.168.42.1/24
static routers=192.168.42.1
static domain_name_servers=192.168.42.1
网络地址转换:/etc/sysctl.conf:
net.ipv4.ip_forward=1
sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
VPN:
iptables -A INPUT -i tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i tun0 -j DROP
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sh -c "iptables-save > /etc/iptables.nat.vpn.secure"
不产生任何效果的规则:
iptables -A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan1 -o tun0 -j ACCEPT
结果:
VPN 可在 Pi 上运行。热点有效。客户端没有互联网。客户端(基本上是一部电话)会被分配正确的 IP 和子网掩码。无法浏览互联网。
是什么原因导致此失败?
答案1
您的规则不应该MASQUERADE
应用于 RPI 的物理接口吗tun0
?您希望来自 VPN 客户端的流量被NAT到您的 RPI 的 IP,以便您家庭的路由器可以通过您的 RPI 回复此类流量。
iptables --table nat --append POSTROUTING --src [network for your tun0] --out-interface wlan1 --jump MASQUERADE