标签: portforwarding

使用c#"UDP打孔到防火墙"将端口X的流量从端口X转发到计算机B

我需要建立从家用计算机到办公室计算机的TCP连接.

在办公室有一台路由器连接了几台计算机.该路由器具有互联网,因此连接到该路由器的所有计算机也具有互联网.我的房子里有一台可以上网的电脑.我需要我的办公室电脑作为服务器和家用电脑连接到它.之前,我曾经能够通过端口转发服务器上的流量连接:

    NATUPNPLib.UPnPNATClass upnpnat;
    NATUPNPLib.IStaticPortMappingCollection mappings;

    public ServerExample()
    {
        InitializeComponent();

        upnpnat = new NATUPNPLib.UPnPNATClass();
        mappings = upnpnat.StaticPortMappingCollection;

        //                           server local IP address
        mappings.Add(1300, "TCP", 1300, "192.168.150.146", true, "plsease work");
        // this code tels the router to forward all tcp traffic comming from port
        // 1300 to the server computer (it's lan ip address happens to be 192.168.150.146)
        //...
Run Code Online (Sandbox Code Playgroud)

我能够从我家连接.(我知道简单的方法是打开办公室路由器上的端口并将它们转发到我的计算机,问题是我无法访问办公室路由器)

现在他们用更新的路由器替换了我办公室的路由器而且我无法使用我的代码.现在,使用新的路由器,当我执行我得到的私密代码时:

在此输入图像描述

请注意,映射返回null; 因此,我无法添加映射.

我确信应该有办法建立连接,因为办公室里的某些人使用limewire或比特洪流.我认为我的问题可能与权限有关吗?我该如何解决这个问题?


编辑

因此,通过研究,我发现我要做的是"UDP打孔到防火墙".我实际上想通过tcp连接来做.我不知道tcp和upd puch holing之间的区别是什么....我的意思是让客户端能够找到一个梨而不必在路由器上进行配置.

.

.

.

.

.

.

UPDATE

好的,所以我相信我已经尝试用c#做你们在这个问题上发布的内容:好吧,让我告诉你我做了什么:

请注意,您可能需要参考此图表以了解我将要解释的内容: 在此输入图像描述

如你所知,我想在计算机A和计算机B之间建立一个tcp连接.我设法做到这一点的方法是做一个所谓的tcp punch holing.

第1步:我要做的第一件事是开始在服务器S上侦听新连接. …

c# networking tcp portforwarding

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

克隆数据包并将数据包转发到多个IP地址

我正在尝试将所有传入的TCP数据包转发到多个IP地址.

建立:

A - 10.10.10.10
B - 10.10.10.11
C - 10.10.10.12
D - 10.10.10.13
Run Code Online (Sandbox Code Playgroud)

我希望B,C和D接收(在端口8000上)A端口12345上的所有传入数据包.理想情况下,我希望A做到这一点.

我可以在A上使用此规则转发到一台机器:

iptables -t nat -A PREROUTING -p tcp --dport 12345 -j REDIRECT --to 10.10.10.11:8000
Run Code Online (Sandbox Code Playgroud)

我也可以使用TEE选项克隆数据包:

iptables -t mangle -A PREROUTING -p tcp --dport 8000 -d 10.10.10.11 -j TEE --gateway 10.10.10.12
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都还可以.问题是C将接收目的地IP为B而不是C的数据包.此外,我不知道如何转发到D和/或更多其他目的地.

如何使用iptables规则将A端口12345上的所有传入数据包发送到所有其他计算机(B,C和D)到端口8000?

routing iptables multicast portforwarding

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

如何通过互联网访问WAMP?

我对Web开发很新.我有这个我使用PHP和MySQL开发的Web应用程序,可以在我的WAMP服务器上运行.我想与堂兄分享这些提示和建议.我想让他的WAMP服务器可以访问.那么,我该怎么做?我所拥有的只是一台运行Windows 7和互联网连接的计算机.:-P

PS - 欢迎提供其他建议.因为我认为这是Web开发中的初学者将面临的一个基本问题,我希望找到最佳解决方案,以便它也能帮助其他人.

谢谢!

wamp localhost wampserver portforwarding

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

Boot2Docker - 将webserver作为localhost访问

创建了一个apache webserver作为Docker容器,但想在windows os浏览器上以localhost的身份访问它.

我可以使用boot2docker私有IP地址访问web服务器,该地址为192.168.59.103但是想要访问webserver作为localhost即127.0.0.1.

以下是我的Docker Container设置

在Oracle VM Exposed端口上运行Boot2docker:docker文件中的"EXPOSE 80 443"

用于创建Docker文件的命令:

docker run --net=host --name=webserver1 -v /home/data:/data/www/www.samplewebserber.com -v `password`:/scripts -d folder/serverfolder  /scripts/run.sh
Run Code Online (Sandbox Code Playgroud)

portforwarding docker boot2docker

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

Windows 7上的VirtualBox端口转发无法正常工作

Windows 7上的VirtualBox端口转发无法正常工作

我试图通过端口转发从我的Windows 7主机ssh到我的VirtualBox,但VirtualBox不会打开端口进行监听.我可以通过打开VirtualBox GUI并通过该终端导航来连接它,但我无法通过主机上的标准ssh客户端进行连接.我希望能够在我的主机上的2222端口ssh到客户端.

这是我的设置:

Host: Window 7 SP1
Guest: Ubunto Ubuntu 12.04
VirutalBox: 4.3.26
Host Processor: Intel Core i7 920
Run Code Online (Sandbox Code Playgroud)

客户机被配置为NAT,并且127.0.0.1对于主机端口2222 启用端口转发到客户端口22.

ifconfig来宾的输出:

eth0    inet addr:10.0.2.15 Bcast:10.0.2.255 Mask: 255.255.255.0
Run Code Online (Sandbox Code Playgroud)

ps -ef | grep sshd来宾的输出:

root    625 1   0   12:27   ?   00:00:00    /usr/sbin/sshd -D
Run Code Online (Sandbox Code Playgroud)

netstat -ant | grep 22来宾的输出:

tcp     0   0   0.0.0.0:22  0.0.0.0:*
tcp6    0   0   :::22       :::*
Run Code Online (Sandbox Code Playgroud)

但在主持人,netstat -ant | grep 2222没有显示任何东西.

在VBox.log中我有这个:

00:00:03.413790 NAT: set redirect TCP host 127.0.0.1:2222 …
Run Code Online (Sandbox Code Playgroud)

ssh virtualbox portforwarding

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

更新 Certbot 时出现“连接超时(可能是防火墙问题)”

当我尝试使用更新我的 ssl 证书时,我遇到以下错误

certbot renew
Run Code Online (Sandbox Code Playgroud)

域名************.com 挑战失败

有些挑战失败了。

服务器报告了以下错误:

域:arjunbroker.com 类型:连接详细信息:正在获取 http://arjunbroker.com/.well-known/acme-challenge/F9nlyrRQBpJGOpPLHGPCj1vzdJOd_rBISU7q2aX7t_o:连接期间超时(可能是防火墙问题)

我检查了UFW和firewalld。并且80和443端口均开放。

linux apache portforwarding centos7 certbot

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

允许公共IP通过WebSockets连接

我尝试与nodejs ws(einaros)创建聊天,这是我的代码:

服务器:

var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({ port: 80 });
wss.on('connection', function(ws) {
    console.log('connecting count:' + wss.clients.length);
});
Run Code Online (Sandbox Code Playgroud)

客户:

var hostname = location.hostname;
var port = 80;
var url = 'ws://'+hostname+':'+port+'/';
window.WebSocket = window.WebSocket || window.MozWebSocket;
var w = new WebSocket(url);
Run Code Online (Sandbox Code Playgroud)

当我用我的计算机或其他与我的路由器连接的计算机进行测试时,它运行良好.但是,通过Internet访问的其他客户端无法建立连接.当然,他们使用公共IP,如218.xxx.xxx.xxx,而不是192.168.xxx.xxx.

我想知道如何解决这个问题.

谢谢你的回答.但是,这可能不是NAT问题.例如,我的公共IP是218.100.50.50,而我的私有IP是192.168.1.1.当连接来自我的网络外部并访问218.100.50.50:80时,路由器将其重定向到192.168.1.1:80.有一个可以通过这种方式访问​​的网页,但仍然无法连接到我的websocket服务器.这个问题让我很困惑.

networking router portforwarding websocket node.js

7
推荐指数
1
解决办法
4560
查看次数

使用VMWare进行端口转发的正确方法是什么

我创建了一个运行服务器的虚拟机,localhost:8675/我想在同一个端口连接到我的主机,以便于理解.我正在关注这些文件以获取信息:

当我在我的VMWare工作站中时,我点击了我的VM,然后执行了: 编辑>虚拟网络编辑器.之后,启用更改设置,以管理模式重新启动窗口.我点击了带有类型NAT和外部连接NAT的行,在按下了NAT单选按钮的VMNet信息中,我点击了NAT设置按钮.

我说: 添加......然后做了:

Host: 8675
Type: TCP
VMIP: 127.0.0.1:8675
Description:  Port Foward of 8675 from Host to VM.
Run Code Online (Sandbox Code Playgroud)

看起来一切都很好.我说好了,然后连续申请.看起来它关闭了nat并重新启动了一些服务.

我在VM中确认,127.0.0.1:8675是正确的.在HOST中,我试图去: http:// localhost:8675 /并且它说:ERR_CONNECTION_REFUSED

我认为这就是我需要做的全部.

我正在查找一些其他信息,并注意到有些人不得不配置防火墙.我不确定我是否需要,因为我认为HOST和VM都在1台实际机器中,它可能完全是自包含的.

我缺少一项关键任务吗?

vmware port virtual-machine portforwarding vmware-workstation

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

在 Plink 中启用 keepalive

我们正在使用 Plink 作为连接 MySQL 的隧道。我们以这种格式使用它:

plink.exe -L [Port of our client]:[my-sql server host name]:3306 [bridge server ssh username]@[bridge server IP] -i [private key]
Run Code Online (Sandbox Code Playgroud)

我们找不到阻止连接被关闭的选项,一种保活。

我们怎样才能做到这一点?

ssh putty plink portforwarding

7
推荐指数
2
解决办法
3559
查看次数

当容器连接到多个网络时,如何将 Docker 容器端口仅暴露给一个特定的 Docker 网络?

来自 Docker 文档:

  • --publish or -p flag. Publish a container's port(s) to the host.
  • --expose. Expose a port or a range of ports.
  • --link. Add link to another container. Is a legacy feature of Docker. It may eventually be removed.

我正在使用 docker-compose 与多个网络。我不想向主机发布任何端口,但是当我使用公开时,该端口将公开给容器连接到的所有网络。经过大量测试和阅读后,我似乎无法弄清楚如何将其限制为特定网络。

例如,在此docker-compose文件中,使用 wherecontainer1连接以下三个网络:internetemaildatabase

services:
    container1:
       networks:
           - internet
           - email
           - database
Run Code Online (Sandbox Code Playgroud)

现在,如果我想仅向网络公开一个特定端口database,而不向主机公开,也不向本示例中的网络email公开,该怎么办?internet如果我将其用于ports:暴露container1给主机,或者我可以将其绑定到主机的特定IP地址。*我还尝试创建一个自定义覆盖网络,为容器提供静态 IPv4 地址,并尝试以ports: …

networking network-programming portforwarding docker docker-compose

7
推荐指数
1
解决办法
2854
查看次数