程序在 Linux TAP接口上注入数据包(这些数据包来自虚拟机)。具体来说,这些是 DHCP 请求(所以它们是 UDP)。我可以看到带有tcpdump但不带有的数据包iptables,并且它们也无法到达本地 DHCP 服务器。为什么不呢,我该如何解决?
更新:我尝试注入指向tap0接口地址的 IP 数据包。我在 中看到来自 VM 的 ARP 请求tcpdump -i tap0,但网络层没有回复。如果我向 VM 发送 ARP 请求,它会看到它们并回复主机(并且回复会显示tcpdump但会丢失)。
另一个观察结果:ifconfig tap0表明对于注入主机的每个数据包,TX 丢弃的数据包计数增加。为什么是TX?
# ifconfig tap0
…
TX packets:0 errors:0 dropped:958 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Run Code Online (Sandbox Code Playgroud)
长话短说:在 Linux 主机(运行 Ubuntu 10.04)上,我正在运行一个虚拟机,其中包括模拟以太网卡。它通过与负责将以太网数据包注入和捕获到主机网络堆栈的帮助程序进行通信来实现。虚拟机为ARM芯片模拟器,调用helper程序nicserver;我所知道的只是ARM 文档中的内容。
我想在 VM 和主机之间建立以太网链接,在此之上我想要一个 IP 链接。VM 通过 DHCP 获取其 IP 地址。我不希望VM和世界其他地区,仅与主机之间的任何通信,所以我创建了一个虚拟网络接口 …
电脑A(假设ip为44.44.44.44)可以ftp主机130.89.148.12。
ftp 130.89.148.12
Connected to 130.89.148.12.
220 ftp.debian.org FTP server
Name (130.89.148.12:debian8): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
Run Code Online (Sandbox Code Playgroud)
计算机 B(我的本地电脑)无法 ftp 主机 130.89.148.12。让我们以这种方式使用 ssh 命令构建一个 ssh 隧道:
ssh -L -f -N localhost:2121:130.89.148.12:21 root@44.44.44.44
Run Code Online (Sandbox Code Playgroud)
我的本地电脑和计算机 A (44.44.44.44) 之间的 ssh 隧道在密码登录后连接到 44.44.44.44。
然后在我的本地电脑控制台上输入命令:
ftp localhost:2121
ftp: localhost:2121: Name or service not known
Run Code Online (Sandbox Code Playgroud)
我的 ssh 隧道怎么了?
我正在为 Hurricane Electric 的 IPv6 隧道代理设置我的计算机(运行 Debian Buster)。他们提供了几种配置方法的说明,但这里是 iproute2 的说明,我一直将其用于测试目的:
ip tunnel add he-ipv6 mode sit remote 216.66.22.2 local <local-IP-addr> ttl 255
ip link set he-ipv6 up
ip addr add <IPv6-addr>/64 dev he-ipv6
ip route add ::/0 dev he-ipv6
ip -f inet6 addr
Run Code Online (Sandbox Code Playgroud)
当我这样做时,sit0还会出现一个神秘的界面。显然,它与 6in4 隧道相关,但我找不到更多关于它的信息,除了它有点特殊并且每当模块加载时它就存在sit。出于好奇,我尝试为隧道代理配置它,而不是创建新接口,但它似乎无法做到这一点。
这个装置是什么?
我有多台机器打开到我的服务器的反向 ssh 连接。每台机器都使用不同的反向 ssh 端口,我用它来区分机器。我使用这些隧道从服务器登录机器(显然):
me@server:~$ ssh -p 2219 root@localhost
Last login: Sun Jun 7 00:18:44 2015 from localhost
root@remote_machine:~#
Run Code Online (Sandbox Code Playgroud)
远程机器使用完全不同的访问技术(DSL、VSAT、GPRS/EDGE/3G/4G),因此反向 ssh 连接的耐用性有所不同 - 这显然是问题所在。
这是nmap在较长空闲期后列出的内容(即,没有强制重启 ssh 隧道,见下文):
me@server:~$ sudo nmap -sS -p 1000-3000 --open localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2015-06-07 11:09 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000014s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
Not shown: 1988 closed ports
PORT STATE SERVICE
1133/tcp open unknown
1270/tcp …Run Code Online (Sandbox Code Playgroud) 我正在尝试将流量从物理接口转发enp5s0到虚拟接口tun0。目标是tun0基本上接收来自 的所有数据包enp5s0。
首先,我使用命令启用转发
sudo sysctl -w net.ipv4.ip_forward=1
Run Code Online (Sandbox Code Playgroud)
然后我tun0通过运行创建
sudo ip tuntap add dev tun0 mod tun
Run Code Online (Sandbox Code Playgroud)
我为其分配 IP 地址并打开设备:
sudo ifconfig tun0 10.1.8.5 netmask 255.255.255.0 promisc up
Run Code Online (Sandbox Code Playgroud)
我想让所有数据包从enp5s0到tun0,所以我必须使用iptables。我需要制定一条允许从enp5s0to转发的规则tun0,因此命令是
sudo iptables -A FORWARD --in-interface tun0 --out-interface enp5s0 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
然后我通过运行启用 NAT
sudo iptables -t nat -A POSTROUTING --out-interface enp5s0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
tcpdump显示 上没有流量tun0。
另外,我尝试了几乎相同的事情,但使用的是 TAP 设备。brctl我用、 …
我希望能够通过 SSH 通过另一台机器路由我的一部分流量。例如,是否可以通过 ssh 隧道浏览网页并通过您的 LAN 连接浏览网页而无需太多努力?(即我想要从使用隧道到使用 LAN 的无缝过渡)
因此,如何通过 ssh 隧道传输所有网络流量并不是一个简单的问题,而是如何设置一个我可以自行决定使用但不妨碍正常流量的隧道。(根据需要)
我希望在离开 LAN 时对过滤后的流量进行加密,它可以是 ftp、ssh、web、邮件任何流量。
我认为我需要回答/解决的一些问题:
除了隧道,是否还有其他选择来实现通过另一台机器(LAN 外)加密某些流量(用户决定)并让其他流量使用通过 LAN 进入互联网世界的正常流量的结果?
编辑:如果某些答案取决于特定的流量类型,我可以更具体地说明网络流量是主要关注点。然而,诸如 IM/电子邮件流量之类的其他流量将是可取的。
我有以下设置:
Internet
|
Router (192.168.0.1)
|
|--NAS
|--Mac
|--PS3
|--IPT-box
Run Code Online (Sandbox Code Playgroud)
要求:
我已经拥有的硬件可以做到这一点吗?我应该如何以及在哪里配置它?
/是
我想使用两个连续的堡垒主机登录到 linux 服务器。我的.ssh/config文件看起来像这样:
Host *
User username0
Host hostname0
Hostname foo
Host hostname1
Hostname bar
Port 0
ProxyCommand ssh -W %h:%p hostname0
Host hostname2
User username2
Hostname bat
Port 1
ProxyCommand ssh -W %h:%p hostname1
Run Code Online (Sandbox Code Playgroud)
我的用户名hostname0和hostname1是username0,但我的用户名hostname2是username2。
hostname0 和 hostname1 的条目按预期工作。但条目hostname2似乎忽略了该User选项。
ssh hostname2 导致显示:
username0@hostname2's password:
Run Code Online (Sandbox Code Playgroud)
如果我将 hostname2 的 ProxyCommand 更改为,ssh -l username2 -W %h:%p hostname1那么它会要求我输入 username2@hostname1 的密码。
username2@hostname1's password 这是有道理的,因为我要求它以hostname1as登录 …
我有以下配置,想在隧道上建立隧道。我已经阅读了以下主题: 如何将隧道放入隧道?
我的配置:
Notebook --> Linux Server A --> Linux Server B
Run Code Online (Sandbox Code Playgroud)
笔记本:Windows XP with putty
Linux Server A 和 B:Ubuntu 10.10
我有一个 ssh 连接,通过 putty 从我的笔记本到服务器 A 的隧道。现在我想建立一个从服务器 A 到 B 的隧道,以便我可以使用 IDE 直接连接到服务器 B 上的 jboss。
这是我在服务器 A 上尝试建立隧道的命令:
ssh -t -L 8080:localhost:8080 Server B -p 8822
Run Code Online (Sandbox Code Playgroud)
这行不通。
有人知道如何建立工作隧道吗?
我的意思是,如果我有这样的事情:
ssh -L 9000:itc.ua:80 andy@localhost
Run Code Online (Sandbox Code Playgroud)
它会9000在我的本地机器上打开端口,当我http://localhost:9000在 Firefox 中点击时,它会转发itc.ua:80
到目前为止很好。
但是如果我想9000从另一台机器访问那个打开的端口怎么办?例如,我在本地网络上有另一台机器,在另一台机器上我试图用 Firefox 导航http://<IP ADDRESS OF MACHINE WITH MY SSH -L 9000 Tunnel>:9000,但失败了。
有没有办法让它工作?
tunneling ×10
ssh ×5
linux ×4
iptables ×2
networking ×2
vpn ×2
encryption ×1
forwarding ×1
ftp ×1
ip ×1
ipv6 ×1
mobile ×1
modem ×1
nat ×1
proxy ×1
routing ×1
ssh-config ×1
tap ×1
windows ×1