使用带有虚拟接口的 TAP 的 OpenVPN

使用带有虚拟接口的 TAP 的 OpenVPN

我有一个梦想计算实例,它只有一个网络适配器,并且有一个公共 IP 地址。我正尝试运行 OpenVPN,将 TAP 接口桥接到虚拟接口,以便安全地从家里/工作/等处访问该实例。另外,作为一项额外的好处,我希望所有连接的客户端都能够相互通信。

客户端可以 ping 服务器,反之亦然,还可以访问互联网上的站点。但是,我无法访问实例上运行的任何服务(apache、pure-ftpd、samba、git 等)。我已将 192.168.2.1 设置为 apache2 上的监听地址,并在建立 vpn 连接后重新启动服务器,但仍然没有成功。

我错过了什么?

以下是我的详细信息:

eth0 is the interface with the public IP
Dummy interface: eth10:0
OpenVPN IP 192.168.2.1
OpenVPN DHCP IP's 192.168.2.200 - 192.168.2.254
208.xxx.xxx.1 in the openvpn config file is my public gateway on eth0

流程:

我加载我的模块:

modprobe dummy
modprobe bridge
modprobe br_netfilter
modprobe tun

通过 sysctl 设置转发:

sysctl -w net.ipv4.conf.all.forwarding=1

在服务器上我创建了一个虚拟接口,如下所示:

ip link set name eth10 dev dummy0
ifconfig eth10 hw ether 00:22:22:ff:ff:ff
ip addr add 192.168.2.1/24 brd + dev eth10 label eth10:0

然后我开始桥梁:

 # start bridge
 brctl addbr br0
 brctl addif br0 eth10:0
 brctl setageing br0 0 # for vmware?

 # start OpenVPN
 /etc/init.d/openvpn start

 tap="tap0"

 # add tap to bridge
 for t in $tap; do
     brctl addif br0 $t
 done

 # bring taps up and allow access
 for t in $tap; do
     ifconfig $t 0.0.0.0 promisc up
     iptables -A INPUT -i $t -j ACCEPT
 done

 # bring bridge up and assign internal IP
 ifconfig br0 192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255

 # allow NAT
 iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

OpenVPN 具有以下配置:

port 1194
proto udp
dev tap
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-auth ta.key 0
topology subnet
server-bridge 192.168.2.1 255.255.255.0 192.168.2.200 192.168.2.254
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
client-to-client
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
mssfix

#set the WINS server (SAMBA)
push "dhcp-option WINS 192.168.2.1"

#For windows, to make the network recognized
push "route 0.0.0.0 0.0.0.0 208.xxx.xxx.1"
cipher AES-256-CBC
auth SHA512

OpenVPN 日志行如下:

6 月 30 日 09:37:47 pubby systemd[1]: 开始与服务器的 OpenVPN 连接... 6 月 30 日 09:37:47 pubby systemd[1]: 正在启动 OpenVPN 服务... 6 月 30 日 09:37:47 pubby systemd[1]: 已启动 OpenVPN 服务。 6 月 30 日 09:37:47 pubby ovpn-server[25518]: OpenVPN 2.4.0 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] 构建于 2017 年 7 月 18 日 6 月 30 日 09:37:47 pubby ovpn-server[25518]: 库版本:OpenSSL 1.0.2l 2017 年 5 月 25 日,LZO 2.08 6 月 30 日 09:37:47 pubby systemd[1]: 已开始与服务器的 OpenVPN 连接。 6 月 30 日 09:37:48 pubby ovpn-server[25524]: 注意:将 LAN 适配器与 TAP 适配器桥接时,请注意,新的桥接适配器通常会采用自己的 IP 地址,该地址与 LAN 适配器先前设置的 IP 地址不同 6 月 30 日 09:37:48 pubby ovpn-server[25524]: 使用 2048 位密钥初始化 Diffie-Hellman 6 月 30 日 09:37:48 pubby ovpn-server[25524]: 传出控制通道身份验证:使用 512 位消息哈希“SHA512”进行 HMAC 身份验证 6 月 30 日 09:37:48 pubby ovpn-server[25524]: 传入控制通道身份验证:使用 512 位消息哈希“SHA512”进行 HMAC 身份验证 6 月 30 日 09:37:48 pubby ovpn-server[25524]: TUN/TAP 设备 tap0 已打开 6 月 30 日 09:37:48 pubby ovpn-server[25524]: TUN/TAP TX 队列长度设置为 100 6 月 30 日 09:37:48 pubby ovpn-server[25524]: 无法确定 IPv4/IPv6 协议。使用 AF_INET 6 月 30 日 09:37:48 pubby ovpn-server[25524]: 套接字缓冲区:R=[212992->212992] S=[212992->212992] 6 月 30 日 09:37:48 pubby ovpn-server[25524]: UDPv4 链接本地(绑定):[AF_INET][undef]:1194 6 月 30 日 09:37:48 pubby ovpn-server[25524]: UDPv4 链接远程:[AF_UNSPEC] 6 月 30 日 09:37:48 pubby ovpn-server[25524]: GID 设置为 nog​​roup 6 月 30 日 09:37:48 pubby ovpn-server[25524]: UID 设置为 nobody 6 月 30 日09:37:48 pubby ovpn-server[25524]: MULTI:已调用 multi_init,r=256 v=256 6 月 30 日 09:37:48 pubby ovpn-server[25524]: IFCONFIG POOL:base=192.168.2.200 size=55,ipv6=0 6 月 30 日 09:37:48 pubby ovpn-server[25524]: ifconfig_pool_read(),in='t430,192.168.2.200',TODO:IPv6 6 月 30 日 09:37:48 pubby ovpn-server[25524]: 成功 -> ifconfig_pool_set() 6 月 30 日 09:37:48 pubby ovpn-server[25524]: IFCONFIG池列表 6 月 30 日 09:37:48 pubby ovpn-server[25524]: t430,192.168.2.200 6 月 30 日 09:37:48 pubby ovpn-server[25524]: 初始化序列已完成 6 月 30 日 09:37:56 pubby ovpn-server[25524]: 73.81.xxx.xxx:43841 验证 OK: 深度 = 1,CN = ChangeMe 6 月 30 日 09:37:56 pubby ovpn-server[25524]: 73.81.xxx.xxx:43841 验证 OK: 深度 = 0,CN = t430 6 月 30 日 09:37:56 pubby ovpn-server[25524]: 73.81.xxx.xxx:43841 对等信息:IV_VER=2.4.0 6 月 30 日 09:37:56 pubby ovpn-server[25524]: 73.81.xxx.xxx:43841 对等信息:IV_PLAT=linux 6 月 30 日 09:37:56 pubby ovpn-server[25524]: 73.81.xxx.xxx:43841 对等信息:IV_PROTO=2 6 月 30 日 09:37:56 pubby ovpn-server[25524]: 73.81.xxx.xxx:43841 对等信息:IV_NCP=2 6 月 30 日 09:37:56 pubby ovpn-server[25524]: 73.81.xxx.xxx:43841 对等信息:IV_LZ4 = 1 6月30日09:37:56 pubby ovpn-server [25524]:73.81.xxx.xxx:43841 对等信息:IV_LZ4v2 = 1 6月30日09:37:56 pubby ovpn-server [25524]:73.81.xxx.xxx:43841 对等信息:IV_LZO = 1 6月30日09:37:56 pubby ovpn-server [25524]:73.81.xxx.xxx:43841 对等信息:IV_COMP_STUB = 1 6月30日09:37:56 pubby ovpn-server [25524]:73.81.xxx.xxx:43841 对等信息:IV_COMP_STUBv2 = 1 6月30 09:37:56 pubby ovpn-server[25524]: 73.81.xxx.xxx:43841 对等信息:IV_TCPNL=1 6 月 30 日 09:37:57 pubby ovpn-server[25524]: 73.81.xxx.xxx:43841 控制通道:TLSv1.2,密码 TLSv1/SSLv3 ECDHE-RSA-AES256-GCM-SHA384,2048 位 RSA 6 月 30 日 09:37:57 pubby ovpn-server[25524]: 73.81.xxx.xxx:43841 [t430] 使用 [AF_INET]73.81.xxx.xxx:43841 发起对等连接 6 月 30 日 09:37:57 pubby ovpn-server[25524]: t430/73.81.xxx.xxx:43841 MULTI_sva: 池返回 IPv4=192.168.2.200,IPv6=(未启用) 6 月 30 日 09:37:58 pubby ovpn-server[25524]: t430/73.81.xxx.xxx:43841 PUSH: 收到控制消息:'PUSH_REQUEST' 6 月 30 日 09:37:58 pubby ovpn-server[25524]: t430/73.81.xxx.xxx:43841 发送控制 [t430]: 'PUSH_REPLY,redirect-gateway def1pass-dhcp,dhcp-option DNS 8.8.8.8,dhcp-option DNS 8.8.4.4,dhcp-option WINS 192.168.2.1,route 0.0.0.0 0.0.0.0 208.xxx.xxx.1,route-gateway 192.168.2.1,ping 10,ping-restart 120,ifconfig 192.168.2.200 255.255.255.0,peer-id 0,密码 AES-256-GCM' (status=1) 6月30日 09:37:58 pubby ovpn-server[25524]: t430/73.81.xxx.xxx:43841 数据通道加密:密码“AES-256-GCM”使用 256 位密钥初始化 6月30日 09:37:58 pubby ovpn-server[25524]: t430/73.81.xxx.xxx:43841 数据通道解密:密码“AES-256-GCM”使用 256 位密钥初始化 6 月 30 日 09:37:58 pubby ovpn-server[25524]: t430/73.81.xxx.xxx:43841 MULTI:学习:92:34:xx:xx:xx:xx -> t430/73.81.xxx.xxx:43841dhcp-option DNS 8.8.8.8、dhcp-option DNS 8.8.4.4、dhcp-option WINS 192.168.2.1、route 0.0.0.0 0.0.0.0 208.xxx.xxx.1、route-gateway 192.168.2.1、ping 10、ping-restart 120、ifconfig 192.168.2.200 255.255.255.0、peer-id 0、cipher AES-256-GCM' (status=1) 6月30日 09:37:58 pubby ovpn-server[25524]: t430/73.81.xxx.xxx:43841 数据通道加密: 密码'AES-256-GCM' 使用 256 位密钥初始化 6月30 09:37:58 pubby ovpn-server[25524]: t430/73.81.xxx.xxx:43841 数据通道解密:使用 256 位密钥初始化密码“AES-256-GCM” 6 月 30 日 09:37:58 pubby ovpn-server[25524]: t430/73.81.xxx.xxx:43841 MULTI:学习:92:34:xx:xx:xx:xx -> t430/73.81.xxx.xxx:43841dhcp-option DNS 8.8.8.8、dhcp-option DNS 8.8.4.4、dhcp-option WINS 192.168.2.1、route 0.0.0.0 0.0.0.0 208.xxx.xxx.1、route-gateway 192.168.2.1、ping 10、ping-restart 120、ifconfig 192.168.2.200 255.255.255.0、peer-id 0、cipher AES-256-GCM' (status=1) 6月30日 09:37:58 pubby ovpn-server[25524]: t430/73.81.xxx.xxx:43841 数据通道加密: 密码'AES-256-GCM' 使用 256 位密钥初始化 6月30 09:37:58 pubby ovpn-server[25524]: t430/73.81.xxx.xxx:43841 数据通道解密:使用 256 位密钥初始化密码“AES-256-GCM” 6 月 30 日 09:37:58 pubby ovpn-server[25524]: t430/73.81.xxx.xxx:43841 MULTI:学习:92:34:xx:xx:xx:xx -> t430/73.81.xxx.xxx:43841

答案1

当 ICMP 工作但 TCP 不工作时,几乎总是防火墙问题。请验证服务器的 iptables 是否正常。

相关内容