共享 PPP 连接
要求
在继续之前,您必须确保
- 您必须有一个可用的 PPP 连接。
- 您的计算机中必须有一张额外的以太网接口卡,用于共享您的连接。
安装
必须安装以下软件包才能进行有线和无线共享
- iptables:用于控制网络中的数据包。
- dnsmasq:用作 DHCP 和 DNS 缓存服务器。
- bridge-utils:用于设置网络桥接。
根据您要共享无线还是有线连接,您还需要安装
- 有线:iproute2 或 net-tools(本文使用
iproute2
,因为net-tools
已弃用)。 - 无线:iw 或 wireless_tools(本文使用
iw
,因为wireless_tools
已弃用)。
通过有线以太网共享
- 设置 PPP 连接。
- 您可以像往常一样为接口分配 IP 地址,通过运行(以 root 身份)
# ip addr add 192.168.0.254 dev eth0
- 将内核设置为路由器模式。这可以通过运行以下命令完成
# sysctl net.ipv4.ip_forward=1
- 配置 dnsmasq。对
/etc/dnsmasq.conf
进行以下更改(如果需要,请取消注释)
/etc/dnsmasq.conf
domain-needed bogus-priv interface=eth0 # change to your chosen interface dhcp-range=192.168.0.1,192.168.0.100,12h
- 启动 dnsmasq 守护进程。
- 最后,设置防火墙以转发与您的 WLAN 连接的客户端的互联网连接。这可以通过发出以下命令完成
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
- 在上面,ppp0 接口是使用的 PPP 接口,如果需要,您可以将其替换为您自己的接口。
- 完成了!祝您上网愉快!
警告: 之前的配置没有启用任何安全选项。如果您正在使用防火墙,则应调整本文档以满足您的需求。同样适用于为 WLAN 接口设置密钥。
网络桥接
假设您的 PPP 连接在 eth0 上,并且您想在 eth1 和 eth2 上共享该连接。
# ip addr add 0.0.0.0 dev eth1 # remove IP from eth0 # ip link set eth1 up # ensure the interface is up
# ip addr add 0.0.0.0 dev eth2 # remove IP from eth1 # ip link set eth2 up # ensure the interface is up
# brctl addbr br0 # create br0 node # brctl addif br0 eth1 # add eth0 to bridge br0 # brctl addif br0 eth2 # add eth1 to bridge br0
# ip addr add 192.168.0.254 dev br0
将 dnsmasq.conf
中的接口更改为 br0
interface=br0
并重启 dnsmasq 守护进程。
现在您应该能够使用 eth1 或 eth2 连接到互联网了。
通过 WLAN 共享
警告: 这些说明创建未加密的 ad-hoc 网络。有关使用 WPA1 加密的方法,请参阅Ad-hoc networking#wpa_supplicant。为了获得更好的安全性,请创建一个由 WPA2 保护的接入点。
- 设置 PPP 连接。
- 设置 WLAN 连接:选择 SSID 并选择 Ad-hoc 作为网络类型。在下面,假设您正在使用 wlan0 接口。
- 设置 wlan0 接口的地址,例如 192.168.0.254。设置接口通常通过运行以下命令完成
# iw wlan0 set type ibss # iw wlan0 ibss join MyFreeWlan
- 之后,您可以像往常一样为接口分配 IP 地址,通过运行
# ip addr add 192.168.0.254 dev wlan0
- 请注意,不同的无线网卡可能有不同的配置方式,应相应地调整本文档。
- 将内核设置为路由器模式。这可以通过运行以下命令完成
# echo 1 > /proc/sys/net/ipv4/ip_forward
- 配置 dnsmasq。对
/etc/dnsmasq.conf
进行以下更改(如果需要,请取消注释)
etc/dnsmasq.conf
domain-needed bogus-priv interface=wlan0 # change to your interface dhcp-range=192.168.0.1,192.168.0.100,12h
- 启动 dnsmasq 守护进程。
- 最后,设置防火墙以转发与您的 WLAN 连接的客户端的互联网连接。这可以通过发出以下命令完成
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
- 在上面,ppp0 接口被假定为使用的 PPP 接口,如果需要,您可以将其替换为您自己的接口。
- 完成了!祝您上网愉快!
警告: 之前的配置没有启用任何安全选项!如果您正在使用防火墙,则应调整本文档以满足您的需求。同样适用于为 wlan 接口设置密钥。
共享脚本
一个用于在 ad-hoc 网络上通过 wlan0 共享 eth0 的快速脚本。
ethoverwlan.sh
#!/bin/bash iw wlan0 set type ibss iw wlan0 ibss join proxywlan ip addr add 192.168.0.254 dev wlan0 ip link set wlan0 up iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward