Raspberry Pi 3 B 作为 VPN 热点 - 客户端没有互联网 - 两个 Wi-Fi 适配器

Raspberry Pi 3 B 作为 VPN 热点 - 客户端没有互联网 - 两个 Wi-Fi 适配器

目标

家庭网络 --> 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 会失败!即使经过哈希处理,我也遇到了这个问题。删除后,一切正常!

参考号:https://bit.ly/2g2NKfI


使用的配置

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

相关内容