编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

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

wxchong 2024-09-28 01:46:48 开源技术 119 ℃ 0 评论

前段时间我将我的内网穿透服务器的系统从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。

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


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表