我有一个守护进程,它在 127.0.0.1:8000 上监听。
当我使用 vpn 连接到我的盒子时,我需要访问它。
所以我希望它也在 ppp0 接口上监听。
我尝试过“ssh -L”方法。它可以工作,但我不认为这是正确的方法,因为在后台运行了一个额外的 ssh 进程。
我尝试过“netcat”方法。当连接关闭时它会退出。所以这不是一种有效的“监听”方式。
我也尝试了几个 iptables 规则。但是都没有起作用。
我没有在这里列出我用过的所有规则。
iptables -A FORWARD -j ACCEPT
iptables -t nat -A PREROUTING -i ppp+ -p tcp --dport 8000 -j DNAT --to-destination 127.0.0.1:8000
上述规则集不起作用。
我已将 net.ipv4.ip_forward 设置为 1。
有人知道如何将流量从 ppp 接口重定向到 lo 吗?
比如,监听“192.168.45.1:8000 (ppp0)”以及“127.0.0.1:8000 (lo)”,
无需更改端口。
谢谢
=-=更新:
在漫游盒上,当我使用
nc 192.168.45.1 8000
无论我输入什么,都没有任何输出。
但是,在 ssh 会话中执行此操作时,对于
nc 127.0.0.1 8000
nc 192.168.45.1 8000
如果我输入一些随机文本,它会发出错误消息。
这是否意味着我需要额外的规则来将输出重定向回漫游框?
答案1
我快速浏览了一下你的 iptables 规则,我的第一个想法是,它们看起来不错。你确定它还不能正常工作吗?但只能从外部主机工作。如果你尝试从服务器本身连接它,它将无法工作。在这种情况下,你还需要将你的 nat 规则添加到 nat OUTPUT 链中:
-t nat -A OUTPUT -p tcp -dst 192.168.45.1 --dport 8000 -j DNAT --to-destination 127.0.0.1:8000
(这是必要的,因为您的本地数据包不会经过 PREROUTING 链 - 至少在我的系统上,它们不会。)
我会先尝试一下,但可能还有其他问题。(也许不仅有 tcp 数据包,还有 udp?)
顺便说一句,也许您可以将守护进程配置为在两个接口上进行监听。