OpenVPN 服务器未分配 IP

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'"

答案1

您正在使用tap-style 接口。默认情况下,OpenVPN 本身不会为其分配地址,但会将其桥接到当前网络,然后通过此网络中用于地址分配的方法分配地址。

显然,您尚未设置桥接部分,因此,如果您想继续进行样式tap设置,请查看OpenVPN 文档中的桥接部分看看这可能是什么样的例子。

但请记住,与设置相比,带有桥接的 TAP 会产生来自客户端广播流量的更多开销和噪音,并且更难过滤、塑造和排除故障tun

因此,我建议使用tun样式接口与代理 ARP 结合使用(如果你真的需要分配到客户端的公共地址)或地址转换(如果足以将到这些地址的流量转发到客户端)。请参阅“分发公共 IP”部分OpenVPN 2 指南有关如何使用代理 ARP 实现这一点的简单示例 - 它基本上与客户端地址分配以及一对/脚本ifconfig-pool一起使用,用于管理用于连接客户端的 ARP 条目和主机路由。topology subnetclient-connectclient-disconnect

相关内容