我有 2 個 VPS。第一個有 OpenVPN,我需要從我的 VPN 存取第二個 VPS 上的 eth1。
VPS N°1
- eth0-WAN xxx.xxx.19.106
- eth1-LAN 10.108.0.2/20
- tun0 - OpenVPN 10.8.0.1/24
VPS N°2
- 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)........不是在職的
謝謝阿圖比奧
答案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 - 此指令將向 FORWARD 鏈新增一條規則,允許從 OpenVPN 介面 (tun0) 到第二個VPS的LAN 介面(eth1),如果目標IP 在10.108.0.3/20 範圍內且目標連接埠為22(用於SSH)。
iptables -A FORWARD -i eth1 -o tun0 -s 10.108.0.3/20 -p tcp --sport 22 -j ACCEPT - 此指令將向 FORWARD 鏈新增一條規則,允許來自 LAN 介面 (eth1) 的流量如果來源IP在10.108.0.3/20 範圍內且來源連接埠為22(對於SSH),則將第二個VPS 連接到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 介面之前,將封包傳送到第一個VPS 的eth1 介面的IP 位址(10.108.0.2),以便它看起來來自第一個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 指令。