如何通过 PPTP VPN 转发 hostapd 流量?

如何通过 PPTP VPN 转发 hostapd 流量?

我正在尝试设置自己的小型接入点,并且已经让它的两个核心元素正常工作。

  1. WiFi 接入点已连接。我可以在路由器上访问网络服务器
  2. 通过 SSH 进入路由器,我可以通过 PPTP 连接到外部互联网

有人知道有什么方法可以将这两个元素连接在一起吗?

答案1

首先需要启用 IP 转发:

echo 1 > /proc/sys/net/ipv4/ip_forward

然后假设你的 VPN 分配了一个静态 IP,你将需要 SNAT:

iptables -t nat -A POSTROUTING -o <TUNNEL INTERFACE> -j SNAT --to-source <VPN IP>

替换并视情况而定。如果您的 VPN 为您提供了动态 IP,则需要改用 MASQUERADE:

iptables -t nat -A POSTROUTING -o <TUNNEL INTERFACE> -j MASQUERADE

然后使用以下命令检查路由表是否正确:

route -n

检查是否有类似如下的一行:

0.0.0.0         <VPN ENDPOINT IP>     0.0.0.0         UG    2      0        0 <VPN INTERFACE>

如果缺失,请添加:

route add default gw <VPN ENDPOINT IP> dev <VPN INTERFACE>

每个发行版都有自己的方法来使这些变化永久/持久,所以我需要更多信息来在这方面提供帮助。

答案2

在安装了 pptpd 并努力让我的 VPN 连接在连接时转发任何流量后。我使用了下面的 iptables 规则,它运行得很好!我不需要任何 LAN 访问,所以我没有使用它们,但 VPN Client <-> World 帮了大忙。

如果有人想要的话我会在这里分享这些规则。

 # Allow traffic initiated from VPN to access LAN
iptables -I FORWARD -i ppp* -o eth0 \
     -s 10.0.0.0/24 -d 192.168.0.0/24 \
     -m conntrack --ctstate NEW -j ACCEPT

# Allow traffic initiated from VPN to access "the world"
iptables -I FORWARD -i ppp* -o eth1 \
     -s 10.0.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

# Allow traffic initiated from LAN to access "the world"
iptables -I FORWARD -i eth0 -o eth1 \
     -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

# Allow established traffic to pass back and forth
iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED \
     -j ACCEPT

# Notice that -I is used, so when listing it (iptables -vxnL) it
# will be reversed.  This is intentional in this demonstration.

# Masquerade traffic from VPN to "the world" -- done in the nat table
iptables -t nat -I POSTROUTING -o eth1 \
      -s 10.0.0.0/24 -j MASQUERADE

# Masquerade traffic from LAN to "the world"
iptables -t nat -I POSTROUTING -o eth1 \
      -s 192.168.0.0/24 -j MASQUERADE

当然,我假设你已经完成了

echo 1 > /proc/sys/net/ipv4/ip_forward

相关内容