可能的重复:
如何使用 DNS 将域重定向到我的服务器上的特定端口
基本上我想要这样的东西:
name1.mydomain.com:1234 -> my.internal.ip.address:10001
name2.mydomain.com:1234 -> my.internal.ip.address:10002
name3.mydomain.com:1234 -> my.internal.ip .address:10003
name4.mydomain.com:1234 -> my.internal.ip.address:10004
name5.mydomain.com:1234 -> another.internal.ip.address:10001
name6.mydomain.com:1234 -> 另一个.internal.ip.地址:10002
可以在路由器级别、内部 DNS 服务器级别,甚至可以在本地网络上运行某些应用程序的其他计算机,这些应用程序只是将流量传递到正确端口上的正确计算机。
更多说明:它不是 HTTP 流量,而是我们自己的自定义协议(我们自己的客户端/服务器应用程序在 .NET 中使用 Remoting)
我正在配置路由器以将 TCP 端口 5900(是的,这是用于 VNC)重定向到网络上的特定 IP 地址。这是我所拥有的:

从同一网络上的本地计算机,我可以telnet到 192.168.1.64(端口 5900)就好了。但是,当尝试telnet使用其外部 IP 地址访问机器(端口 5900)时,它不起作用。(连接超时。)
如果有帮助,路由器是 Gigaset SE567。
我在我的一台电脑上安装了一个服务器,我正在使用路由器,我可以通过在地址栏中定义 IP 地址从我的其他联网计算机转到服务器,例如 192.168.1.101。
我所有联网的计算机都可以使用此 ip 在该页面上工作,但现在我的问题是,如果我想从外部访问此服务器,我应该在地址栏中输入什么?
如果我把我的 ip 地址直接转到路由器配置页面而不是服务器
我知道我需要将它重定向到 .101 地址,但我该怎么做呢?以便我的用户可以从外部访问该页面。
我有 CentOs 的 VirtualBox(实际上是 Vagrant)。我在那里有端口转发(NAT)。例如,我的盒子中有一些应用程序绑定到端口 8080。端口被转发。所以我可以从我的主机和来宾机器连接到这个端口。
telnet 127.0.0.1 8080
Run Code Online (Sandbox Code Playgroud)
但是我无法从我的主机上执行任何操作:
telnet 127.0.0.1 8080
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
HEAD / HTTP/1.0
....sleeeeeep.....
Run Code Online (Sandbox Code Playgroud)
但它适用于我的流浪 ssh 会话。
如何解决?
我有一个公共静态 IP 地址。
我在本地互联网提供商和他们的 DNS 上注册了我的主域。
我的主路由器是 pfSense,在它后面我有我的本地网络。
我的 WEB 服务器在本地 LAN 中,pfSense 将 NAT(端口重定向)WEB 流量发送到本地服务器。
现在我需要在我的局域网内(在另一个本地 IP 地址上)(等邮件服务器)多一个网络服务器,我需要另一个域或子域。
我可以注册一个指向相同公共 IP 地址的新域,并告诉 pfSense 根据域进行不同的流量重定向吗?我打算在 HTTP (80) 端口下使用这两个域。
是否可以在请求调用 domain.com 时将 pFsense 重定向到一个本地 IP,并在调用 subdomain.domain.com 的同一公共 IP 地址上进行请求时进行不同的端口转发?
如果可能,我应该安装和配置哪一个 Pfsense 模块,以及如何安装和配置?
domain-name-system domain port-forwarding traffic-management pfsense
我正在使用 LXC 容器。我的每个容器在 10.0.3.0/24 中都有一个 ip 地址。我希望通过某个端口进入我的主机的数据包被重定向到一个容器,所以我使用以下规则:
iptables -t nat -A PREROUTING -p tcp --dport 3000 -j DNAT --to-destination 10.0.3.4:3000
Run Code Online (Sandbox Code Playgroud)
这允许做(外部数据包)# --> HOST:3000 --> CONTAINER:3000
它工作得很好。但是,当我在一个容器内(不是上一条规则中使用的那个),并且我想访问端口 3000 上的另一台主机(比如 HOST2)时,我的数据包被重定向到我的容器。它确实:
(容器包内)# --> HOST2:3000 --> HOST:3000 --> CONTAINER:3000
而不是(在容器包内)# --> HOST2:3000 --> HOST:3000 --> HOST2:3000
我试图将上面的规则更改为
iptables -t nat -A PREROUTING -s 10.0.3.0/24 -p tcp --dport 3000 -j DNAT --to-destination 10.0.3.4:3000
Run Code Online (Sandbox Code Playgroud)
为了说:如果数据包来自容器,请不要应用该规则,但这不起作用。任何帮助都会很棒,问候
这是我的 iptables 规则:
Chain PREROUTING (policy ACCEPT 154 packets, 29925 bytes)
pkts bytes target prot opt in out source destination …Run Code Online (Sandbox Code Playgroud) 我已经阅读了许多关于这个主题的文章和答案,并且我一直在与 Linode 支持人员进行讨论,但似乎没有人能够回答我的确切问题。
看起来很简单 - 我想使用 iptables 防火墙来限制对除 22、80 和 443 之外的所有端口的访问。Linode 在这里写得很好:https : //library.linode.com/securing-your-server#sph_creating -a-firewall并且我按原样使用了他们的防火墙规则。防火墙运行良好。
我还想预先路由一些端口,因为这是一个 nodejs 应用程序。所以我使用了:
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3000
Run Code Online (Sandbox Code Playgroud)
如果我没有防火墙规则,这些规则会起作用。事实上,我现在正在使用它们,但我不得不关闭防火墙。
如果我添加防火墙规则,则PREROUTING停止工作。如果我将活动的 iptables 规则保存到文件中进行查看,则防火墙(过滤规则)和PREROUTING(nat 规则)都存在,但只有防火墙规则有效。看这里:
# Generated by iptables-save v1.4.18 on Wed Mar 26 02:40:04 2014
*security
:INPUT ACCEPT [1606:135329]
:FORWARD ACCEPT [0:0] …Run Code Online (Sandbox Code Playgroud) 我正在尝试从一台服务器转发到另一台服务器。我尝试了许多 iptables 命令,但它们不起作用。难道我做错了什么?
这是我的设置:
我试过这些命令:
iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 2.2.2.2:15324
iptables -A FORWARD -d 2.2.2.2 -p tcp --dport 15324 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 459 packets, 17802 bytes) pkts bytes target prot opt in out source destination 19 1088 DNAT tcp -- * * 0.0.0.0/0 …
我尝试访问运行 PostgreSQL的Server_A。该服务器位于本地网络上,这就是为什么我必须从可访问且位于同一网络中的Server_B转发端口。
要访问Server_B上的 postgreSQl ,我可以轻松地转发这样的端口:
ssh -L 54320:Server_A:5432 user@Server_B
Run Code Online (Sandbox Code Playgroud)
而在另一个终端:
psql -p 54320 -d db_name -U user
Run Code Online (Sandbox Code Playgroud)
我的问题是我想重现从Server_B网络中存在的机器完成的连接。这台机器可以使用以下命令将自己连接到数据库:
psql -h Server_A -p 5432 -d db_name -U user
Run Code Online (Sandbox Code Playgroud)
我实际上有问题:
通过插入5432:Server_A:5432ssh 命令来转发 5432 端口,我有这个错误:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)
而是直接向前从港口的SERVER_A,我尝试着从港口SERVER_B有-h在参数psql …