我有 2 个 VPS。第一个 VPS 有 OpenVPN,我需要从我的 VPN 访问第二个 VPS 上的 eth1。
VPS 第一名
- eth0-WAN xxx.xxx.19.106
- eth1-LAN 10.108.0.2/20
- tun0-OpenVPN 10.8.0.1/24
VPS 第二名
- eth1-LAN 10.108.0.3/20
我需要知道 VPS N°1 的 iptables 配置,这样我才能从 openVPN (tun0-10.8.0.1/24) 访问第二个 VPS 上的 eth1-LAN 10.108.0.3/20。我试图从连接 OpenVPN 的计算机通过 SSH 访问第二个 VPS,但无法访问。但我通过 SSH 访问第一个 VPS,并且从控制台通过 SSH 访问第二个 VPS,我可以访问它。
SSH (端口 22)
eth1-LAN (10.108.0.2/20) => eth1-LAN (10.108.0.3/20)........正在工作
SSH(端口 22)
tun0-OpenVPN(10.8.0.1/24)=> eth1-LAN(10.108.0.3/20)........不是在职的
感谢 Arturbio
答案1
为了允许从 OpenVPN 接口 (tun0) 到第二个 VPS 的 LAN 接口 (eth1) 的 SSH 访问,您需要在第一个 VPS 上配置 iptables,以将流量从 OpenVPN 接口转发到 LAN 接口。以下是可用于实现此目的的 iptables 命令:
iptables -A FORWARD -i tun0 -o eth1 -d 10.108.0.3/20 -p tcp --dport 22 -j ACCEPT - 如果目标 IP 在 10.108.0.3/20 范围内且目标端口为 22(对于 SSH),此命令将向 FORWARD 链添加一条规则,允许从 OpenVPN 接口(tun0)到第二个 VPS 的 LAN 接口(eth1)的流量。
iptables -A FORWARD -i eth1 -o tun0 -s 10.108.0.3/20 -p tcp --sport 22 -j ACCEPT - 如果源 IP 在 10.108.0.3/20 范围内且源端口为 22(对于 SSH),此命令将向 FORWARD 链添加一条规则,允许从第二个 VPS 的 LAN 接口(eth1)到 OpenVPN 接口(tun0)的流量。
iptables -A POSTROUTING -t nat -o eth1 -s 10.8.0.0/24 -j SNAT --to-source 10.108.0.2 - 此命令将向 POSTROUTING 链添加一条规则,允许在数据包离开 eth1 接口之前将其源 IP 地址更改为第一个 VPS(10.108.0.2)的 eth1 接口的 IP 地址,以便它看起来来自第一个 VPS 的 IP。
iptables -A INPUT -i tun0 -p tcp --dport 22 -j ACCEPT - 此命令将向 INPUT 链添加一条规则,允许 tun0 接口上的传入 SSH 流量,
iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT - 此命令将向 INPUT 链添加一条规则,允许 eth1 接口上的传入 SSH 流量,
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT - 此命令将向 INPUT 链添加一条规则,允许 eth0 接口上的传入 SSH 流量,
iptables -A INPUT -i lo -j ACCEPT - 此命令将向 INPUT 链添加一条规则,允许环回接口上的传入流量,
iptables -P INPUT DROP & iptables -P FORWARD DROP & iptables -P OUTPUT DROP - 这些命令将 INPUT、FORWARD 和 OUTPUT 链的默认策略设置为 DROP。这意味着任何与前面任何规则不匹配的流量都将被丢弃。
为了使这些规则在重启后仍然有效,您需要使用 iptables-save 和 iptables-restore 命令。