![Softether VPN - 如何在不关闭 SecureNAT DHCP 的情况下设置 Squid 代理?](https://linux22.com/image/733197/Softether%20VPN%20-%20%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E5%85%B3%E9%97%AD%20SecureNAT%20DHCP%20%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E8%AE%BE%E7%BD%AE%20Squid%20%E4%BB%A3%E7%90%86%EF%BC%9F.png)
我有一个 Softether VPN 服务器正在运行,并配置为使用 DHCP(SecureNAT)而不是本地桥接,因为我不知道该怎么做(尽管阅读了互联网上所有可用的教程)。所以我想我应该放弃这整件事。
现在我如何通过 squid 安装(现在未安装)重定向所有流量并让它按应有的方式处理所有流量?
答案1
设置本地桥接。运行 sudo vpncmd 并返回管理员菜单。如果之前启用了 SecureNAT,请禁用它:
VPN Server/DEFAULT>SecureNatDisable
SecureNatDisable command - Disable the Virtual NAT and DHCP Server
Function (SecureNat Function)
The command completed successfully.
VPN Server/DEFAULT>
现在我们创建一个桥接设备。我们将创建一个 tap 设备,而不是使用现有设备进行桥接,因为这似乎可以简化透明代理设置。我假设您将桥接设备称为 soft,但这个选择是任意的。前缀 tap_ 将自动添加到此名称。我们使用命令 BridgeCreate,它采用 hub DEFAULT、命名参数 /DEVICE(设备名称为 soft)和命名参数 /TAP(值为 yes)。
VPN Server/DEFAULT>BridgeCreate DEFAULT /DEVICE:soft /TAP:yes
BridgeCreate command - Create Local Bridge Connection
....
The command completed successfully.
VPN Server/DEFAULT>BridgeList
BridgeList command - Get List of Local Bridge Connection
Number|Virtual Hub Name|Network Adapter or Tap Device Name|Status
------+----------------+----------------------------------+---------
1 |DEFAULT |soft |Operating
The command completed successfully.
VPN Server/DEFAULT>exit
现在我们为 VPN 子网启用 DHCP 服务器。我按如下方式配置了 /etc/dhcpd.conf。重要的是子网 10.10.1.0。
/etc/dhcpd.conf
# /etc/dhcpd.conf
# option definitions common to all supported networks...
option domain-name "xxx";
# DNS servers
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
# Use this to enable / disable dynamic dns updates globally.
ddns-update-style none;
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
subnet $PUBLIC_IP netmask 255.255.255.0 {
}
subnet $PRIVATE_IP netmask 255.255.128.0 {
}
subnet 10.10.1.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option routers 10.10.1.1;
range 10.10.1.47 10.10.1.57;
}
接下来我们启动tap设备和DHCP服务器:
sudo systemctl start network@tap_soft
sudo systemctl start dhcpd4@tap_soft
将这些作为依赖项添加到 softethervpn-server.service 是明智之举。可以通过安装以下覆盖来完成:/etc/systemd/system/softethervpn-server.service.d/dhcpd.conf
# /etc/systemd/system/softethervpn-server.service.d/dhcpd.conf
[Unit]
Before=dhcpd4@tap_soft.service network@tap_soft.service
Requires=dhcpd4@tap_soft.service network@tap_soft.service
在为 VPN 设置流量转发之前,我们必须确保内核中启用了 ipv4 转发。创建以下覆盖文件,然后运行sysctl --system
. /etc/sysctl.d/ipv4_forwarding.conf
# /etc/sysctl.d/ipv4_forwarding.conf
net.ipv4.ip_forward = 1
最后,我们必须将流量从 Tap 设备转发到 Internet 设备。您可以使用 iptables 发出以下命令,或配置 ufw 在启动时添加它们。
首先,接受来自 VPN 的所有流量:
sudo iptables -A INPUT -s 10.10.1.1/24 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -s 10.10.1.1/24 -m state --state NEW -j ACCEPT
sudo iptables -A FORWARD -s 10.10.1.1/24 -m state --state NEW -j ACCEPT
还接受来自已建立连接的所有流量:
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
最后,将所有流量从 Tap 设备转发到 Internet 接口。如果您在服务器上使用静态 IP 地址,请使用以下命令:
sudo iptables -t nat -A POSTROUTING -s 10.10.1.1/24 -j SNAT --to-source $PUBLIC_IP
如果您的公共 IP 地址不是静态的,请使用以下命令:
sudo iptables -t nat -A POSTROUTING -s 10.10.1.1/24 -o eth0 -j MASQUERADE
透明代理
要代理 HTTP 连接(squid 或其他),请设置透明代理。来自 VPN 的所有 HTTP 请求都将自动通过代理进行代理。
首先,我们需要一条 iptables 规则。此规则将目标端口为 80 的 VPN 的所有流量转发到代理,并使用动态 NAT 来处理多路复用。
iptables -t nat -A PREROUTING -s 10.10.1.1/24 -p tcp -m multiport --dport 80 -j DNAT --to-destination $PRIVATE_IP:8118
8118
你的代理服务器的端口在哪里。
这是取自https://www.williamjbowman.com/blog/2015/12/22/a-transparent-ad-blocking-vpn-via-softether-privoxy/
希望这可以帮助。