OpenVPN服务器不分配IP

我有这些公共IP地址的VPS:

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 

eth0configuration了静态IP。 网关是xx.xx.xx.254,networking掩码是255.255.255.0 ipv4_forward是1.我还没有iptables规则。 这台服务器不是站在NAT限制的networking后面。 (我不需要为任何地方的服务开放端口,只需设置服务并通过端口连接到服务器。)

我想让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作为networking掩码。 现在我无法连接这个IP的东西。 我的电脑尝试先用TAP适配器到达目的地,然后放弃并使用我的默认networking连接。 (WLAN)

这是OpenVPN服务器的configuration,我错过了什么吗?

 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身份validation,所以这是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本身不会默认分配一个地址,而是要被桥接到一个当前的networking中,在这个networking中,地址将被分配给这个networking中的地址分配。

显然,你还没有设置桥接部分,所以如果你想继续tap式的设置,看看OpenVPN文档中的桥接部分 ,看看这可能是什么样的例子。

请记住,与桥接的TAP会产生更多的来自客户端的广播stream量的开销和噪音,与tun设置相比,更难于过滤,整形和排除故障。

因此,我宁愿build议使用一个tun风格的接口连同代理ARP(如果你真的需要分配给你的客户端的公共地址)或地址转换(如果这足以使这些地址的stream量被转发到你的客户端)。 请看OpenVPN 2 cookbook中的“发送公共IP”一节,这个简单的例子就是如何使用代理ARP完成 – 它基本上将ifconfig-pooltopology subnet一起用于客户端地址分配和一对client-connect / client-disconnect连接客户端的ARP条目和主机路由的脚本。