![使用带有虚拟接口的 TAP 的 OpenVPN](https://linux22.com/image/723933/%E4%BD%BF%E7%94%A8%E5%B8%A6%E6%9C%89%E8%99%9A%E6%8B%9F%E6%8E%A5%E5%8F%A3%E7%9A%84%20TAP%20%E7%9A%84%20OpenVPN.png)
我有一个梦想计算实例,它只有一个网络适配器,并且有一个公共 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 设置为 nogroup 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 是否正常。