我正在编写一个 P2P 应用程序,希望避免用户手动设置端口转发。
我有点困惑,因为似乎有两种不同的协议来配置 NAT,UPnP/IGD 和 NAT-PMP。我应该使用哪一个?所有 NAT 都支持它们吗?或者我应该同时支持两者以确保 NAT 至少支持其中之一?
我有一个特定的场景,我想解决.我目前通过端口转发连接到主机:
laptop -> gateway -> remote_server_1
Run Code Online (Sandbox Code Playgroud)
和另一位主持人:
laptop -> remote_server_2
Run Code Online (Sandbox Code Playgroud)
使用无密码登录.这两个远程服务器都不对外界可见.现在我正在remote_server_2上运行一项服务,我希望能够访问remote_server_1.我认为我必须设置从remote_server_1到我的笔记本电脑的反向端口转发,然后再到remote_server_2,但我不知道如何做到这一点.以前有人遇到过这种情况吗?
编辑:完整的解决方案,以防其他人需要它:
mylaptop$ ssh -L 3001:localhost:3000 server_2
server_2$ netcat -l 3000
Run Code Online (Sandbox Code Playgroud)
然后通过以下gateway方式设置隧道server_1:
ssh -t -t -L 3003:server_1:22 gateway
Run Code Online (Sandbox Code Playgroud)
然后从server_1以下位置访问:
ssh -R 3002:localhost:3001 -p3003 localhost
echo "bar" | nc localhost 3002`
Run Code Online (Sandbox Code Playgroud)
嘿presto server_2显示bar:-)
我正在尝试建立一个简单的静态网站,我有一个nginx的问题,这个问题很复杂,最明显的是我的ISP阻止了所有入站端口80的流量.
首先,我设置了一个Web前端,以便www.mysite.com重定向到mysite.com:8000,然后设置我的路由器将端口8000转发到运行nginx的服务器.这绕过了我的ISP在端口80上的阻塞.我现在正试图让服务器上的nginx将端口8000上的请求代理到端口80上的虚拟主机,这样该网站在加载后将显示为mysite.com比mysite.com:8000.
我一直试图用nginx的proxy_pass指令来做这件事,但无论我做什么,该网站总是显示为mysite.com:8000.
这是我到目前为止所拥有的:
server {
listen [::]:8000
server_name mysite.com;
location / {
proxy_pass http://127.0.0.1:80;
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
}
}
server {
listen 127.0.0.1:80;
server_name mysite.com;
root /var/www/homepage;
index index.html;
.
. (non-relevant stuff)
.
}
Run Code Online (Sandbox Code Playgroud)
链接到实际网站:http://www.bjacobel.com
我也尝试通过将路由器上的端口8000转发到端口80,并让nginx在端口80上侦听,但是仍然显示其中包含:8000的URL.
谢谢你的帮助!
我正在尝试使用Vagrant制作一个LAMP盒子.我被告知使用起来非常简单.我是网络和虚拟机的新手,对Linux/Ubuntu的经验很少.我目前正在尝试按照官方文档页面上的教程:http://docs.vagrantup.com/v2/getting-started/networking.html.
我已经了解了文档中的网络文章,似乎无法使其正常工作.
现在问题是,由于我对网络和基于Linux的操作系统的经验不足,我不知道从哪里开始故障排除.我会尽力提供尽可能多的信息.
我正在使用最新版本的Virtualbox和Windows 8.1运行最新版本的Vagrant.
根据教程,我目前的Vagrantfile如下所示:
Vagrant.configure(2) do |config|
config.vm.box = "hashicorp/precise32"
config.vm.provision :shell, path: "bootstrap.sh"
config.vm.network :forwarded_port, host: 4567, guest: 80
end
Run Code Online (Sandbox Code Playgroud)
我的bootstrap.sh文件如下所示:
#!/usr/bin/env bash
apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
rm -rf /var/www
ln -f /vagrant /var/www
fi
Run Code Online (Sandbox Code Playgroud)
当我访问http://127.0.0.1:4567时,它显示包含此消息的错误页面:
Not Found
The requested URL / was not found on this server.
===================================================
Apache/2.2.22 (Ubuntu) Server at 127.0.0.1 Port 4567
Run Code Online (Sandbox Code Playgroud)
我宁愿不编辑任何配置文件,除非有解释,因为我觉得这将是一种解决方法.但无论如何,任何帮助将不胜感激.如果我需要打开一个端口,那么我如何才能考虑使用XAMPP.
我是第一次尝试使用Docker,我正试图让一个Spring Boot Web应用程序在Docker容器中运行.我正在构建应用程序(将其打包成一个独立的jar),然后将其添加到Docker镜像(这就是我想要的).
你可以在GitHub上的这个Bootup回购中找到我的SSCCE,它的README具有重现我所看到的所有指令.但基本上:
docker build -t bootup .哪个成功docker run -it -p 9200:9200 -d --name bootup bootup然后容器似乎启动就好了,正如docker ps下面输出的证据http://localhost:9200,我什么都没得到docker ps 输出:
CONTAINER ID IMAGE COMMAND CREATED
a8c4ee64a1bc bootup "/bin/sh -c 'java -ja" 2 days ago
STATUS PORTS NAMES
Up 12 seconds 0.0.0.0:9200->9200/tcp bootup
Run Code Online (Sandbox Code Playgroud)
Web应用程序配置为在端口9200上运行,而不是 Java默认值8080.您可以通过运行在docker之外运行应用程序(因此,只在本地主机上)来自行查看./gradlew clean build && java -jar build/libs/bootup.jar.
据我所知,我的主机上没有运行阻止端口的防火墙(我在Mac 10.11.5上验证System Preferences >> …
如果用户位于特定的Active Directory组中,是否可以仅允许通过SSH端口隧道使用端口?
我有一台客户端计算机,一台Windows Web服务器和一台带有数据库的Linux服务器.我希望客户端能够使用SSH连接到数据库,但前提是它们位于特定的AD组中.
有没有办法实现这个目标?
根据文档,我已经设置并部署了包含三个CockroachDB pod的Kubernetes状态集.我的最终目标是在不需要使用kubectl的情况下查询数据库.我的中间目标是查询数据库而不实际炮轰到数据库pod中.
我将一个端口从一个端口转发到我的本地机器,并尝试连接:
$ kubectl port-forward cockroachdb-0 26257
Forwarding from 127.0.0.1:26257 -> 26257
Forwarding from [::1]:26257 -> 26257
# later, after attempting to connect:
Handling connection for 26257
E0607 16:32:20.047098 80112 portforward.go:329] an error occurred forwarding 26257 -> 26257: error forwarding port 26257 to pod cockroachdb-0_mc-red, uid : exit status 1: 2017/06/07 04:32:19 socat[40115] E connect(5, AF=2 127.0.0.1:26257, 16): Connection refused
$ cockroach node ls --insecure --host localhost --port 26257
Error: unable to connect or connection lost.
Please check …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 nginx 配置中为 20K 端口(范围 [40k-60k])添加映射。这个配置被添加到 nginx.conf
stream{
server {
listen 40000;
listen 40001;
.
.
.
listen 60000;
proxy_pass <backend-url>:$server_port;
}
}
Run Code Online (Sandbox Code Playgroud)
当映射数小于 500 时,一切都很好。但是当它增加到 20K 映射时,响应延迟是巨大的。任何解决方法或任何其他方法来添加端口转发?
我不确定这是否是由于端口转发使用私钥而不是密码引起的,但这是我正在尝试做的
我需要将本地端口 3308 一直转发到我的 SQL 数据库 3306。
我可以在本地的终端中一起运行这样的事情
ssh -L 3308:localhost:3307 username@jumpbox "ssh -L 3307:mysqlDB:3306 username@server"
Run Code Online (Sandbox Code Playgroud)
或者在我的本地运行第一部分,然后在 jumpbox 上运行第二部分。两者都工作正常,我可以连接到我的 localhost:3308。
当我开始使用 JSch 时,问题就来了。这是我的代码
JSch jsch = new JSch();
jsch.addIdentity("~/.ssh/id_rsa");
Session session = jsch.getSession("username", "jumpbox");
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
int assinged_port = session.setPortForwardingL(3308, "localhost", 3307);
Session mysqlSession = jsch.getSession("username", "server", assinged_port);
mysqlSession.setConfig("StrictHostKeyChecking", "no");
mysqlSession.connect(); // Connection timed out here
mysqlSession.setPortForwardingL(3307, "mysqlDB", 3306);
Run Code Online (Sandbox Code Playgroud)
第一个连接已完成,但第二个连接超时。
线程“main”com.jcraft.jsch.JSchException 中的异常:java.net.ConnectException:操作超时(连接超时)
我在 JSch 或端口转发方面做错了吗?
我在桌面上有一个网络套接字服务器,在 iPhone 设备上有一个客户端。我想使用 USB 而不是任何网络与他们通信。我已经使用 adb reverse 在 android 上实现了它,但无法找到任何适用于 iOS 的解决方案。
我曾尝试使用 usbmuxd 和 iproxy 来实现它,但它们只进行端口转发而不是反向转发。我真的很感激这方面的一些帮助。
portforwarding ×10
ssh-tunnel ×3
java ×2
linux ×2
nginx ×2
port ×2
cockroachdb ×1
docker ×1
ios ×1
iptables ×1
jsch ×1
kubernetes ×1
lamp ×1
macos ×1
nat ×1
openssh ×1
p2p ×1
proxy ×1
ssh ×1
tunneling ×1
upnp ×1
usb ×1
vagrant ×1
virtualbox ×1
websocket ×1