我想要从服务器本身通过 SSH 访问 OpenVPN 服务器的每个客户端。
我不想启用该client-to-client
设置,因为我不想让每个客户端互相通信。我也不想访问客户端子网上的机器,只想访问实际的机器。
我能够建立一个隧道,并且可以从客户端 ssh 到服务器,但不能做相反的操作。
- VPN 上的服务器 IP:10.4.0.1
从ipp.txt
:
- 客户端 A 通过 VPN 的 IP:10.4.0.4
- 客户端 B 通过 VPN 的 IP:10.4.0.8
服务器配置:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
dh /etc/openvpn/rsa/keys/dh2048.pem
server 10.4.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 172.31.0.0 255.255.0.0"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
服务器的 /etc/sysconfig/iptables:
*nat
:POSTROUTING ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -s 10.4.0.0/24 -d 0.0.0.0/0 -o eth0 -j MASQUERADE
COMMIT
客户端配置文件
client
remote <serverIP> 1194
proto udp
dev tun
persist-key
persist-tun
cipher AES-256-CBC
remote-cert-tls server
resolv-retry infinite
nobind
comp-lzo
verb 3
<ca>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----
</key>
在配置中:ipv4.ip_forward = 1
来自B:ssh[电子邮件保护]从服务器工作:ssh[电子邮件保护]没有
我尝试在端口 22 上进行 telnet,但失败了。机器 A 在 Ubuntu 上,机器 B 在 OS X 上,服务器在 AWS EC2 上。
如果您需要任何其他信息,请告诉我。
编辑:已解决
只需将topology subnet
两个配置文件都添加到一起就可以了!
答案1
您确定您连接的是正确的 IP 吗?我不确定您在 IPP 中看到的地址是否是客户端使用的实际地址。您似乎处于 net_30 拓扑中,其中寻址有点奇怪。在此拓扑中,/30
为每个客户端创建一个子网,并创建一个点对点链接。因此,您10.4.0.4
在 ipp 文件中的地址实际上是分配的子网的网络地址/30
。您可能已经能够 ping 并连接到ipp 文件中10.4.0.6
报告的系统。10.4.0.4
但忽略所有 net_30 的怪异之处,您应该考虑的最简单的解决方案是切换到拓扑子网,除非您支持古老的客户端,否则这是最佳模式。它或多或少与您通常使用的任何其他网络一样,每个客户端都分配一个地址,并且它们都具有相同的掩码。