AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1814053
Accepted
Ryan
Ryan
Asked: 2023-10-25 22:10:32 +0800 CST2023-10-25 22:10:32 +0800 CST 2023-10-25 22:10:32 +0800 CST

如何从子网通过 SSH 退出

  • 772

我有一个如下图所示的家庭网络设置(请原谅画得不好)。VM1是一个 VPN“路由器”,它将所有流量重定向VMBR1到WG(wireguard)接口。我已成功将 iptables 配置为在 SSH 从我的家庭网络 ( 192.168.0.0/24) 进入VM1或VM2( 192.168.1.0/24) 时跳转主机。这是 iptables 配置VM1:

# forward traffics from eth1 to wg interface
iptables -t nat -A POSTROUTING -o wg -j MASQUERADE
iptables -A FORWARD -i eth1 -o wg -j ACCEPT

# SSH jumping from home network to VM1/VM2
iptables -t nat -A PREROUTING -d 192.168.0.0/24 -p tcp --dport 2222 -i eth0 -j DNAT --to-destination 192.168.1.101:22

到目前为止,它只是单向 SSH,这意味着我无法从 VM2 ( 192.168.1.101) 到家庭设备(例如192.168.0.132)进行 SSH。我尝试将其添加到最顶部,但仍然无法 SSH

iptables -t nat -A PREROUTING -s 192.168.1.101/32 -p tcp --dport 2222 -i eth1 -j DNAT --to-destination 192.168.0.132:22

ipVM1 的输出

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether <REDACTED> brd ff:ff:ff:ff:ff:ff
    altname enp0s0
    inet 192.168.0.101/24 brd 192.168.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::84de:7bff:feff:6731/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether <REDACTED> brd ff:ff:ff:ff:ff:ff
    altname enp1s1
    inet 192.168.1.1/24 brd 192.168.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::e455:aeff:fe62:7cc1/64 scope link
       valid_lft forever preferred_lft forever
4: wg: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 10.X.X.X/32 scope global sg
       valid_lft forever preferred_lft forever
    inet6 fd7d:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/128 scope global
       valid_lft forever preferred_lft forever

$ ip ru
0:      from all lookup local
32764:  from all lookup main suppress_prefixlength 0
32765:  not from all fwmark 0xca6c lookup 51820
32766:  from all lookup main
32767:  from all lookup default

$ ip r show table all
default dev wg table 51820 scope link
default via 192.168.0.1 dev eth0 proto static
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.101
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1
local 10.X.X.X dev wg table local proto kernel scope host src 10.X.X.X
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo table local proto kernel scope link src 127.0.0.1
local 192.168.0.101 dev eth0 table local proto kernel scope host src 192.168.0.101
broadcast 192.168.0.255 dev eth0 table local proto kernel scope link src 192.168.0.101
local 192.168.1.1 dev eth1 table local proto kernel scope host src 192.168.1.1
broadcast 192.168.1.255 dev eth1 table local proto kernel scope link src 192.168.1.1
default dev wg table 51820 metric 1024 pref medium
::1 dev lo proto kernel metric 256 pref medium
fd7d:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX dev wg proto kernel metric 256 pref medium
fe80::/64 dev eth1 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
local ::1 dev lo table local proto kernel metric 0 pref medium
local fd7d:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX dev wg table local proto kernel metric 0 pref medium
anycast fe80:: dev eth0 table local proto kernel metric 0 pref medium
anycast fe80:: dev eth1 table local proto kernel metric 0 pref medium
local fe80::84de:7bff:feff:6731 dev eth0 table local proto kernel metric 0 pref medium
local fe80::e455:aeff:fe62:7cc1 dev eth1 table local proto kernel metric 0 pref medium
multicast ff00::/8 dev eth1 table local proto kernel metric 256 pref medium
multicast ff00::/8 dev eth0 table local proto kernel metric 256 pref medium
multicast ff00::/8 dev wg table local proto kernel metric 256 pref medium

知道如何解决这个问题吗?提前致谢。 设置

编辑:我的设置基于此图,这应该显示不同的子网。

在此输入图像描述

networking
  • 1 1 个回答
  • 52 Views

1 个回答

  • Voted
  1. Best Answer
    Tom Yan
    2023-10-25T23:43:58+08:002023-10-25T23:43:58+08:00

    好吧,显然出于某种原因,您希望使用192.168.1.1:2222“代表” 192.168.0.132:22,即使您实际上可以ssh直接在 VM2/VM3 上/从 VM2/VM3 直接使用后者。

    正如我所提到的,无论哪种方式,192.168.0.101您都需要在家庭网络(相关设备或路由器)上有一个正确的路由(即作为网关的路由) 192.168.1.0/24,以便子网的流量可以到达您的虚拟机(而不是转发到您的互联网网关)。请注意,此处的“流量”还包括从家庭网络到虚拟机的 ssh“回复”。

    但显然你也决定只想用它192.168.0.101:some_port来表示 VM2 / VM3 上的“套接字”,那么你可以采用源 NAT 的替代方案:

    iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE
    

    或者

    iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j SNAT --to-source 192.168.0.101
    

    这将消除家庭网络上的路由需求192.168.1.0/24,因为从其他虚拟机到家庭网络的流量现在似乎源自 VM1。

    PS 根据记录,Linux 中的源 NAT 是以有状态方式完成的,这意味着即使您的家庭网络上确实有“正确”路由,源 NAT 也不会192.168.1.0/24阻止对正确路由流量的回复具有“正确” “源 IP(即192.168.1.x)从 转发出去时VM1。只是,如果您希望使用自己的 IP(而不是家庭网络中 VM1 的 IP)从家庭网络访问其他虚拟机,则无论如何都需要该路由,这将导致源 NAT 不必要。

    • 1

相关问题

  • 三台电脑,没有路由器/交换机怎么组网?

  • 用户使用 FileZilla 连接到 SFTP 服务器拒绝连接

  • NAT 后面的 NAT 如何工作(路由器的 NAT 和 ISP 的 NAT)?

  • Win10 1803:如何让移动热点成为专用网络?

  • nc如何识别服务名称

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve