我知道以前已经有很多人问过这个问题了,但是其他所有问题都没有解决我的问题。
我的情况:我有一些服务器,它们通过 IP 地址连接到网络10.10.10.x
。其中一个服务器有第二个 NIC 192.168.1.1
。
我想要的是:
- 从 Windows 连接到 192.168.1.1
- 获取 10.10.10.x 范围内的 IP 地址
- 能够访问 10.10.10.x 上的所有内容
- 能够从服务器访问我的 Windows 客户端
这是我的server.conf
:
port 1194
proto udp
server-bridge 10.10.10.1 255.255.255.0 10.10.10.20 10.10.10.30
dev tap0
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
up /etc/openvpn/bridge-start
keepalive 10 600
comp-lzo
persist-key
persist-tun
verb 3
mute 20
status /var/log/openvpn-status.log
script-security 2
client-to-client
# The server doesn't need privileges
user openvpn
group openvpn
脚本如下bridge-start
:
#!/bin/bash
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
echo "adding $1 to bridge"
/usr/sbin/brctl addif br0 $1
/usr/sbin/ifconfig $1 up
client.ovpn
以下是我用来连接 Windows的摘录:
client
dev tap
proto udp
remote 192.168.1.1 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
comp-lzo
verb 3
(此后,证书信息开始)
当我连接时,OpenVPN GUI 告诉我我已获得10.10.10.20
分配的 IP 地址。我可以10.10.10.1
从 Windows 计算机 ping ,在 VPN 服务器上,我可以 ping 10.10.10.20
。但是,我无法访问任何其他计算机,例如,10.10.10.101
并且10.10.10.101
我也无法从 访问10.10.10.20
。
IP 转发已经处于活动状态,并且我eth1
事先进行了配置br0
:
eth1 的网络脚本:
TYPE="Ethernet"
BOOTPROTO="none"
IPV4_FAILURE_FATAL="no"
NAME="eth1"
DEVICE="eth1"
ONBOOT="yes"
BRIDGE=br0
脚本br0
:
TYPE="Bridge"
BOOTPROTO="none"
NAME="br0"
DEVICE="br0"
ONBOOT="yes"
IPADDR="10.10.10.1"
PREFIX="16"
后续行动1
我尝试使用 来捕获流量tcpdump
,以下是ping 10.10.10.101
从我的 Windows 机器中得到的结果:
# tcpdump -n -i br0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br0, link-type EN10MB (Ethernet), capture size 65535 bytes
15:24:26.893313 ARP, Request who-has 10.10.10.101 tell 10.10.10.20, length 28
15:24:27.763926 ARP, Request who-has 10.10.10.101 tell 10.10.10.20, length 28
15:24:28.763943 ARP, Request who-has 10.10.10.101 tell 10.10.10.20, length 28
因此看起来数据包到达了 VPN 服务器,但是服务器却没有应答。
我错过了什么?