Назад | Перейти на главную страницу

Сервер OpenVPN не назначает IP

У меня есть VPS со следующими общедоступными IP-адресами:

xx.xx.xx.192 (This IP-address is assigned to eth0)
xx.xx.xx.193
xx.xx.xx.194
xx.xx.xx.195
xx.xx.xx.196
xx.xx.xx.197
xx.xx.xx.198
xx.xx.xx.200
xx.xx.xx.201
xx.xx.xx.202

eth0 настроен со статическим IP. Шлюз - xx.xx.xx.254, сетевая маска - 255.255.255.0, ipv4_forward - 1. У меня еще нет правил iptables. Этот сервер не находится за сетью с ограничением NAT. (Мне не нужно где-либо открывать порты для служб, просто настройте службу и подключитесь к серверу через порт.)

Я хочу, чтобы сервер OpenVPN назначал клиентам все общедоступные IP-адреса, кроме .192, конечно.

Но когда я подключаюсь к серверу OpenVPN, я не получаю IP-адрес. Windows просто установила IP-адрес на адрес 169.xx.xx.xx (только локальный)

Я попытался сделать так, чтобы TAP-адаптер имел статический IP-адрес, xx.xx.xx.194 с xx.xx.xx.192 в качестве шлюза и 255.255.255.0 в качестве сетевой маски. Теперь я не могу что-то подключить по этому IP. Мой компьютер сначала пытается добраться до места назначения с помощью TAP-адаптера, затем он отказывается и вместо этого использует мое сетевое соединение по умолчанию. (WLAN)

Это конфиг сервера OpenVPN, я что-то пропустил?

mode server

dev tap

port 1197

proto udp

local xx.xx.xx.192

tls-server

dh /etc/openvpn/ssl/dh1024.pem

cert /etc/openvpn/ssl/server.crt

key /etc/openvpn/ssl/server.key

ca /etc/openvpn/ssl/ca.crt

reneg-sec 216000

ifconfig xx.xx.xx.193 255.255.255.0

push "route xx.xx.xx.194 255.255.255.0 net_gateway"

push "route-gateway xx.xx.xx.192"

push "redirect-gateway def1"

push "dhcp-option DNS 195.159.0.100"

push "dhcp-option DNS 195.159.0.200"

keepalive 5 60

comp-lzo

user nobody

group nogroup

persist-key

persist-tun

log /var/log/openvpn/main204.log

verb 1

mute 10

username-as-common-name

tun-mtu 1500

tun-mtu-extra 32

max-clients 30

auth-user-pass-verify "/etc/openvpn/script/login.sh" via-env

script-security 3

tmp-dir "/tmp"

tcp-queue-limit 128

txqueuelen 200

tcp-nodelay

inactive 600

client-connect /etc/openvpn/script/connect.sh

client-disconnect /etc/openvpn/script/disconnect.sh

cipher aes-128-cbc

Я использую аутентификацию MySQL, поэтому это сценарий login.sh:

//!/bin/bash

. /etc/openvpn/script/config.sh

//Authentication

user_id=$(mysql -h$HOST -P$PORT -u$USER -p$PASS $DB -sN -e "select user_id from ovpnuser where user_id = '$username' AND user_pass = '$password' AND user_enable=1 AND user_start_date != user_end_d$

//Check user

[ "$user_id" != '' ] && [ "$user_id" = "$username" ] && echo "user : $username" && echo 'authentication ok.' && exit 0 || echo 'authentication failed.'; exit 1

Это скрипт connect.sh:

//!/bin/bash

. /etc/openvpn/script/config.sh

//insert data connection to table log
mysql -h$HOST -P$PORT -u$USER -p$PASS $DB -e "INSERT INTO ovpnlog (log_id,user_id,log_trusted_ip,log_trusted_port,log_remote_ip,log_remote_port,log_start_time,log_end_time,log_received,log_send) V$

//set status online to user connected

mysql -h$HOST -P$PORT -u$USER -p$PASS $DB -e "UPDATE ovpnuser SET user_online=1 WHERE user_id='$common_name'"

Вы используете tap-стильный интерфейс. Сам OpenVPN не будет назначать ему адрес по умолчанию, но предназначен для подключения к текущей сети, где адрес будет назначен средствами, используемыми для назначения адреса в этой сети.

По-видимому, вы еще не настроили мостовую часть, поэтому, если вы хотите продолжить tap-стиль, взгляните на раздел Bridging в документации OpenVPN для примера того, как это может выглядеть.

Однако имейте в виду, что TAP с мостом будет создавать больше накладных расходов и шума от широковещательного трафика клиентов, и его будет труднее фильтровать, формировать и устранять неполадки по сравнению с tun настроить.

Таким образом, я бы рекомендовал использовать tun стиль интерфейса в сочетании с Proxy ARP (если вы действительно необходимость публичные адреса, назначенные вашим клиентам) или трансляцию адресов (если этого будет достаточно для пересылки трафика с этих адресов вашим клиентам). Взгляните на раздел «Выдача общедоступных IP-адресов» в разделе Поваренная книга OpenVPN 2 для простого примера того, как это достигается с помощью прокси-ARP - он в основном использует ifconfig-pool вместе с topology subnet для присвоения адреса клиента и пары client-connect / client-disconnect сценарии, управляющие записями ARP и маршрутами узлов для подключения клиентов.