将流量从 VPN 客户端路由到互联网(Tincdaemon+Ubuntu)

将流量从 VPN 客户端路由到互联网(Tincdaemon+Ubuntu)

我在 Ubuntu 虚拟机上运行了一个 tinc 守护进程。我的路由表如下所示:

default via 10.0.2.2 dev enp0s3  proto static  metric 100 
10.0.0.0/24 dev vpnnet  scope link 
10.0.2.0/24 dev enp0s3  proto kernel  scope link  src 10.0.2.15  metric 100 
169.254.0.0/16 dev enp0s3  scope link  metric 1000 

其中 - 10.0.2.0/24 - 本地网络子网,10.0.0.0/24 - VPN 子网

接口:

vpnnet    Link encap:Ethernet  HWaddr b2:e8:0b:22:22:f1  
          inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::b0e8:bff:fe22:22f1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:62 errors:0 dropped:0 overruns:0 frame:0
          TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2736 (2.7 KB)  TX bytes:5760 (5.7 KB)

enp0s3    Link encap:Ethernet  HWaddr 08:00:27:12:d8:be  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::5333:40a8:822c:e6f9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6428 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2575 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6131799 (6.1 MB)  TX bytes:200156 (200.1 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:206 errors:0 dropped:0 overruns:0 frame:0
          TX packets:206 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15740 (15.7 KB)  TX bytes:15740 (15.7 KB)

enp0s3 - 本地接口名称,vpnnet - VPN 接口名称。10.0.0.1 - VPN 服务器,10.0.0.131 - VPN 客户端。

客户端的默认网关已替换,因此它只能 ping 服务器(10.0.0.1)而不能ping其他任何内容。

客户端的路由表:

0.0.0.0/1 via 10.0.0.254 dev tap0
server-static-ip via 192.168.1.1 dev wlan0
10.0.0.0/8 dev tap0  proto kernel  scope link  src 10.0.0.131
10.0.0.254 dev tap0  scope link
128.0.0.0/1 via 10.0.0.254 dev tap0
192.168.1.0/24 dev wlan0  proto kernel  scope link  src 192.168.1.46  metric 310
192.168.1.1 dev wlan0  scope link

我希望客户端能够通过我的 Ubuntu 服务器访问互联网。(有点像代理)据我所知,我需要通过 enp0s3 上的默认网关将来自我的 vpn 客户端的所有流量路由到互联网并返回。我需要对我的路由表/NAT 进行哪些更改才能实现此目的?

我看了一些文章,其中描述了使用 iptables POSTROUTING 规则解决此问题的方法,但对我来说似乎没有任何效果。

帮助!

答案1

你没有提到哪个客户端使用的网关地址。是否设置为10.0.0.1(您的 IP)?如果是,则一切正常 – 只需按照完全一样制作您自己的路由器的说明(教程)。大致如下:

  1. 使用 sysctl 在系统范围内启用 IPv4 转发net.ipv4.conf.all.forwarding

  2. 添加 iptables/nft 伪装规则,以便您的客户端的数据包被 SNAT。

或者(技术上更清晰,但配置更多):

  1. 启用IPv4转发;

  2. 不要进行 NAT,而是进行配置你的10.0.0.0/24上游路由器通过您的 IP具有静态路由10.0.2.15

相关内容