В настоящее время я использую OpenVPN на своем VPS, прослушивая порт 1194 через TCP. Мне нужно использовать TCP, поскольку иногда мне нужно туннелировать трафик через HTTP-прокси. Однако я также хотел бы иметь возможность использовать UDP, который должен быть быстрее. Однако я не хочу создавать две подсети, так как мои машины также подключаются друг к другу, и я хотел бы, чтобы все они были в одной подсети.
Есть ли способ, которым два экземпляра совместно используют один пул IP-адресов?
Вот конфигурация моего сервера для справки:
dev tun
proto tcp
persist-key
persist-tun
log-append /var/log/openvpn
comp-lzo
port 1194
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
ifconfig-pool-persist ipp.txt
server 192.168.192.0 255.255.255.0
topology subnet
client-to-client
push "dhcp-option DNS 192.168.192.1"
push "dhcp-option DOMAIN my.example.com"
# Daemon settings
user nobody
group nogroup
Хорошо, я решил это.
Сначала я перешел на мостовую сеть. Я создал одно мостовое устройство и два подключенных ответвителя (у меня нет Ethernet-устройства на мосту). Сервер UDP прослушивает 192.168.192.1 [и tap0], TCP - 192.168.192.2 [и tap1]. Сам мост получает 192.168.192.1, но я не думаю, что это так важно. Оба имеют один и тот же файл ifconfig-pool-persist.
Это сработало, но я не мог подключиться от клиентов, подключенных через UDP, к клиентам, подключенным через TCP, или наоборот (клиенты с одним и тем же методом могли разговаривать друг с другом). Я добавил правило брандмауэра:
iptables -A FORWARD -i br0 -o br0 -j ACCEPT
и теперь все работает.
Трафик, который вы вводите в VPN, не зависит от протокола, используемого для туннеля. В туннель OpenVPN вы можете поместить любой трафик AFAIK (TCP, UDP, ICMP, ...).
РЕДАКТИРОВАТЬ : Я действительно не думаю, что у вас может быть два экземпляра OpenVPN с одной и той же подсетью, поскольку это дало бы вам невозможную таблицу маршрутизации. Что вы можете сделать, так это разделить подсети или маршрут между ними. Я никогда этого не делал, но думаю, что это сработает, есть основания.