Vpn

當 VPN 在 DD-WRT 路由器和單獨的 VPN/直接客戶端上停止時,如何阻止網際網路訪問?

  • October 30, 2015

我正在使用 DD-WRT 3.0 路由器通過 openVPN 進行連接。在 LAN 中,192.168.1.50 是一個不應該通過 VPN 的設備。

如何將防火牆設置為 192.168.1.50 不通過 VPN 以及 當 VPN 斷開/斷開時如何使所有其他 IP 失去 WAN 連接?

或者

創建兩個子網,一個通過 VPN(wi-fi 設備),另一個直接(有線設備)當 VPN 掉線時讓 VPN 子網失去 WAN 連接

我對這兩種設置都沒有偏好。什麼都容易。

此規則不起作用(對於第一種情況):

iptables -I FORWARD ! -o tun1 -s 192.168.1.50 -j DROP

這是正在使用的路由表,路由器處於網關模式:

在此處輸入圖像描述

DD-WRT 論壇中的某個人幫助我以最好(最簡單)的方式解決了這個問題。

基於策略的路由是解決問題的選擇性 VPN 隧道部分的正確方法。它是您指定 OpenVPN 連接詳細資訊的欄位之一。您必須在此處輸入您想要通過 VPN 的設備。請注意,由於 DD-WRT 中的錯誤,路由器本身的 IP 不能在此列表中。

所以我設置了以下內容:

  • DHCP 提供 1 到 127。
  • 我想在 VPN 上使用的所有設備都分配了靜態 IP >127
  • 不應通過 VPN 的設備應獲得 <128 的靜態 IP 或僅接收 DHCP IP,該 IP <128
  • 基於策略的路由CIDR 是 192.168.1.128/25 (這意味著將所有 IP > 127 的設備通過 VPN

現在對於問題的第二部分,**當 VPN 關閉/失敗時,拒絕 WAN 訪問應該在 VPN 上的設備,可以通過在“**保存防火牆”部分輸入以下命令來完成:

iptables -I FORWARD -s 192.168.1.128/25 -o $(nvram get wan_iface) -m state --state NEW -j REJECT --reject-with icmp-host-prohibited 
iptables -I FORWARD -p tcp -s 192.168.1.128/25 -o $(nvram get wan_iface) -m state --state NEW -j REJECT --reject-with tcp-reset

關於上述命令的兩個注意事項:

  1. 它使用REJECT而不是DROP因為前者比後者更友好。DROP不響應並要求客戶端超時,這對使用者來說可能很煩人。相反,REJECT導致客戶端立即退出。
  2. 檢查的連接狀態是NEW。通過檢查 NEW,我們阻止了這些設備啟動出站連接,但不會阻止它們被遠端訪問並通過 WAN 發送回复(至少在 VPN 關閉時)。如果您想阻止遠端訪問以及--state NEW從這些規則中刪除。

要阻止普通 WAN 上客戶端的所有出站流量,您可以使用 nvram 變數get wan_iface

IPV4_WAN=$(nvram get wan_iface)
iptables -I FORWARD -s 192.168.x.x/24 -o "$IPV4_WAN" -j DROP

您需要定義特定的 IPv4 子網,注意不要阻塞整個 LAN 範圍!

這將阻止任何超出路由器的出站流量,當不在 VPN 介面上時,您可以通過traceroute對任何外部 IPv4 地址進行確認,您會發現在第一跳後流量將下降。

對於您的特定 IPv4 客戶端,我有點困惑。您不能為要訪問 VPN 的客戶端創建 IPv4 子網,然後根據范圍確保192.168.1.50客戶端不在其中嗎?然後只需添加一條ACCEPT規則以允許它正常使用 WAN 嗎?

iptables -I FORWARD -s 192.168.1.50 -o "$IPV4_WAN" -j ACCEPT

引用自:https://serverfault.com/questions/731844