У меня запущен сервер Softether VPN и настроен на использование DHCP (SecureNAT) вместо локального моста, поскольку я не мог понять, как это сделать (несмотря на то, что прочитал все доступные учебники в Интернете). Так что я подумал, что просто бросу все это.
Теперь, как я могу перенаправить весь трафик через установку squid (сейчас не установлен) и позволить ему обрабатывать весь трафик должным образом?
Настройте локальный мост. Запустите 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/
Надеюсь это поможет.