将子网路由到互联网

通过另一个子网上的计算机路由Internet通信

我有2个debian盒,并希望使用其中一个作为VPN服务器,另一个作为客户端。 目标是客户通过服务器的互联网连接访问互联网。 换一种说法:

client(encrypted packets) ---> ISP1 ----> ISP2 ----> server(decrypts packets) ---->ISP2

而反应则相反。

我已经安装了我的TUN设备,并可以ping通。 所以这似乎是一个路由问题。

 client# route -n 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlp1s0 0.0.0.0 0.0.0.0 0.0.0.0 U 1002 0 0 enp2s0 10.0.0.0 10.4.0.1 255.255.255.0 UG 0 0 0 tun1 10.4.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 tun1 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 enp2s0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlp1s0 

显然,目前的互联网请求路由通过192.168.1.1 。 但是,如果我将Mozilla Firefox的代理设置设置为10.0.0.0 ,则无法访问任何内容。 traceroute 10.0.0.0只显示1跳。

 server# route -n 0.0.0.0 192.168.0.1 0.0.0.0 UG 202 0 0 eth0 10.0.0.0 10.4.0.2 255.255.255.0 UG 0 0 0 tun1 10.4.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun1 192.168.0.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0 

什么不见​​了?

这将需要新的路线和防火墙,以帮助您让客户端通过服务器访问Internet。

假设VPN连接用于连接客户端到服务器,客户端和服务器之间的VPN子网是对等的,子网ID是10.40.0.0。

您需要使用以下静态路由更改客户端的默认网关,以将所有非本地stream量转发到服务器:

ip route change default via 10.4.0.2

同时,您需要在服务器的防火墙策略上制定NAT规则,以便面向所有面向互联网的stream量将被视为源自服务器本身。 假设面向Internet的networking接口是eth0 ,NAT规则如下:

iptables -t nat -A POSTROUTING -s 10.4.0.0/24 -o eth0 -j MASQUERADE

希望这可以帮助。