标签: port-forwarding

如何让 IIS 在路由器后面的网络之外工作和访问?

我的机器运行的是 Windows 7 Ultimate。到目前为止,这是我所做的(成功):

  1. 通过 FastCGI 安装带有 PHP 的 IIS 7.5
  2. 搞定了!当我访问http://localhost/index.php 时,我的 PHP 脚本运行良好。
  3. 跑 ipconfig 发现我的本地 IP 地址是 192.168.1.102。我确认http://192.168.1.102/index.php 的功能与上面的 localhost 地址完全一样。
  4. 进入我的路由器管理(我有一个 Linksys WRT54G2)并在端口 80 上设置端口转发到 192.168.1.102。现在端口 80 正在转发到我的机器。
  5. 在 Windows 防火墙中设置入站规则以允许端口 80 上的所有活动。
  6. 从 Google 找出我的外部 IP 地址。我们称之为 XXX.XX.XX.XX。

但是,当我尝试从我自己的机器上访问http://XXX.XX.XX.XX/index.php 时,或者从远离我的网络的计算机上访问http://XXX.XX.XX.XX/index.php 时,无论哪种方式......我都一无所获。它尝试连接一段时间(不成功)但最终放弃了。

这是我想知道的:

  1. 我错过了什么?我忘记/忽略了什么?如何在我自己的本地网络之外运行和访问它?
  2. 假设我确实得到了这个工作,那么我如何使用端口 80 以外的端口?为了使这成为可能,我需要进行哪些更改(例如 IIS、Windows 防火墙、路由器管理等)?

首先十分感谢!

iis router port-forwarding iis-7.5 windows-firewall

9
推荐指数
1
解决办法
8万
查看次数

LXC、端口转发和 iptables

我有一个 LXC 容器 ( 10.0.3.2) 在主机上运行。服务正在容器内的端口上运行7000

从主机 ( 10.0.3.1, lxcbr0),我可以访问服务:

$ telnet 10.0.3.2 7000
Trying 10.0.3.2...
Connected to 10.0.3.2.
Escape character is '^]'.
Run Code Online (Sandbox Code Playgroud)

我想让外部世界可以访问在容器内运行的服务。因此,我想7002将主机上的端口转发到7000容器上的端口:

iptables -t nat -A PREROUTING -p tcp --dport 7002 -j DNAT --to 10.0.3.2:7000
Run Code Online (Sandbox Code Playgroud)

结果是 ( iptables -t nat -L):

DNAT   tcp  --  anywhere     anywhere     tcp dpt:afs3-prserver to:10.0.3.2:7000
Run Code Online (Sandbox Code Playgroud)

尽管如此,我仍无法使用转发端口从主机访问该服务:

$ telnet 10.0.3.1 7002
Trying 10.0.3.1...
telnet: Unable to connect to remote host: Connection refused
Run Code Online (Sandbox Code Playgroud)

我觉得我在这里错过了一些愚蠢的东西。我应该检查哪些事项?调试这些情况的好策略是什么?

为了完整起见,这里是如何iptables …

iptables port-forwarding lxc

9
推荐指数
1
解决办法
3万
查看次数

在同一台服务器上运行 websocket 服务器和 http 服务器

我正在使用 nginx 来为 PHP 应用程序的实例提供服务,同时还运行一个 Ratchet 应用程序来侦听 websocket 连接。问题是,这两个实例都使用相同的端口 (80)。

如何设置服务器以便我可以同时提供两者?

编辑:刚回来看到这个问题已经被否决了好几次,可以理解的是,我并没有真正清楚地提出这个问题。我为此道歉。不过,我确实做了尽职调查。我会试着澄清我在问什么,我可能误解了 websocket 协议的某些方面,在这种情况下,请纠正我:

我很清楚只能有一个进程侦听特定端口,我实际上遇到了一些问题,这是整个 websocket 的事情,据我所知,websocket 请求以 HTTP 握手开始,之后会有机制将该会话“升级”到特定端口。

从我阅读的内容来看,这种升级机制似乎是由网络服务器处理的。那么,如何配置nginx来处理这个过程呢?

总而言之,我担心在 80 以外的端口上运行 websocket 服务器的一件事是端口被阻塞的可能性。这种担忧是没有根据的?关于我应该如何设置的任何建议?

port port-forwarding socket

9
推荐指数
1
解决办法
3万
查看次数

为什么在使用端口转发时注销 SSH 会话会挂起?

我使用动态SSH端口转发(-D)和正常的SSH端口转发(-L-R用于许多不同的事情,包括增加的加密层,以我的无线网络流量)。我通常使用的命令如下所示:

ssh -l raam -D 9000 my-linux-server.com
Run Code Online (Sandbox Code Playgroud)

启动隧道后,我将 Web 浏览器配置为使用端口 9000 的 127.0.0.1 SOCKS v5 代理。现在浏览器中的所有流量(DNS 除外)都通过 SSH 隧道传输。

当我准备关闭隧道时(例如,当我将笔记本电脑带到另一个位置时),我只需键入“ logout”。但是,SSH 会话挂起,我必须按CTRL+c才能恢复本地提示。

为什么会发生这种情况,我该如何预防?

(我的猜测是我通过隧道打开的连接保持打开状态,我的本地 SSH 客户端正在等待它们关闭,然后再给我提示。如果是这种情况,我如何强制所有这些连接在我'我准备退出?)

ssh port-forwarding ssh-tunnel

8
推荐指数
2
解决办法
5261
查看次数

SSH 端口转发

我想通过公共可访问服务器(公共)连接到 NAT 后面的我的计算机(本地)。

在本地:

ssh -g -R 8000:localhost:22 user@public
Run Code Online (Sandbox Code Playgroud)

然后公开:

ssh -p 8000 user@public 
Run Code Online (Sandbox Code Playgroud)

但我越来越 error: Connection refused.

当我登录到公共服务器时,我可以通过以下方式验证隧道是否正常工作:

ssh -p 8000 localhost
Run Code Online (Sandbox Code Playgroud)

它在本地计算机上打开 ssh。

我怀疑公共服务器应该充当透明代理有什么问题吗?或者如何让它像那样工作。

ssh port-forwarding

8
推荐指数
1
解决办法
2767
查看次数

ssh 如何允许设置远程端口转发但不执行命令?

如何设置 SSH 命令以允许端口转发但不执行命令。

我知道 ssh 登录可以使用 -N 来停止执行命令,但是可以设置 ssh 配置文件来禁止它吗?

在 Linux 中限制 shell 的类型和路径是可选的,但是可以在 SSH 配置本身中完成吗?

ssh port-forwarding ssh-tunnel

8
推荐指数
1
解决办法
4448
查看次数

基于 TCP/IP 的串口转发(linux 服务器)

我正在寻找一种通过 LAN 在 linux 机器上使用远程串行端口的方法。这台机器正在运行 ubuntu 10.04 并且我有一个 arduino 板连接到它,我希望能够通过 LAN 重新编程或监听/对话它的串行输出。

如果客户端软件独立于平台,但仅 linux 客户端也可以,那就太好了。

谢谢!

更新:

有一些类似的 Windows 程序:http : //www.hw-group.com/products/hw_vsp/index_en.html http://www.serial-port-communication.com/serial-over-tcpip/(这个似乎有一个 linux 版本,但它不是开源的......)

最后实际上维基百科有一些有用的注释和参考:http : //en.wikipedia.org/wiki/COM_port_redirector

UPDATE2:最有趣的候选人: http ://lpccomp.bc.ca/remserial/

linux ubuntu tcpip port-forwarding serial

8
推荐指数
1
解决办法
3万
查看次数

Mac OS X Lion - 将端口 22 上的所有连接转发到外部 ip

我需要将所有连接到任何地址端口 22 转发到不同的网关(即没有默认值)。首先我想用ipfw来做:

sudo ipfw add 5 fwd $EXTERNAL_IP,22 tcp from any to any 22 keep-state
Run Code Online (Sandbox Code Playgroud)

但是对于 Mac OS X Lion,它似乎不起作用。无论如何,查看 ipfw 文档我发现它已被弃用,我应该使用 pfctl。

所以我修改了/etc/pf.conf文件:

rdr proto tcp from $internal_ip to any port 22 -> $external_ip port 22
Run Code Online (Sandbox Code Playgroud)

但没有运气。

有谁知道如何将本地应用程序生成的所有连接转换或转发到任何地址,但端口 22 到不同的网关/IP 地址?

更新

按照 Jake 的建议,我尝试仅指定目标 IP,因此我将 rdr 规则转换为 mac os x 语法:

rdr proto tcp from any to any port 22 -> $external_ip port 22
Run Code Online (Sandbox Code Playgroud)

即使在这种情况下,我也没有得到预期的结果,即我可以通过 ssh 连接到我的服务器,但通过默认网关。

port-forwarding transparent-proxy osx-lion

8
推荐指数
1
解决办法
1598
查看次数

Apache:将特定 URL 重定向到不同端口上的本地服务器

这看起来很简单,但我不能让它工作。

我有一个非常简单的网络服务器,只需要做两件事:

  1. example.com/status.html 返回一个本地文件(这有效)
  2. example.com/atom 在端口 4000 上重定向在同一台机器上运行的防火墙服务器的内容

这不起作用:

RewriteRule ^$ http://localhost:4000
Run Code Online (Sandbox Code Playgroud)

从请求者的角度(即,在客户端的机器上),这将流量重定向回 l​​ocalhost:4000。

我对 VirtualHost 的有限理解表明这是针对 atom.example.com 之类的,而不是 example.com/atom

我想我必须使用 ProxyReverse,但我找不到正确的组合。

更新:尝试由 Shane Madden 给出的 ProxyPass/ProxyReverse 建议会在错误日志文件中产生:

[Thu Mar 15 11:59:15 2012] [error] (13)Permission denied: proxy: HTTP: attempt to connect to 127.0.0.1:4000 (localhost) failed
[Thu Mar 15 11:59:15 2012] [error] ap_proxy_connect_backend disabling worker for (localhost)
[Thu Mar 15 11:59:17 2012] [error] proxy: HTTP: disabled connection for (localhost)
Run Code Online (Sandbox Code Playgroud)

(本地服务器肯定运行在127.0.0.1:4000)

url reverse-proxy port-forwarding apache-2.2

8
推荐指数
1
解决办法
3万
查看次数

尝试浏览映射到 Docker 容器的端口时获取“ERR_CONNECTION_REFUSED”

我拉了一个 Docker 镜像:

$ docker pull ghost
Run Code Online (Sandbox Code Playgroud)

并从图像运行一个容器:

$ docker run --name test-ghost -p 8080:2368 -d ghost
7d984e974f6a75fe18b3d397b5c8f0a428928a2be9df83f0d61a679aa5f537fc
Run Code Online (Sandbox Code Playgroud)

我的理解是,-p交换机会将主机上的端口 (8080) 映射到 Docker 内部的端口 (2368),以便我可以从 Docker 外部(即从我的主机)访问在 Docker 内运行的 Web 服务器。

但是,当我尝试从我的主机浏览 Chrome 中的以下任何地址时:

http://localhost:8080/
http://0.0.0.0:8080/
http://127.0.0.1:8080/
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

This webpage is not available

ERR_CONNECTION_REFUSED
Run Code Online (Sandbox Code Playgroud)

这似乎可能是连接问题,而不是容器内部的问题,因为当我检查容器内部正在运行的进程时,似乎 NodeJS 正在运行:

$ docker top test-ghost
UID          PID           PPID      ...  CMD
docker       4290          1028      ...  npm
docker       4324          4290      ...  sh -c node index
docker       4325          4324      ...  node index
Run Code Online (Sandbox Code Playgroud)

但似乎没有在端口 8080 上侦听:

$ …
Run Code Online (Sandbox Code Playgroud)

networking port port-forwarding mac-osx docker

8
推荐指数
1
解决办法
2万
查看次数