我对 Linux 没什么经验,我希望连接到我闲置的一台不支持 wifi 的旧 Windows PC。我的服务器(我可以控制)和旧 PC 之间有以太网连接。我在主服务器上运行 zorinos(ubuntu)。
答案1
有几种方法可以做到这一点:
选项 A:将您的 Linux 机器变成路由器:
您的 Wi-Fi 将是 WAN 端,以太网是 LAN
sudo su
# tell the kernel to do routing
echo 1 > /proc/sys/net/ipv4/ip_forward
# make sure that you can route traffic
iptables -P FORWARD ACCEPT
# NAT anything behind your router
iptables -t nat -A POSTROUTING -j MASQUERADE
# Turn off any local DNS resolvers that might interfere
echo nameserver 1.1.1.1 > /etc/resolv.conf
systemctl stop systemd-resolved
killall dnmsasq
# Run a local DHCP server on the LAN side
# change the interface to the right one
ifconfig eth0 192.168.20.1/24
dnsmasq -F 192.168.20.2,192.168.20.254 -i eth0 -d
现在,在这种情况下,您连接到 LAN 端的任何设备都eth0
将从您的 Linux 计算机获取 DHCP 地址,并且它将使用 Linux 计算机作为网关和 DNS,而后者又将使用您在 Wi-Fi 上设置的任何内容。如果您重新启动计算机,这些设置将消失。
选项 B:建立联系
此选项不适用于 Wi-Fi 适配器 - 这有点复杂,但如果您有 2 个或更多以太网适配器,这是一个很好的解决方案。它还允许您进行 Web 过滤、流量整形、MitM 攻击等。
sudo su
apt-get install bridge-utils
brtcl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
# Change eth0 and eth1 with your interface names
# "ifconfig" or "ip link" will show interface names.
ifconfig eth0 up
ifconfig eth1 up
# only necessary if you want the machine itself to have internet
dhclient -d br0
这也是一个临时设置。在执行此操作之前,您可能需要停止您拥有的任何其他网络管理器:
systemctl stop network-manager
systemctl stop networkamanger
systemctl stop networking
service network stop
???
如果任何 systemctl 命令失败,则意味着它们在您的 Linux 上不存在或不是必需的。我不确定它使用什么服务管理器……但您现在应该有足够的知识来搜索步骤或阅读文档并了解如何在您的机器上执行此操作。
有趣的事实:无论你如何做,几乎所有路由器和 Linux 机器都在幕后执行上述操作。
如果要使更改永久生效,则必须弄清楚 Linux 使用什么服务或网络管理器,然后编辑其配置文件以完成与上述相同的操作。也许这会起作用:
选项 C:与网络管理器桥接
ip a # check which devices you need to bridge
sudo nmcli c add type bridge con-name my-bridge ifname eth0
sudo nmcli c add type bridge con-name my-bridge ifname eth1
sudo nmcli c connect my-bridge
这应该会使其永久生效。尽管我读过文档,但始终无法让网络管理器真正做我想要它做的事情,并且总是最终禁用它并在 中创建我自己的配置/etc/rc.local
。