Softether VPN - 如何在不关闭 SecureNAT DHCP 的情况下设置 Squid 代理?

Softether VPN - 如何在不关闭 SecureNAT DHCP 的情况下设置 Squid 代理?

我有一个 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/

希望这可以帮助。

相关内容