我收到了一位开发人员的请求,但解决起来很困难。
在办公室里,他们使用 Linux 桌面,我可以通过 iptables nat 将 localhost:80 转发到 localhost:8080。他们想要的和家里的 Windows 7 一样。
我认为有两种方法可以解决这个问题。一种是重新配置 jboss webserver 和所有 webapps url(很乱)。另一种是找到一种方法将本地主机端口 8080 重定向/nat 到端口 80。不过在 Windows 7 中我不确定如何做到这一点。
有人对如何做第二件事有什么想法吗?
答案1
据我所知,Win7 没有 iptables 等效程序。编写一个执行您想要的操作(侦听某个端口,将所有内容复制到另一个端口或从另一个端口复制所有内容)的服务器应该很容易。您可以在此 URL 找到一个:http://www.quantumg.net/portforward.php(未经测试)。使用反向代理(Google 是你的朋友)可能适合 http 类流量。另请查看此帖子:https://stackoverflow.com/questions/3721000/port-forwarding-on-windows-7
答案2
是的,Windows 确实有一个 iptables 等效程序,它是通过该工具netsh 和 portproxy 接口。
执行您想要的操作的命令是
netsh interface portproxy add v4tov4 listenaddress=YOUR_IP_HERE listenport=8080 connectaddress=YOUR_IP_HERE connectport=80
请注意,这仅适用于 IPv4 连接,如果您还想转发 IPv6 连接,您还需要执行
netsh interface portproxy add v6tov6 listenaddress=YOUR_IP_HERE listenport=8080 connectaddress=YOUR_IP_HERE connectport=80
答案3
我认为 Windows 没有 iptables 等效程序。命令
netsh interface portproxy ...
进行端口代理,但不进行数据包转发。主要区别在于
- 性能比 iptables 差很多(参见https://plus.google.com/+OlafMonien/posts/fsjUjropYeR)
- 源 IP 地址更改为本地主机(127.0.0.1 或 ::1 取决于 IP 版本),您将丢失原始请求源 IP 地址。
我们一直在使用这种技术进行端口转发,但是在发现这些情况后,我们不得不在网络防火墙上使用额外的规则来避免使用 netsh。