Linux网络隧道通过封装实现跨网通信,常用类型包括GRE、SIT、IP6、VXLAN和SSH隧道;以ip命令创建GRE隧道可连接两地内网,配置对称接口与路由;SIT隧道用于IPv6 over IPv4通信,两端设置sit接口并分配IPv6地址;SSH隧道提供加密转发,支持本地端口映射和SOCKS代理,适用于安全访问内部服务;各类隧道根据场景选择,需注意协议号与端口开放。

Linux网络隧道通过封装数据包实现跨网络通信,常用于跨越NAT、连接私有网络或加密传输。建立隧道不需要复杂设备,利用内核自带工具即可完成。核心原理是将一种网络协议封装在另一种协议中传输,比如把IPv6包放进IPv4里发送。
常见的Linux网络隧道类型
Linux支持多种隧道模式,不同场景适用不同类型:
- GRE隧道:通用路由封装,支持多协议传输,适合站点间互通
- SIT隧道:主要用于IPv6 over IPv4的过渡通信
- IP6隧道:纯IPv6数据在IPv4网络上传输
- VXLAN:适用于大规模虚拟化环境中的二层扩展
- SSH隧道:基于SSH加密通道转发端口,适合安全访问服务
使用ip命令建立GRE隧道示例
假设两台主机A(公网IP: 192.168.1.10)和B(公网IP: 192.168.1.20),希望打通内网10.0.0.0/24与10.0.1.0/24。
在主机A上执行:
ip tunnel add gre1 mode gre remote 192.168.1.20 local 192.168.1.10 ttl 255ip addr add 172.16.0.1/30 dev gre1
ip link set gre1 up
在主机B上执行:
ip tunnel add gre1 mode gre remote 192.168.1.10 local 192.168.1.20 ttl 255ip addr add 172.16.0.2/30 dev gre1
ip link set gre1 up
完成后双方可通过gre1接口互访,再配置静态路由使内网互通:
# 主机A添加对方子网路由ip route add 10.0.1.0/24 dev gre1
# 主机B添加对方子网路由
ip route add 10.0.0.0/24 dev gre1
建立IPv6 over IPv4的SIT隧道
当需要让IPv6孤岛通过IPv4网络通信时可用SIT隧道。例如主机A拥有IPv6段2001:db8::/64,想通过IPv4网络连接到主机B。
主机A操作:
ip tunnel add sit1 mode sit remote 192.168.1.20 local 192.168.1.10ip link set sit1 up
ip addr add 2001:db8::1/64 dev sit1
主机B操作:
ip tunnel add sit1 mode sit remote 192.168.1.10 local 192.168.1.20ip link set sit1 up
ip addr add 2001:db8::2/64 dev sit1
两端启用后即可直接用IPv6地址通信。
SSH动态端口转发实现安全隧道
对于远程访问内部服务,SSH隧道更简单且自带加密。比如从本地访问被防火墙保护的远程数据库。
建立本地端口转发:
ssh -L 3306:localhost:3306 user@remote-server-ip这样访问本机3306端口就等于访问远程服务器的数据库。也可做SOCKS代理:
ssh -D 1080 user@gateway-server浏览器设置SOCKS代理为127.0.0.1:1080后,所有流量经SSH加密转发。
Linux网络隧道用途广泛,既能解决跨网络通信问题,也能增强安全性。选择合适类型取决于实际需求:GRE适合稳定站点互联,SIT用于IPv6迁移,SSH则适合临时安全接入。关键是确保两端配置对称,路由正确,并开放对应协议端口(如GRE用协议号47,VXLAN用UDP 4789)。基本上就这些,按需选用即可。不复杂但容易忽略细节。










