我很难解决这个问题 - 我正在尝试编写一个与Linux隧道驱动程序交互的程序.在最基本的层面上,我只想创建一个能够通过网络隧道传输数据的应用程序.但是,我完全不知道如何正确设置隧道驱动程序以实现此目的.
我在Ubuntu 9.04上开发,我加载了隧道驱动程序内核模块.
存在设备/dev/net/tun,但是没有/dev/tunX设备.我无法使用创建这些设备ifconfig- /sbin/ifconfig tun0 up例如,每当我运行时,我都会收到以下错误:
获取接口标志时的tun0:ERROR:没有这样的设备.
如果我尝试查看/dev/net/tun设备,则会出现以下错误:
cat:/ dev/net/tun:文件描述符处于错误状态.
尝试/dev/tunX通过一个小程序打开,基本上,简单
tun_fd = open( "/dev/tun0", O_RDWR )
Run Code Online (Sandbox Code Playgroud)
返回-1:应用程序以root身份运行,但仍无法打开此隧道设备.可以打开/dev/net/tun,但这似乎不会生成/dev/tunX要使用的新设备.
总而言之 - 如何编写希望使用Linux隧道驱动程序的应用程序?任何见解将不胜感激.
谢谢; 〜罗伯特
我想用Java创建一个SSH隧道.我在另一篇文章中发现了不少Java SSH库.在深入研究每个选项之前,也许有人可以给我一些他们如何做到的代码片段,或者至少告诉我哪个客户端库最有效.
我只需要隧道.我不需要文件传输,终端仿真等等.是否有一些简单的代码行可以转发服务器上的端口以在我的客户端的localhost适配器上工作?理想情况下,客户端和服务器都是Java,但我现在只会满足于客户端.
我有一个python脚本从远程机器获取数据包并将它们(os.write(self.tun_fd.fileno(),'..join(packet)))写入tun接口gr3:
Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.0.0.6 P-t-P:10.0.0.8 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:61 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:5124 (5.0 KiB) TX bytes:0 (0.0 b)
Run Code Online (Sandbox Code Playgroud)
我想通过单独的pong脚本接收这些数据包,如下所示:
import threading, os, sys, fcntl, struct, socket
from fcntl import ioctl
from packet import Packet
HOST = '10.0.0.6'
PORT = 111
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
data = conn.recv(1024) …Run Code Online (Sandbox Code Playgroud) 修复(编辑代码以反映我所做的更改)
我正在尝试使用java通过ssh隧道连接到mongo数据库.
我正在使用mongo驱动程序3.0.2和jcraft(Jsch)来创建一个ssh隧道.我的想法是:
我的代码看起来像这样:
// forwarding ports
private static final String LOCAL_HOST = "localhost";
private static final String REMOTE_HOST = "127.0.0.1";
private static final Integer LOCAL_PORT = 8988;
private static final Integer REMOTE_PORT = 27017; // Default mongodb port
// ssh connection info
private static final String SSH_USER = "<username>";
private static final String SSH_PASSWORD = "<password>";
private static final String SSH_HOST = "<remote host>";
private static final Integer SSH_PORT = 22;
private static Session SSH_SESSION; …Run Code Online (Sandbox Code Playgroud) 我已经使用PuTTY设置了一个反向ssh隧道,允许我将VNC转换为家用计算机而无需启用NAT端口转发.效果很好,没问题.
我想将隧道设置为"持久服务",它将在启动时连接并在删除时重新连接.PS.这是在Windows上.
详尽的谷歌搜索发现了一些产品,但许多似乎已被抛弃,似乎没有一个主要的"街头信誉".
有没有人有这种类型的东西或任何这些产品的经验?我不需要所有的花里胡哨,只需要可靠性.
这是我很难找到答案的问题.这是我没有的东西:
这是我DO有:
这是我尝试的一个镜头,似乎是不成功的(人和地方和机器的名称已被改变,以保护无辜):
失败的甜网络图http://i48.tinypic.com/or1a3b.png
SVN为什么不工作?
嗯,我怀疑SVN不喜欢SOCKS.有人有建议吗?
我刚刚在本地机器上安装了ngrok,跑了
ngrok http 80
Run Code Online (Sandbox Code Playgroud)
照常.
但是当我尝试访问端口80时
localhost:80
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息
与http://*******.ngrok.io的连接已成功通过隧道连接到您的ngrok客户端,但客户端无法建立与本地地址localhost:80的连接.
我真的不确定为什么会这样,并浏览stackoverflow,但我不太明白我读到的答案.希望从这里重新诊断并建立理解.
操作系统是Mac OS.
我的macbook上有一个SSH隧道设置,就像这样......
$ ssh -o ServerAliveInterval=3 -N -L 22222:gitosis-server:22 user@firewall.domain.com
所以我可以ssh到localhost:22222并最终将防火墙后面的gitosis服务器.
我创建了一个本地id_rsa.pub文件,将其复制到gitosis服务器(运行Centos5),然后使用...将其导入gitosis.
# sudo -H -u gitosis gitosis-initIt was successful as I can see the public key in /var/lib/gitosis/.ssh/authorized_keys.
Back on my macbook I setup a ~/.ssh/config file with the following...Host gitosis-server Hostname localhost HostKeyAlias gitosis-server.domain.com Port 22222所以...我认为这个命令应该有效......
$ git clone gitosis@gitosis-server:gitosis-admin.git然而,它不会因为它要求输入密码....当公钥应该工作时.
Initialized empty Git repository in /Users/USER/Development/gitrepo/gitosis-admin/.git/ gitosis@localhost's password:关于让git工作到防火墙后面的gitosis服务器的任何想法?
谢谢,
马特
编辑 - 从SSH尝试添加调试
我做了这个命令,'ssh -vvv gitosis @ gitosis-server'.我得到了一些调试,它似乎不喜欢我的身份.
debug2: key: /Users/USER/.ssh/id_rsa.gitosis (0x1019b0) debug1: Authentications …
许多Windows MySQL工具(如Navicat或EMS)都有这个功能 - 您只需将PHP文件放在共享主机上,即可通过该php文件公开的Web服务将本地运行程序连接到Web上的远程MySQL服务器.
是否有任何流行的免费解决方案将完整的MySQL作为使用PHP的Web服务公开?
我正在使用localtunnel v1.但是我发现v2允许你自定义子域,我需要这个功能.
我跟着介绍的教程README从资源库,但它让我感到困惑的几个部分,并在结束时,它没有工作.
第一步是在端口号上运行一些web-app:checked.8000.
然后,它说了一些关于主机名的内容:
Localtunnel使用主机名执行一些操作,因此您需要设置两个主机名.一个用于localtunnel注册,一个用于本地隧道.通常它需要一个通配符,但我们只是硬编码这个示例隧道的主机名.
example.localtunnel.local - > 127.0.0.1
localtunnel.local - > 127.0.0.1您可以在/ etc/hosts中执行此操作或使用该奇特的ghost实用程序.
我迷路了,但我仍然编辑了我/etc/hosts:
127.0.0.1 localhost
127.0.1.1 my-pc-name
127.0.0.1 example.localtunnel.local
127.0.0.1 localtunnel.local
Run Code Online (Sandbox Code Playgroud)
下一步...
现在您可以启动服务器了.它基于config目录中的配置文件.您可以创建自己的,但是这个配置为在端口9999上运行服务器并且期望主机名localtunnel.local
ginkgo config/default.conf.py
哪一个?无论如何......我根据localtunnel repo的目录中的文件创建了myconfig.conf.py /deploy:
port = 9999
hostname = 'localtunnel.local'
service = 'localtunnel.server.TunnelBroker'
Run Code Online (Sandbox Code Playgroud)
但是,当我跑:
lt --broker 127.0.0.1:9999 --name example 8000
Run Code Online (Sandbox Code Playgroud)
我有:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/gevent/greenlet.py", line 390, in run
result = self._run(*self.args, **self.kwargs)
File "/usr/local/lib/python2.7/dist-packages/localtunnel/client.py", line 53, in …Run Code Online (Sandbox Code Playgroud)