在上面的网络图中,我的目标是从系统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