AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题

问题[port-forwarding](computer)

Martin Hope
Luis
Asked: 2024-11-07 06:31:03 +0800 CST

ufw 端口范围转发

  • 6

我需要将 UDP 协议的一系列端口转发到容器。

在文件中before.rules,包含一行:

-A PREROUTING -p tcp -i eth0 --src-range 49000-60000 -j DNAT --to-destination 10.100.100.2

但ufw对选项有抱怨--src-range。该怎么办?

port-forwarding
  • 1 个回答
  • 23 Views
Martin Hope
gZee
Asked: 2024-08-18 07:06:21 +0800 CST

尝试通过 WireGuard 和端口转发通过 NAT 访问本地托管的 Web 服务器:主机无法访问

  • 5

我有一个程序“SillyTavern”,它使用 WebUI,本质上是一个 Web 服务器。我的第一个目标是让这个程序的 WebUI 可以通过我的智能手机从任何地方访问。我通过在路由器中设置端口转发规则来实现这一点,该规则将我的 PC 的私有 IP 链接到路由器的公共 IP([我的公共 IP]:7215 到 192.168.0.10:7215)。

我的下一个目标是找到一种方法来加密我的两个设备之间的流量。我找到的解决方案是 WireGuard,我的实现如下:

  • 首先,我安装了 WireGuard,并根据 WireGuard 的快速入门指南在我的 PC 上进行了设置。wg0 的私有 IP 设置为 192.168.0.200/24,我的配置文件如下:
PrivateKey = [. . .]
ListenPort = 7215

[Peer]
PublicKey = [. . .]
PresharedKey = [. . .]
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 10
  • 然后,我在智能手机上设置了WireGuard。配置如下:
Addresses = 192.168.0.201/24
DNS Servers = 8.8.8.8
Listen Port = 7215
MTU = "Auto"
Allowed IPs = 0.0.0.0/0
Persistent Keepalive = 10
  • 最后,我将路由器中的端口转发规则更改为“[我的公共 IP]:7215 到 192.168.0.200:7215”。我在两台机器上都激活了 WireGuard,并尝试访问 Web 服务器:连接超时。

我所做的任何研究都没有给我任何提示,让我知道我哪里出了问题。我尝试将端口转发规则改回以前的样子,结果是一样的。如果我尝试仅在 PC 上运行 WireGuard 进行连接,我可以正常连接。提前感谢您提供的任何见解。


[更新于 08/18/24] 我在手机配置中的“端点”字段中添加了“[我的路由器的公共 IP]:7215”。这似乎完成了隧道,因为现在我的手机显示以下内容:

Transfer
rx: 440B, tx: 3.66KiB
Latest handshake
3 seconds ago

但是,当我尝试通过手机浏览器访问我的网络服务器时,仍然会出现连接超时的情况。

port-forwarding
  • 1 个回答
  • 44 Views
Martin Hope
Kristi Jorgji
Asked: 2024-04-22 07:46:30 +0800 CST

我可以在连接到主路由器的第二个路由器中进行端口转发吗?

  • 5

我遇到了一个奇怪的情况。

我有 ISP 路由器,但没有密码!我无法登录 192.168.1.1 并配置端口转发。

我还有一台未使用的第二个华硕路由​​器。我连接了 isprouter lan 1 -> 华硕的互联网端口,现在我家里有一个工作正常的辅助网络。我可以将具有 LAN 或 WiFi 的设备连接到华硕路由器,然后它们可以访问互联网。

问题:

如果我在华硕路由器中进行端口转发,这是否可以正常工作,并且我不必更改 isp 路由器本身的端口转发?

示例:具有 mac aa:bb 的设备通过 WIFI 连接到 AsusRouter,并且 IP 地址为 192.168.50.7

我想端口转发 udp 和 tcp 6667。如果我将 AsusRouter 配置为端口转发,即使 ISPRouter 没有这样的规则,它也会工作吗?

port-forwarding
  • 1 个回答
  • 38 Views
Martin Hope
Rohit Gupta
Asked: 2023-09-21 21:09:36 +0800 CST

Panasonic Media Center / TV Anytime 工作的正确端口转发规则是什么

  • 5

我正在尝试将松下录音机设置为可以在本地网络之外查看。里面工作得很好。没有任何规则,它根本就行不通。如果没有最终的 UDP 规则,一切都会正常 - 节目会显示,但播放会失败并出现connection failed错误。

规则在这里

服务器的IP地址 协议 港口
114.179.237.36 传输控制协议 48443
114.179.237.36 传输控制协议 48501~48502
114.179.237.129 传输控制协议 47808
114.179.237.23 传输控制协议 47825
114.179.237.54 传输控制协议 49000~49030
114.179.237.55 传输控制协议 49000~49030
任何 传输控制协议 第443章
任何 UDP协议 任何

我已将它们设置为

在此输入图像描述

我对最终的 UDP 规则有一些疑问

  1. 太宽了。任何端口都可以!!!
  2. 我的路由器 Ubiquiti UDM-Pro 不允许通配符端口号

如果我为 UDP 规则输入端口 1-65000,那么我就可以播放。

有谁知道用于此用途的 UDP 端口的限制范围?

请注意,这是从本地网络外部连接到我的计算机。

port-forwarding
  • 1 个回答
  • 28 Views
Martin Hope
Andrei Andriushin
Asked: 2022-09-11 05:06:33 +0800 CST

使用多个 ISP 接口配置 DNAT

  • 5

我已将 Ubuntu pc 配置为路由器,并且对具有多个输入接口的 DNAT 规则感到困惑。当我尝试 ping ISP-1 IP时,路由器从 external_p 应答,ISP-2 IP从 external_s 应答。但是当我打开ISP-1 IP :80 或ISP-2 IP :80 时,它会从 external_p 回答两个 IP。如何使用收到请求的接口配置它对 DNAT 的应答?

ip rule show
0:  from all lookup local
300:    from <ISP-1 IP> lookup external_p
400:    from <ISP-2 IP> lookup external_s
32766:  from all lookup main
32767:  from all lookup default

ip route
default via <ISP-1 GW> dev vlan_ext_p metric 100
default via <ISP-2 GW> dev vlan_ext_s metric 200

ip route show table external_p
default via <ISP-1 GW> dev vlan_ext_p proto static
ip route show table external_s
default via <ISP-2 GW> dev vlan_ext_s proto static

iptables-save
*nat
-A PREROUTING -i vlan_ext_p -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.4.2
-A PREROUTING -i vlan_ext_s -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.4.2
-A POSTROUTING -s 172.16.0.0/12 -o vlan_ext_p -j MASQUERADE
-A POSTROUTING -s 172.16.0.0/12 -o vlan_ext_s -j MASQUERADE
COMMIT

*filter
-A FORWARD -d 172.17.4.2/32 -i vlan_ext_p -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A FORWARD -d 172.17.4.2/32 -i vlan_ext_s -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m conntrack --ctstate INVALID -j DROP
-A FORWARD -s 172.16.0.0/12 -j ACCEPT
port-forwarding iptables
  • 1 个回答
  • 51 Views
Martin Hope
libXelar.so
Asked: 2022-08-22 14:55:09 +0800 CST

将环回 IP 转发到另一个 IP

  • 5

我有环回 IP127.0.a.b和远程(非公共)IPx.x.x.x

我需要在我的 ubuntu 机器上实现流量“转发”,这样所有来/去的流量都x.x.x.x:9092将被重定向到127.0.a.b:9092.

根据我的理解,做nc -zv x.x.x.x 9092应该是成功的(这就是我要测试转发的方式)

我正在尝试使用 iptables 来实现这一点。这是我尝试过的,但这不起作用

./fw_helper.sh xxxx 127.0.ab 9092

#!/bin/bash
src_ip=$1
dst_ip=$2
port=$3

sudo iptables -X
sudo iptables -F
sudo iptables -t nat -F
sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

sudo iptables -A FORWARD -p tcp -s $src_ip --sport $port -d $dst_ip --dport $port -j ACCEPT
sudo iptables -A FORWARD -p tcp -s $dst_ip --sport $port -d $src_ip --dport $port -j ACCEPT

sudo iptables -t nat -A PREROUTING -p tcp -s $src_ip --sport $port --dport $port -j DNAT --to-destination $dst_ip
sudo iptables -t nat -A POSTROUTING -p tcp -d $dst_ip --sport $port --dport $port -j MASQUERADE
sudo iptables -A INPUT -p tcp --sport $port --dport $port -d $dst_ip -s $src_ip -j ACCEPT

我做错了什么?

networking port-forwarding
  • 2 个回答
  • 60 Views
Martin Hope
StoneThrow
Asked: 2022-08-21 15:49:15 +0800 CST

主机 PC 和 Docker 容器之间的接口和端口之间的关系是什么?

  • 5

前提:

我正在尝试将最近关于网络接口和端口的 学习汇总在一起,并尝试将新的学习与 Docker 联系起来。

快速总结一下我学到的与这个问题相关的东西:

  • 每台计算机可以有多个 IP 地址,每个网络接口一个。
  • IP 地址分配给接口,而不是计算机等。
  • 套接字是 IP+端口。
  • DHCP 通常/很可能将 IP 地址分配给接口。

与使用软件的许多方面一样,我首先按照我学到的“仪式”做事,因为“这就是它的完成方式”。然后随着时间和经验,我开始思考和探究其中的缘由。所以我想把这个新的学习与 Docker 联系起来。

我学到的“惯例”是,如果容器化应用程序正在侦听 TCP 套接字,则需要“公开”该套接字的端口,以便到达该端口的主机接口之一的流量被“转发”到容器。
例如docker run -d -p 81:80 httpd,如果我将 Web 浏览器指向 127.0.0.81,那么进行设置,HTTP/TCP/IP 流量将“转发”到httpd容器的端口 80。

因此,当我将 Web 浏览器指向 127.0.0.1:81 时,我看到 Apache 的“It works!” 信息。

而且:如果我将我的网络浏览器指向 127.0.0. 2:81或 127.0.0。16:81,然后我也看到了 Apache 的“It works!” 信息。

正如我从链接的帖子中了解到的那样,DHCP 为我的 NIC 接口分配了 IP 地址 10.0.0.17,如果我将 Web 浏览器指向 10.0.0.17:81,我再次看到 Apache 的“It works!” 信息。
如果我将同一网络上另一台 PC 的 Web 浏览器指向 10.0.0.17:81,它也可以工作。


问题:

我的主要问题是:当您docker run使用-p参数时,哪个主机 PC 的接口(IP 地址)是从主机转发到容器的端口?通过注意到的观察,答案似乎是“所有接口”——是这样吗?

不过,更广泛地说:主机 PC 和 Docker 容器之间的接口和端口之间的关系是什么?


我试过的

我尝试阅读docker run帮助文本,但它的文本-p没有达到我可以将其与我提出的问题联系起来的水平:

-p, --publish list 将容器的端口发布到主机

我尝试在ifconfig我的 PC 和正在运行的httpd容器的上下文中运行查看。
ifconfig在主机 PC 上:

$ ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:caff:fe23:f0f4  prefixlen 64  scopeid 0x20<link>
        ether 02:42:ca:23:f0:f4  txqueuelen 0  (Ethernet)
        RX packets 3079  bytes 322688 (322.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6429  bytes 15942682 (15.9 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 17975  bytes 1557651 (1.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 17975  bytes 1557651 (1.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.17  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::5f8c:c301:a6a3:6e35  prefixlen 64  scopeid 0x20<link>
        ether f8:59:71:01:89:cf  txqueuelen 1000  (Ethernet)
        RX packets 1672559  bytes 2237440808 (2.2 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 726083  bytes 113598143 (113.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ifconfig在正在运行的httpd容器中(我安装了它apt-get):

# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.3  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:03  txqueuelen 0  (Ethernet)
        RX packets 1326  bytes 8916833 (8.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1134  bytes 76866 (75.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

把这个问题放在上面ifconfig输出的上下文中,主机 PC 上的那些接口和 docker 容器中的接口有什么关系?
从这里,我的理解是 DHCP 为我的主机 PC 上的 NIC 分配了 10.0.0.17。但是 172.17.0.3 是从哪里来的呢?

networking port-forwarding
  • 1 个回答
  • 35 Views
Martin Hope
Koala
Asked: 2022-08-09 22:29:29 +0800 CST

为什么双NAT组网互通只能单向工作?

  • 5

所以我建立了一个简单的网络:首先是调制解调器,然后是路由器,路由器后面是我的终端设备。我可以从路由器后面的局域网访问调制解调器网络,但是当我尝试从调制解调器端访问路由器后面的局域网时,什么也没有发生。为什么呢?我不太明白这一点,想知道路由器是否将调制解调器视为其本地网络上的设备,因此连接有效,但调制解调器没有将其自己的 NAT 视为本地网络的一部分?我应该怎么做才能从调制解调器与路由器后面的本地网络进行通信?

router port-forwarding
  • 1 个回答
  • 51 Views
Martin Hope
Greg
Asked: 2022-04-15 09:55:05 +0800 CST

无法访问防火墙后面的节点(尽管有规则)

  • 6

这是一个与我在 2019 年提出的另一个问题相似但不同的问题。我认为它完全不同,可以提出一个新问题。

我编写了一个使用 CORS(跨源资源共享)的 Node Express 应用程序。我仍在尝试远程开发(SSH 到服务器)。VS Code 运行良好,我可以通过 SSH 连接到服务器和路由器 (OpenWRT) 以供管理员使用。

当我运行应用程序时,它告诉我它正在运行。通过 SSH 使用 Links(命令行浏览器)到服务器,我可以看到 JSON 响应,所以我知道它正在运行。

我已经运行export PORT=8080它现在被代码正确拾取

应用程序代码是:

// Based on a // Tutorial from https://www.bezkoder.com/react-node-express-mysql/ converted to access database of solar power generation values
const express   = require("express");
const cors      = require("cors");
const HOSTNAME  = '0.0.0.0';
const PORT      = process.env.PORT || 8082;
const app       = express();

// const db = require("./app/models");
// db.sequelize.sync();

var corsOptions = {
  origin: `http://${HOSTNAME}:${PORT}`
};

app.use(cors(corsOptions));

// parse requests of content-type - application/json
app.use(express.json());

// parse requests of content-type - application/x-www-form-urlencoded
app.use(express.urlencoded({ extended: true }));

//const PORT = process.env.PORT || 8082;

// simple route
app.get("/", (req, res) => {
  res.json({ message: `Welcome to Greg's application on localhost: ${PORT}.` });
});

// set port, listen for requests
app.listen(PORT, () => {
  console.log(`Server is running on port:- ${PORT}.`);
});

出于某种原因,它从 中获取后备端口 8082,而const PORT = process.env.PORT || 8082;不是 var corsOptions = { origin: http://${HOSTNAME}:8080中指定的端口 };

如果我curl -v -X -H http://<my static WAN IP>:8082/从远程终端运行。我明白No route to host了 - 请参阅下面的 DNAT 规则

如果我curl -v -X -H http://<localhost> or <0.0.0.0>:8082/通过 ssh 从我的服务器终端运行。我明白了

*   Trying ::1:8082...
* TCP_NODELAY set
* Connected to localhost (::1) port 8082 (#0)
> -H / HTTP/1.1
> Host: localhost:8082
> User-Agent: curl/7.66.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 400 Bad Request
< Connection: close
<
* Closing connection 0

我相信我已经正确设置了用于端口转发的 DNAT 路由规则(我有三个规则。8080,8081 和 8082 各有一个,用于实验目的) - 已编辑(另请参阅 OpenWRT链接以获取规范和链接用于解释“选项”与“列表”)

config redirect
        option dest_port '8080'
        option src 'wan'
        option name 'Tranq8080'
        option src_dport '8080'
        option target 'DNAT'
        option proto 'tcp'
        option dest_ip '<server's LAN address>'
        option dest 'lan'

我找不到远程访问应用程序 http 的方法。我不知道是防火墙、代码还是浏览器中的某种跨脚本巫术(我认为远程 CURL 拒绝表明它不是后者)?

帮助?

networking port-forwarding
  • 1 个回答
  • 146 Views
Martin Hope
hosa
Asked: 2022-04-10 07:16:13 +0800 CST

我可以使用动态 DNS 服务绕过被阻止的端口吗?

  • 5

从另一篇文章中,我考虑到我可能落后于“运营商级 NAT”.. 这种技术禁用端口转发.. 好的.. 我不知道如何解决我目前的情况.. 我可以使用 IPv6,然后这个将使我能够转发?.. 我不确定我的 ISP 是否支持 IPv6(他们通常都支持吗?).. 也请不要忘记标题中的问题..

port-forwarding ipv6
  • 2 个回答
  • 294 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve