添加远程网络的路由

添加远程网络的路由

我的网络方案:

|localhost| tun1--> VPN <--tun0 |work station| wlan0--> |router| --> (10.128.0.0/16)

本地主机:Arch Linux x86-64

工作站:CentOS 6 x86-64

我想直接从本地主机连接到 10.128.0.0/16 网络,无需 SSH 端口转发等。工作站可以访问此网络。此外,工作站在 VPN 中有静态 IP 10.255.255.252。

从工作站到 10.128.0.0/16 中的主机的跟踪路径:

$ tracepath 10.128.29.59
 1?: [LOCALHOST]     pmtu 1500
 1:  192.168.225.1 (192.168.225.1)                         15.293ms 
 1:  192.168.225.1 (192.168.225.1)                          2.119ms 
 2:  192.168.225.1 (192.168.225.1)                          2.085ms pmtu 1409
 2:  no reply
 3:  10.128.29.59 (10.128.29.59)                           15.655ms reached
     Resume: pmtu 1409 hops 3 back 3

192.168.255.1 是工作站的默认网关:

$ ip route | grep default
default via 192.168.225.1 dev wlan0

我尝试在本地主机上添加路由,但失败了:

# ip route add 10.128.0.0/16 via 10.255.255.252
RTNETLINK answers: Network is unreachable

我猜,以这种方式向远程网络添加路由是相当幼稚的。我该如何正确地做到这一点?也许我应该以某种方式在 10.255.255.252 上共享路由表?

编辑1:

我尝试了 Marius 的建议

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

但它没有改变任何东西。iptables NAT 表现在在工作站上显示以下内容:

# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

编辑2:

我能够使用 SSH 端口连接到 10.128.0.0/16 网络中的端口

ssh -L 5432:10.128.29.59:5432 [email protected]

经过此转发后,我能够通过 localhost:5432 连接到 10.128.29.59:5432。因此,我真正想要的只是直接连接到 10.128.29.59:5432 的选项。

编辑3:

我使用 openvpn 连接到 VPN。

本地主机上的 ip 路由:

$ ip route
default via 192.168.1.1 dev wlp2s0 src 192.168.1.253 metric 302 
10.0.0.0/16 via 192.168.193.29 dev tun1 
10.255.0.0/16 via 192.168.193.29 dev tun1 
192.168.1.0/24 dev wlp2s0 proto kernel scope link src 192.168.1.253 metric 302 
192.168.193.0/24 via 192.168.193.29 dev tun1 
192.168.193.29 dev tun1 proto kernel scope link src 192.168.193.30 
193.26.135.101 via 192.168.193.29 dev tun1 
213.24.160.78 via 192.168.193.29 dev tun1

工作站上的 ip 路由:

$ ip route
193.26.135.101 via 10.255.255.251 dev tun0 
213.24.160.78 via 10.255.255.251 dev tun0 
10.255.255.251 dev tun0  proto kernel  scope link  src 10.255.255.252 
192.168.193.0/24 via 10.255.255.251 dev tun0 
192.168.225.0/24 dev wlan0  proto kernel  scope link  src 192.168.225.165 
10.0.0.0/16 via 10.255.255.251 dev tun0 
10.255.0.0/16 via 10.255.255.251 dev tun0 
default via 192.168.225.1 dev wlan0

从本地主机使用 nmap 映射 10.128.0.0/16 中的一个感兴趣的端口:

$ nmap -p5432 10.128.29.59/32

Starting Nmap 7.31 ( https://nmap.org ) at 2016-11-02 11:40 MSK
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 3.11 seconds

从工作站:

$ nmap -p5432 10.128.29.59/32

Starting Nmap 5.51 ( http://nmap.org ) at 2016-11-02 11:42 MSK
Nmap scan report for 10.128.29.59
Host is up (0.034s latency).
PORT     STATE SERVICE
5432/tcp open  postgresql

Nmap done: 1 IP address (1 host up) scanned in 0.16 seconds

答案1

直接连接意味着您要使用第 3 层路由。路由的工作原理非常简单:数据包进入路由器并按照由目标地址确定的方向退出(至少在正常路由中)。然后进入下一个路由器并重复相同的过程,直到数据包到达目的地(或因无法到达而撞到墙上)。

这要求向前方向全部通往 10.128/16 的路由器应具有一条通往某处的 10.128/16 路由(最好是通往链中的下一个路由器)。它还要求全部路由器中的回溯路径有一条 192.168.1.0/24 的路由(最好是向后),以使答复能够到达您的机器。

除非你正确地做到这一点全部路径中的路由器(vpn路由器)将无法工作。

(如果您不管理中间跳,您可以在本地主机和目标之间使用简单的 GRE 隧道:它在每个包上使用~42 字节的开销,但设置起来相对简单,只要您在两端都有“智能”主机。)

相关内容