小编Mar*_*ark的帖子

通过 SSH 的局域网唤醒

多年来,我一直在为我的许多 Linux 设备成功地使用 Wake-on-LAN。它运作良好。

不过,我家里也有一台 Mac Mini。我注意到它进入睡眠状态并且有两个不同的属性,与我在睡眠时拥有的任何 Linux 机器分开:

  1. 它仍然响应网络上的 ping。

  2. 它将在传入ssh连接时自动唤醒,无需 LAN 唤醒。

这第二个属性最终非常好:它在不使用时自动进入睡眠状态并节省电量,并且当我想通过 ssh 进入它时不需要任何额外的考虑来打开电源。它只是自动唤醒。在我注销后,15 分钟后它会再次进入睡眠状态。

我的假设是这是因为 Apple 控制着硬件和软件堆栈。因此,虽然全行业的 Wake-on-LAN 是一种基于魔术数据包的网络设备功能(不需要操作系统交互),但 Mac 的神奇“LAN 唤醒并且仍然响应 ping”是因为它们实际上并没有使整个操作系统进入睡眠状态和/或有一个单独的网络堆栈仍在睡眠模式下运行。但这只是一个猜测。

我很好奇是否有人在 Linux 机器上见过或实现了这种“Wake-on-incoming-SSH”?或者这种特殊的魔法是否只能在 Apple 设备上找到,它们可以通过软件控制硬件,并且可以以其他行业无法做到的方式做到这一点?

linux ssh wake-on-lan

13
推荐指数
1
解决办法
9579
查看次数

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
查看次数

nftables ip 设置多个表

用例:我今天有一个使用 iptables 的家用路由器。我正在研究转换为 nftables,因为它看起来更易于管理许多规则。

我今天在 iptables 下设置的一件事是“country-block”ipset,其中包含涵盖大多数随机端口探测/黑客尝试的国家/地区 CIDR 块。不幸的是,nftables 不能直接使用我现有的 ipset,但是将其转换为 nftables ip 集相当简单。

问题:为了避免有一个单独的大型 nftables 文件,我选择将我的“国家/地区块”集分离到一个单独的文件中。nftables 可以轻松包含其他文件,因此这似乎完全符合 nftables 的预期行为。我已经定义了我的国家/地区区块:

table ip country-block {
  set country-block {
    type ipv4_addr;
    flags interval;
    elements = { /* CIDR blocks here */ }
  }
}
Run Code Online (Sandbox Code Playgroud)

这很好加载。现在我想在我的防火墙过滤器中使用它。我在主配置文件“table inet filter”中定义了一个表。在这里我想添加规则:

ip saddr @country-block drop
Run Code Online (Sandbox Code Playgroud)

在我所有的谷歌搜索答案之后,这是我找到的引用 ip 集的唯一方法。不幸的是,这会引发错误:

Error: Could not process rule: Set 'country-block' does not exist
Run Code Online (Sandbox Code Playgroud)

我尝试引用“country-block@country-block”,希望它可以解析为我创建的 country-block 命名空间,但这不起作用:

Error: syntax error, unexpected drop
   ip saddr country-block@country-block drop
                                        ^^^^
Run Code Online (Sandbox Code Playgroud)

有谁知道引用不同表中的集合的方法吗?我不想把我的所有集合折叠到我的单个“过滤器”表中,并将它们全部保存在一个文件中——这将是多么丑陋的一团糟。

附:我试图标记这个“nftables”,但显然它是一个新标签,我没有创建新标签所需的代表。有需要代表的好心人可以适当地标记一下吗?

linux nftables

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

标签 统计

linux ×3

ssh ×2

forwarding ×1

iptables ×1

nftables ×1

wake-on-lan ×1