linux系统分享网络给其他设备
背景:
某台主机只有有线网卡 没有无线网卡,而当前网络环境只有wifi。
如何使得这台主机能够连接网络呢?
必要准备:
- 一台同时拥有wifi网卡及有线网卡的linux系统主机,简称主机Linux
- 其他拥有有线网卡没有wifi网卡的设备 简称主机other
- 能够连接上网的 wifi
创建脚本 ipForward.sh
#!/bin/bash
sysctl net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o wlp3s0 -j MASQUERADE
其中 wlp3s0 是我电脑无线网卡的设备名称,可通过ip addr查看无线网卡名称
运行脚本
sudo ./ipForward.sh
解释一下脚本的内容
sysctl net.ipv4.ip_forward=1
这条命令是用来设置Linux内核参数的。具体来说,它将net.ipv4.ip_forward
这个参数设置为1,这意味着开启系统的IP转发功能。在NAT、路由器或者某些代理场景下,系统需要允许数据包从一个网络接口转发到另一个网络接口,这时就需要启用IP转发功能。
iptables -t nat -A POSTROUTING -o wlp3s0 -j MASQUERADE
这一条是利用iptables工具配置网络地址转换(NAT)规则。具体解读如下:
-t nat
:指定操作表为nat表,用于处理网络地址转换相关规则。-A POSTROUTING
:在POSTROUTING链(即数据包即将离开本机时)后面添加一条新规则。-o wlp3s0
:指定了这条规则应用于外出的数据包,且这些数据包要通过名为wlp3s0
的网络接口(这里是无线网卡)发送出去。-j MASQUERADE
:设置了规则的动作,这里采用MASQUERADE方式。这意味着所有通过wlp3s0接口发出的数据包源IP地址会被自动替换为该接口的公网IP地址,这对于共享单一公网IP地址的局域网环境非常有用,例如在没有固定公网IP地址的无线路由器上进行NAT,以便让内部网络中的设备能够访问互联网。
总结一下,这段脚本主要是在Linux系统上启用IP转发,并配置了iptables NAT规则,使得通过wlp3s0接口的网络数据包可以被正确地NAT转换,从而实现内部网络与外部网络之间的通信。
使用网线将两台设备连接
设置linux电脑有线网络
记住这个ip地址
设置other电脑网络地址
要使用静态ip地址 不要自动获取
到此,电脑设置完毕,其他电脑可以正常上网。
原理:
通过iptables转发网络功能,将linux电脑作为路由器,转发other电脑的数据。
其他电脑设置网关为linux电脑的有线连接网口,当有数据访问时,将通过linux电脑的有线网口,linux有线网口又通过wifi网口转发数据出去。
缺陷
此时 other电脑的网络位于linux电脑内部,与nat方式相同,也就是说other处于内网中,可以主动访问其他电脑,其他电脑无法访问内网的设备。
使用其他电脑魔法上网
背景
主机A无法安装魔法上网软件
主机B安装魔法上网软件
主机A使用主机B魔法上网代理接口
下面的网页已经说明了,直接贴网页吧
https://clever99.com/clash-for-windows-agent-others
我的奇怪操作
背景
我的主机为同时拥有wifi网卡及有线网卡的Linux设备,但无法魔法上网
我的other主机为拥有有线网卡没有wifi网卡,但是可以安装魔法上网设备
我现在希望linux主机为other主机分享网络,但同时 linux主机可以使用other主机的魔法上网代理
虽然图看着有些奇怪,但是其实就是上面的两个功能结合在一起使用