ubuntu内网穿透教程之流量转发和NAT配置

浩宇看科技 2025-02-19 21:59:06

前段时间我将我的内网穿透服务器的系统从openwrt更改为了ubuntu系统。相比较于openwrt,ubuntu能支持更多的硬件,但在配置网络转发功能上就要比openwrt要复杂一点。作为内网穿透服务器时也就更折腾点了。

常用的内网穿透工具比如zerotier,tailscale。他们会自动配置好防火墙,流量转发和nat配置规则。但他们无法强制禁用p2p模式,所以我选择了需要手动配置的组网工具。

本篇内容主要讲的是内网穿透和异地组网中的流量转发和NAT配置。

zerotier,tailscale和wireguard之类的组网工具,在启动后都会系统中新增一个虚拟网卡。虚拟网卡和真实网卡在功能上是相同的,都可以传输数据。因此和配置两张真实网卡间数据转发方式是一样的。

首先打开ubuntu的ipv4路由转发功能,这样子才能让数据包在两个网卡间相互转发。

vim /etc/sysctl.conf

最后一行添加

net.ipv4.ip_forward=1

保存后退出,下面的命令使配置生效。

sysctl -p

使用下面的命令开启两个网卡之间的数据转发,注意我这里的接入局域网的网卡是ens160,内网穿透的虚拟网卡是wg0。命令内容需要根据自己的实际情况进行更改。

##允许wg0进入的数据通过ens160转发出去iptables -A FORWARD -i wg0 -o ens160 -j ACCEPT##允许ens160进入的数据通过wg0转发出去iptables -A FORWARD -i ens160 -o wg0 -j ACCEPT

用下面的命令配置nat规则,其中ens160是接入需要穿透的局域网的网卡。

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

这条命令的作用是将ens160网卡出去的数据包进行nat。将wg0转发的数据包原地址改为ens160网卡的ip,这样子从访问内网主机后返回的数据包就不会迷路,如果不配置nat则需要两端都配置静态路由规则。

用下面的命令保存iptables规则

iptables-save > /etc/iptables/rules.v4

如果用两台内网穿透服务器将两个异地局域网连接在一起,则需要在两端都配置路由规则。

我的A局域网网段是192.168.50.0/24,A穿透服务器地址是192.168.50.7,虚拟网地址是10.10.10.10。

B局域网是192.168.60.0/24,A穿透服务器地址是192.168.60.7,虚拟网地址是10.10.10.20

在A网络的路由器配置静态路由,192.168.60.0/24的数据包转发到A穿透服务器内网地址192.168.50.7。

在B网络的路由器配置静态路由,192.168.50.0/24的数据包转发到B穿透服务器内网地址192.168.60.7。

由于不同路由器操作方式不同,这里不给出路由器静态路由的配置命令和方式。

0 阅读:0
浩宇看科技

浩宇看科技

感谢大家的关注