使用 1 对 1 静态 nat 破解 SSH

使用 1 对 1 静态 nat 破解 SSH

所以我在 192.168.200.0/24 的私有内部网络中有一个虚拟机,IP 地址为 192.168.200.2。

外网地址为192.168.1.0/24。我想将外部 IP 上的所有流量转发到 192.168.200.2 上的虚拟机。这就是我所做的......

首先,我向接口添加辅助 IP

ip addr add 192.168.1.111 dev eno1

然后我使用这 2 个 iptables 命令来设置 nat

iptables -t nat -A PREROUTING -d 192.168.1.111 -j DNAT --to-destination 192.168.200.2
iptables -t nat -A POSTROUTING -s 192.168.200.2 -j SNAT --to-source 192.168.1.111

这确实有效。我现在可以 ssh 到 192.168.1.111,并且我将位于 IP 为 192.168.200.2 的 kvm 实例中。

但是,我的问题有时是在 ssh 中,我的整个连接都会冻结。当我运行类似top或 之类的命令时,这种情况总是会发生,systemctl或者这是锁定整个控制台之前man ip 的输出示例top

top - 19:45:58 up 2 days, 23:56,  3 users,  load average: 0.00, 0.00, 0.05
Tasks: 106 total,   1 running, 105 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   3936.3 total,   2479.2 free,    150.1 used,   1307.0 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   3505.6 avail Mem

应该有比这个更多的输出 ^^^ 从这里我不能 ctrl C、ctrl Z 或 q 当我在 中时man。当我不使用 192.168.1.111 并使用 192.168.200.2 进行连接时,问题就消失了。我知道只有当我使用 192.168.1.111 连接时才会出现这种情况。

问题可能是 MTU 碎片吗?

任何帮助,将不胜感激。

编辑:我刚刚了解到任何超过 1472 的内容ping -s 1472 192.168.1.111都会被丢弃。

答案1

所以我的问题完全是MTU。主机物理接口上的 mtu 为 1500,虚拟设备上的 mtu 为 1450(这用于 vxlan 封装)。除此之外,主机上的虚拟机的 mtu 为 1500,这导致了整个问题。

修改linux中的mtu

ip link set dev eth0 mtu 1500

相关内容