我基本上是尝试通过 SSH 连接到始终连接到 VPN 的 RPi,这会导致 SSH 失败。我已收到关于如何解决这个问题的一些想法,在我看来最好的办法是让 SSH 流量通过第二个路由表。
问题是,对于我这样的网络菜鸟来说,这相当复杂。所以我想知道我是否可以得到一些入门的指点,因为我完全迷路了。特别是关于如何标记 SSH 流量以通过第二个表。
谢谢
-A
编辑:再次感谢 Marius 的回答。我终于有时间处理这个问题了,以下是我所做的。
- sudo modprobe ip_conntrack
- sudo iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j CONNMARK --set-mark 1
- 然后以 root 身份:
- echo 200 hma >> /etc/iproute2/rt_tables
- ip 路由添加 10.0.1.0/24 dev eth0 表 hma
- ip 规则添加 fwmark 1 表 hma
但似乎不起作用。由于我真的不知道该怎么做,所以这并不奇怪。
更具体地说,我对 2) 和 4) 真的不确定。2) 完全正确吗?对于 4),我在哪里可以找到要添加的正确 IP,/24 是什么意思,它是否应该通过 eth0(我的 vpn 似乎是 tun0)?
再次感谢
EDIT2:重启后,我实际上已经失去了对 pi 的 SSH 访问权限 :(
答案1
这其实很简单,对我们所有人来说都很幸运:让我将 IP2 称为第二个路由表中本地主机的 IP 地址。然后您要做的就是:
ssh -b IP2 me@some_remote_machine
该-b
选项指示 ssh bind
(IE,用作源地址)到 IP 地址 IP2。如果您已经设置了第二个路由表,则使用如下规则
ip rule from IP2 table2
其中 table2 是第二个路由表,一切就绪。