Linux静态路由:Ping专用网络(连接网络图)

在上面的网络图中,我的目标是从系统A ping 192.168.20.20.
我不想配置路由器.

要做到这一点

>首先应转发到192.168.20.0/24的所有流量
10.200.8.14
>然后系统B应该有到192.168.20.20的路由.

有没有办法在系统A中添加路由,以便到达网络192.168.20.0/24,默认网关是10.200.8.14.
即使添加了这样的路由,为了达到10.200.8.14,我们仍然需要默认网关10.201.11.1.

请建议如何实现?

解决方法:

首先想到的是VPN over SSH.请参阅man sshd_config并搜索PermitTunnel.

首先,确保启用PermitTunnel(两个主机)并且/ etc / ssh / sshd_config中的PermitRootLogin(在systemB上)为yes或without-password,并重新加载sshd.

接下来,使用以下命令登录主机10.200.8.14:

# ssh -NTCf -w 0:0 10.200.8.14

以下步骤是使用专用VPN子网配置接口(本例中为192.168.10.0):

systemA # ip link set tun0 up
systemA # ip addr add 192.168.10.10/32 peer 192.168.10.20 dev tun0

systemB # ip link set tun0 up
systemB # ip addr add 192.168.10.20/32 peer 192.168.10.10 dev tun0

然后为系统B后面的网络添加路由:

systemA # ip route add 192.168.20.0/24 via 192.168.10.10
systemA # ping 192.168.20.20

另一种方法是使用sshuttle.从源或包管理器安装sshuttle.然后运行:

systemA # /usr/sbin/sshuttle -D --pidfile /tmp/sshuttle.pid --dns -r user@systemB 192.168.20.0/24

这将要求sudo密码,因为iptables用于路由流量.您可以使用visudo更改/ etc / sudoers文件以避免要求输入密码:

 systemA # visudo
 # add:
 myuser ALL=(ALL) NOPASSWD: /sbin/iptables, /usr/bin/python

一些有趣的参考:

https://help.ubuntu.com/community/SSH_VPN
http://sleepyhead.de/howto/?href=vpn
https://github.com/apenwarr/sshuttle
上一篇:通过SIOCADDRT添加默认网关时指定接口


下一篇:定位系统算法新突破