我想构建一个应用程序,通过我的应用程序路由所有网络流量(不仅仅是 HTTP)。基本上,我想要的是提供给我的应用程序的所有流量(它们不应该到达实际目标,我的应用程序应该处理这个),然后将这些流量转发到服务器;输入也是如此,只是颠倒了(服务器-> 应用程序-> 需要答案的程序)。是否有任何库(或类似的东西)可以使创建应用程序更容易?我正在寻找可以从 Python 或 Java 中使用的东西,但如果确实需要,我可以学习另一种语言。
我不清楚tun/tap界面是如何工作的。从维基百科,我得到了这个:
操作系统通过 TUN/TAP 设备发送的数据包被传送到用户空间程序,该程序将自身附加到设备上。用户空间程序也可以将数据包传递到 TUN/TAP 设备中。在这种情况下,TUN/TAP 设备将这些数据包传送(或“注入”)到操作系统网络堆栈,从而模拟它们从外部源的接收。
现在,让我们假设我tun用IP12.12.12.1创建了一个。如果这台机器上我有两个网卡,我将能够与这种沟通tun(对12.12.12.1IP来自外部机器(比方说12.12.12.2))无论什么NIC设备的第二机器连接到(假设eth0或eth1) ?
换句话说,tun网卡和网卡是相互独立的,还是需要tun通过特定的网卡与网卡通信?
欢迎提供有关主题的 NB 链接!
iOS 9 添加了 Packet Tunnel Provider 来实现自定义 VPN 协议。但是没有任何可用的信息。有没有人遇到过使用这个隧道提供者的实现?
我试图使用 SSH 隧道来完成一些事情,但我尝试在谷歌上搜索“SSH 隧道”并找到有关各种不同场景的讨论,但不是我的场景。
我正在计算机 A 上工作。我可以通过 SSH 访问计算机 B。我希望计算机 B 运行需要连接到计算机 A 上的端口 40000 的程序 X。问题是,计算机 B 应用了严格的防火墙,而我没有不想修改。我想要的是利用我的能力,轻松地从计算机 A 到计算机 B 连接 SSH,使从 B 到 A 的连接成为可能。
这就是我的设想:我在计算机 A 上运行的程序 Y,它通过 SSH 连接到计算机 B,然后在计算机 B 上侦听端口 40000 上的连接,并通过 SSH 连接将它们转发到端口 40000然后我在计算机 B 上配置程序 X 来尝试连接到计算机 B 上的端口 40000,然后它实际上连接到计算机 A 上的端口 40000。
是否有现有的程序/SSH 配方可以执行此操作?
我正在尝试通过从 TunnelProvider 的 XCode 模板开始,然后将代码添加到主机应用程序来配置并启动它来制作自定义 TunnelProvider 网络扩展。
我正在使用 NETunnelProviderManager 的实例来配置它,当我调用 saveToPreferencesWithCompletionHandler: 时,我获得成功(错误 = 0)。但是,当我在(非零)连接上调用 startVPNTunnelAndReturnError: 时,我总是收到以下错误:
错误域=NEVPNErrorDomain代码=1“(空)”
我已经阅读了所有相关的Apple文档,并尝试使我的程序看起来尽可能接近SimpleTunnel测试程序,但是我无法确定为什么我得到这个“1”(这似乎表明配置问题) 。
我在网上的帖子中看到其他一些人也遇到了同样的问题,但没有解决方案。
我有所需的特殊权利,我知道这不是问题,因为使用正确的配置文件后,我能够看到弹出窗口,确认我要在运行应用程序时添加 VPN,然后将其添加到 VPN 下的“设置”中。
这是我的代码,以防相关:
NETunnelProviderManager * man = [[NETunnelProviderManager alloc] init];
NETunnelProviderProtocol *protocol = [[NETunnelProviderProtocol alloc] init];
[protocol setServerAddress:@"aaa.bbb.ccc.ddd"]; // not actual value
[protocol setUsername:@"testuser"];
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
NSData *data = [[NSData alloc] init];
[dictionary setObject:@"UUID" forKey:(id)kSecAttrService];
[dictionary setObject:data forKey:(id)kSecValueData];
[dictionary setObject:(__bridge id)kSecAttrAccessibleAlways forKey:(id)kSecAttrAccessible];
[dictionary setObject:(__bridge id)kSecClassGenericPassword forKey:(id)kSecClass];
[dictionary setObject:(__bridge id)kCFBooleanTrue forKey:(id)kSecReturnPersistentRef];
CFTypeRef passwordRef = nil; …Run Code Online (Sandbox Code Playgroud) 在苹果提供的simpleTunnel示例应用程序中,容器应用程序和数据包隧道提供商使用 IPC 进行通信。
每当启用连接切换按钮时,都会调用startVPNTunnel() API,并且操作系统会启动数据包隧道提供程序,该提供程序又会调用重写的方法startTunnelWithOptions()。这是我们开始连接 VPN 服务器的地方。startTunnelWithOptions依次调用startTunnel,startTunnel调用createTCPConnectionToEndpoint ( connection =provider.createTCPConnectionToEndpoint(endpoint,enableTLS:false, TLSParameters:nil,delegate:nil) )
我们如何从该连接获取套接字描述符(以便我可以在另一个发送 SSL 和其他自定义消息的 C++ 库中使用它)?( connnection 是类NWTCPConnection的实例,但NWTCPConnection似乎不包含套接字描述符)
我需要一些帮助来访问远程 jupyter 笔记本实例
通常,当我尝试访问在我的 Mac 上的远程服务器上运行的 jupyter 笔记本时,我将在终端窗口中编写以下内容来创建隧道
ssh -NL $local_port_number:localhost:$remote_port_number $my_username@$remote_server
之后,我通常可以通过http://localhost:local_port_number访问 jupyter 服务器
我如何在 Windows 上的 Putty 中执行此操作?我知道连接>>ssh>>隧道中有一些选项可以执行此操作,但到目前为止我无法使配置正常工作。
在 Mac 上使用 sshfs 后,我无法再看到我的用户目录。
当我打开终端窗口时,我看到以下内容:
Last login: Mon May 22 10:54:30 on ttys003
mkdir: /Users/<username>/.bash_sessions: Device not configured
-bash: /Users/<username>/.bash_profile: Device not configured
touch: /Users/<username>/.bash_sessions/35166655-583B-47CC-9BCF-5E785DD5E46E.historynew: Device not configured
Run Code Online (Sandbox Code Playgroud)
有没有什么办法解决这一问题?
干杯保罗
当我使用时minikube tunnel,我遇到一个问题,它不断询问我 sudo 密码。
它每隔约 5 秒就会询问一次密码。如果我不输入密码,则会出现错误退出。如何避免重复的密码问题?
以下日志显示了我的问题(首先输入密码 --> 没有错误,5 秒后我没有输入任何密码 --> 错误)
minikube tunnel
[sudo] Password for user:
Status:
machine: minikube
pid: 31390
route: 10.96.0.0/12 -> 192.168.39.82
minikube: Running
services: []
errors:
minikube: no errors
router: no errors
loadbalancer emulator: no errors
Status:
machine: minikube
pid: 31390
route: 10.96.0.0/12 -> 192.168.39.82
minikube: Unknown
services: []
errors:
minikube: error getting host status for minikube: getting connection: getting domain: error connecting to libvirt socket.: virError(Code=45, Domain=60, Message='Authentifikation gescheitert: access …Run Code Online (Sandbox Code Playgroud) 这可能是重复的,但我找不到该用例的任何内容。
设置:
MySQL 实例 - 只有白名单上的 IP 可以通过 ip/user/pass 连接。没有操作系统/SSH 访问权限。
授权服务器 - 我有 root 访问权限。位于 MySQL 实例的白名单中。可以通过 mysql -h -u -p 进入MySQL实例。
开发笔记本电脑 - Windows 笔记本电脑。无法列入动态 dhcp 的白名单。可以通过 SSH 连接到授权服务器。
这是所有 IT 基础设施,无法更改。
我使用 DBeaver 并设置“使用 SSH 隧道”通过授权服务器隧道进入 MySQL 实例,没有问题。
我也可以使用适用于 Windows 的 git bash 从开发笔记本电脑隧道进入授权服务器。(但这对我没有任何帮助)
ssh -L 3306:localhost:3306 Authorized_Server
Dev Laptop 如何在 MySQL 实例上运行 nodejs mysql 查询?
谢谢你,
瑞安
tunnel ×10
networking ×3
ssh ×3
ios ×2
ios9 ×2
tcp ×2
firewall ×1
java ×1
kubernetes ×1
macos-sierra ×1
minikube ×1
mysql ×1
node.js ×1
packet ×1
provider ×1
putty ×1
python ×1
sockets ×1
ssh-tunnel ×1
user-profile ×1
vpn ×1