标签: forwarding

什么是ssh端口转发,ssh本地和远程端口转发有什么区别

我对 ssh 端口转发以及 ssh 本地和远程端口转发之间的区别感到困惑。你能详细解释一下并举例说明吗?谢谢!

ssh forwarding

250
推荐指数
2
解决办法
15万
查看次数

当我启用 net.ipv4.ip_forward=1 时到底会发生什么?

假设我遇到这种情况,我编写了一个程序来毒害本地网络中的 2 个设备(假设 A 和 B)的 ARP 缓存,以便成功地从设备 M 进行 MITM。该程序在设备 M 上运行。当我启用使用设备 M 上的命令进行 IP 转发sysctl net.ipv4.ip_forward=1,可以毫无问题地建立从设备 A 到 B 的 HTTP 连接,并且我能够看到设备 M 上的流量。

但是,同样的情况,在我使用设备 M 上的命令禁用 IP 转发后sysctl net.ipv4.ip_forward=0,ARP 缓存中毒,无法建立从设备 A 到 B 的 HTTP 连接。我可以在设备 M 上看到来自设备 A 的 TCP SYN 数据包。在我的程序中,在设备M上收到SYN数据包后,我将数据包中的src MAC地址修改为M的MAC地址(来自A的MAC地址)和dst MAC地址到B的MAC地址(来自M的MAC地址)并将其注入网络。我不会从网络层开始修改任何内容。我可以使用 TCPdump 命令看到 B 处的数据包具有新的 src 和 dst MAC,这意味着数据包到达了 B。但是 B 没有响应该数据包,我无法理解为什么。

那么,问题是,ip_forward=1这种 MITM 情况有什么特殊之处吗?澄清一下,所有的机器都是Linux的。在设备 M 上启用转发后,我不需要修改数据包中的 MAC 地址。我只是毒害了缓存,从那里一切正常。

networking ip kernel tcp forwarding

13
推荐指数
2
解决办法
2万
查看次数

Linux iptables ssh 端口转发(火星拒绝)

我有一个 Linux 网关为我的家庭网络执行 NAT。我有另一个网络,我想透明地将数据包转发到,但只能转发到/来自特定的 IP/端口(即不是 VPN)。以下是一些要使用的示例 IP 和端口:

Source          Router          Remote Gateway     Remote Target
192.168.1.10 -> 192.168.1.1 ->  1.2.3.4        ->  192.168.50.50:5000
Run Code Online (Sandbox Code Playgroud)

我希望源机器能够与远程目标上的特定端口通信,就好像它可以直接从路由器路由一样。在路由器上,eth0 是专用网络,eth1 是面向 Internet 的。远程网关是另一台 Linux 机器,我可以通过 ssh 连接到它,它可以直接路由到远程目标。

我尝试一个简单的解决方案是在路由器上设置 ssh 端口转发,例如:

ssh -L 5000:192.168.50.50:5000 1.2.3.4
Run Code Online (Sandbox Code Playgroud)

这适用于路由器,它现在可以本地连接到端口 5000。因此“telnet localhost 5000”将按预期连接到 192.168.50.50:5000。

现在我想通过现在建立的 ssh 隧道重定向来自 Source 和漏斗的流量。我为此尝试了 NAT 规则:

iptables -t nat -D PREROUTING -i eth0 -p tcp -s 192.168.1.10 --dport 5000 -d 1.2.3.4 -j DNAT --to-destination 127.0.0.1:5000
Run Code Online (Sandbox Code Playgroud)

并且由于路由器已经是我的 NAT 网关,它已经具有所需的路由后规则:

-A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

本网站或其他地方的大多数问答似乎都涉及转发服务器端口或发夹式 …

linux ssh iptables forwarding

12
推荐指数
1
解决办法
1654
查看次数

如果打开,iptables 会将流量转发到 vpn 隧道

我使用以下指南将我的树莓派设置为接入点:

Raspberry Pi 3 作为 wifi 接入点

我转发wlan0eth0和内廷我所有的流量。效果很好!

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE  
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT  
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT 
Run Code Online (Sandbox Code Playgroud)

现在我想设置相同的规则,除了使用接口tun0-00并通过我的 vpn 隧道转发我的所有流量。我确实想发送所有内容,不希望任何内容泄漏到主机网络中。想想它是这样的:

sudo iptables -t nat -A POSTROUTING -o tun0-00 -j MASQUERADE
sudo iptables -A FORWARD -i tun0-00 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A …
Run Code Online (Sandbox Code Playgroud)

iptables openvpn forwarding tunneling

11
推荐指数
1
解决办法
6万
查看次数

net.ipv6.conf.all.forwarding=1 是否等同于为所有单个接口启用转发?

或者它是启用 IPv6 转发的唯一方法?

/proc/sys/net/ipv6/conf# grep '' */forwarding
all/forwarding:0
default/forwarding:1
eth0/forwarding:1
lo/forwarding:1
nat64/forwarding:1
tunl0/forwarding:1
veth_cm/forwarding:1
wifi0/forwarding:1
wlan0/forwarding:1
Run Code Online (Sandbox Code Playgroud)

不路由。我在 Wireshark 中看到数据包,但它们没有到达 ip6tables。

/proc/sys/net/ipv6/conf# grep '' */forwarding
all/forwarding:1
default/forwarding:1
eth0/forwarding:1
lo/forwarding:1
nat64/forwarding:1
tunl0/forwarding:1
veth_cm/forwarding:1
wifi0/forwarding:1
wlan0/forwarding:1
Run Code Online (Sandbox Code Playgroud)

现在网络开始工作。

/proc/sys/net/ipv6/conf# grep '' */forwarding
all/forwarding:1
default/forwarding:0
eth0/forwarding:0
lo/forwarding:0
nat64/forwarding:0
tunl0/forwarding:0
veth_cm/forwarding:0
wifi0/forwarding:0
wlan0/forwarding:0
Run Code Online (Sandbox Code Playgroud)

网络仍然有效。甚至使用那些单独的每个接口的交换机吗?可能是 Linux 内核错误(现在运行版本 4.9.5)。

linux networking routing ipv6 forwarding

7
推荐指数
1
解决办法
2万
查看次数

当 systemd 拥有远程套接字时,如何通过 ssh 使用 GPG 代理转发?

我正在尝试遵循这些指南和答案

\n\n

以及我能找到的其他任何东西来完成这项工作:

\n
    \n
  • 从 macOS 到 ubuntu 18.04 的 SSH
  • \n
  • 转发我的本地 gpg 代理,以便我可以gpg --decrypt在远程计算机上。
  • \n
\n

我已经将我的公钥编辑到远程机器上--export--import远程 gpg 报告驻留在\n 中的代理套接字/run/user/1001/gnupg/S.gpg-agent,以及位于 中的额外套接字/run/user/1001/gnupg/S.gpg-agent.extra

\n

然而,试图ssh -v -R /run/user/1001/gnupg/S.gpg-agent:/Users/rasmus/.gnupg/S.gpg-agent.extra -l rasmus <remote-host>警告说

\n
\n

警告:侦听路径 /run/user/1001/gnupg/S.gpg-agent 的远程端口转发失败

\n
\n

这可能是因为 systemd 已经拥有远程套接字。

\n
$ sudo journalctl -xe\n\xe2\x80\xa6\nMar 11 15:06:21 pact-cube sshd[4972]: error: bind: Address already in use\nMar 11 15:06:21 pact-cube …
Run Code Online (Sandbox Code Playgroud)

ssh gpg forwarding gpg-agent unix-sockets

7
推荐指数
1
解决办法
2548
查看次数

net.ipv4.conf.all.forwarding 和 net.ipv4.ip_forward 之间的区别

根据https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt

conf/all/*    is special, changes the settings for all interfaces
Run Code Online (Sandbox Code Playgroud)
forwarding - BOOLEAN
    Enable IP forwarding on this interface.  This controls whether packets
    received _on_ this interface can be forwarded.
Run Code Online (Sandbox Code Playgroud)
ip_forward - BOOLEAN
    0 - disabled (default)
    not 0 - enabled

    Forward Packets between interfaces.

    This variable is special, its change resets all configuration
    parameters to their default state (RFC1122 for hosts, RFC1812
    for routers)
Run Code Online (Sandbox Code Playgroud)

因此,net.ipv4.conf.all.forwarding=0禁用所有接口上的 IPv4 数据包转发,与net.ipv4.ip_forward=0禁用所有接口上的 IPv4 数据包转发,与禁用所有接口上的 IPv4 数据包转发

net.ipv4.conf.all.forwarding任何人都可以解释一下内核参数和内核参数之间的区别吗net.ipv4.ip_forward …

networking linux-kernel forwarding kernel-parameters

7
推荐指数
1
解决办法
3973
查看次数

Postfix 配置 - 保留信封

我有一个 postfix 服务器,它可以发送邮件并将外发邮件的副本发送到第二台服务器以使用以下配置进行内容分析(地址和 IP 已被替换):

main.cf 内容

sender_bcc_maps = pcre:/$config_directory/sender_bcc
Run Code Online (Sandbox Code Playgroud)

sender_bcc 内容

/^(.*)@(.*)$/                   ${1}@tst.example.com
Run Code Online (Sandbox Code Playgroud)

transport_maps 内容

tst.example.com     smtp:[192.168.1.1]
Run Code Online (Sandbox Code Playgroud)

不幸的是,上面的配置没有保留信封,所以我没有在第二台服务器上获得原始收件人。拥有原始收件人的目标是捕获密件抄送。有没有办法只通过配置 Postfix 来做到这一点?一个好的结果的例子是让后缀添加类似的东西

x-bcc: test@example.com
or
x-original-recipient: test@example.com
Run Code Online (Sandbox Code Playgroud)

到发送到第二台服务器的电子邮件标头(并且只有它们。显然,我们不想在发送给用户的电子邮件中添加密件抄送标头或类似内容)。

我到处找,没有找到任何可以添加原始收件人的内容。也许还有其他方法?欢迎提出任何达到最终目标的建议!

email postfix forwarding

6
推荐指数
1
解决办法
2309
查看次数

无法将流量从 eth 转发到 TUN/TAP

我正在尝试将流量从物理接口转发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)

我想让所有数据包从enp5s0tun0,所以我必须使用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我用、 …

iptables vpn forwarding tunneling

6
推荐指数
1
解决办法
9762
查看次数

IPTABLES:在本地处理数据包并将副本发送到另一台主机

我在配置 iptables 时遇到了麻烦:一些客户端向服务器发送消息。我希望主机服务器在本地处理消息(主机 A,正常情况下),但另外对于每条消息(tcp 数据包)将数据包的副本发送到另一台主机(主机 B,运行服务器的修改版本,我想看看相同消息的行为如何,以便我可以比较两台服务器)。应该用iptables来完成。我已尝试使用以下命令。这些将数据包发送到 B,但主机 A 不处理消息(应该由第二个命令完成?)。

iptables -t nat -A PREROUTING -p tcp --dport 31090 -j DNAT --to-destination IP_HOST_B:32090
iptables -t nat -A POSTROUTING -p tcp --dport 32090 -j SNAT --to-source IP_HOST_A:31090
Run Code Online (Sandbox Code Playgroud)

我在配置中遗漏了什么来实现我的目标?

谢谢你。

linux routing iptables forwarding packet

5
推荐指数
1
解决办法
8650
查看次数