Softether VPN - Как настроить прокси Squid без отключения SecureNAT DHCP?
У меня есть сервер Softether VPN, работающий и настроенный на использование DHCP (SecureNAT) вместо локальных мостов, поскольку я не мог понять, как это сделать (несмотря на чтение всех доступных учебников в Интернете). Так что я подумал, что я бы просто бросил все это.
Теперь, как я могу перенаправить весь трафик через установку squid (не установлена сейчас) и позволить ему обрабатывать весь трафик как следует?
0 ответов
Настройте локальный мост. Запустите 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_ будет добавлен к этому имени автоматически. Мы используем команду BridgeCreate, которая принимает хаб DEFAULT, именованный аргумент /DEVICE с именем программного софта устройства и именованный аргумент /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
Теперь мы включаем DHCP-сервер для подсети VPN. Я настроил /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;
}
Далее мы запускаем устройство крана и сервер 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
Наконец, мы должны перенаправить трафик с устройства крана на интернет-устройство. Вы можете выполнить следующие команды с 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
Наконец, перенаправьте весь трафик от устройства крана к интернет-интерфейсу. Если вы используете статический 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 или что-то еще), настройте прозрачное проксирование. Все HTTP-запросы, поступающие из VPN, будут автоматически передаваться через прокси.
Во-первых, нам нужно еще одно правило iptables. Это правило перенаправляет весь трафик из VPN с портом назначения 80 на прокси-сервер, используя динамический 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/
Надеюсь это поможет.