我正在尝试使用 SSH 隧道执行本地端口转发。
机器 1:iptables 的规则是:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
机器2:ssh 服务器(sshd)接受来自端口 22 的流量。
SSH 命令:
远程控制[电子邮件保护]-L 8080:209.188.89.221:80
其中:209.188.89.221 是一个随机 HTTP 网页,10.0.2.6 是机器 2 的 IP(lub2 是用户名)
这样我就可以使用以下方式访问网页(209.188.89.221)http://127.0.0.1:8080作为 URL(来自机器 1),但它加载并且没有结果。
简而言之,如果我打开机器 1 上的所有端口,端口转发就会起作用,但是当我只打开 22 个端口(其他所有端口都关闭)时,端口转发就不起作用。你能解释一下吗?
干杯
答案1
您的OUTPUT
链将数据包丢弃到除 80 之外的所有端口。当您在 加载网页时http://127.0.0.1:8080
,其目的地是端口 8080,而这在链中是不允许的OUTPUT
。
localhost
您可以使用以下行允许所有来往的流量:
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -I OUTPUT 1 -o lo -j ACCEPT
这不会影响您计算机的外部安全。