我已经在服务器 10.1.1.1 上创建了此隧道:
ssh -f -N -o -L 8789:10.2.2.2:22 [email protected]
这使我可以通过端口 8789 从本地服务器连接到远程服务器,如下所示:ssh -p 8789 user@localhost
我想要实现的是让其他服务器也能通过该端口连接到远程服务器 10.2.2.2,所以我想到了这个:
ssh -f -N -o -L 10.1.1.1:8789:10.2.2.2:22 [email protected]
这样,其他服务器(例如 10.1.1.2 或 10.1.1.3(能够通过 ssh 进入 10.1.1.1))就可以通过隧道连接到 10.2.2.2:
ssh -p 8789 [email protected]
问题是,这样一来,每个可以访问 10.1.1.1 的人都可以使用该隧道,而我不希望这样。假设我只希望 10.1.1.2 和 10.1.1.3 能够使用该隧道。我该如何实现这一点?谢谢。
答案1
这可以通过防火墙规则来实现。例如,Iptables。首先,我们允许特定 IP 上的流量:
iptables -A IN_public_allow -s a.b.c.d -p tcp -m tcp --dport abcd -m conntrack --ctstate NEW -j ACCEPT
然后整个流量在端口上被限制:
iptables -A IN_public_allow -p tcp -m tcp --dport abcd -m conntrack --ctstate NEW -j DROP
这样,除了 ip abcd 之外,其他所有人都被阻止在该端口上