共享 PPP 连接

出自 ArchWiki

本条目或章节可能需要与网络共享合并。

注意: 只是那里描述主题的一个特定案例。(在Talk:Sharing PPP Connection中讨论)

要求

在继续之前,您必须确保

  1. 您必须有一个可用的 PPP 连接。
  2. 您的计算机中必须有一张额外的以太网接口卡,用于共享您的连接。

安装

必须安装以下软件包才能进行有线和无线共享

  • iptables:用于控制网络中的数据包。
  • dnsmasq:用作 DHCP 和 DNS 缓存服务器。
  • bridge-utils:用于设置网络桥接。

根据您要共享无线还是有线连接,您还需要安装

  • 有线iproute2net-tools(本文使用 iproute2,因为 net-tools 已弃用)。
  • 无线iwwireless_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 上,并且您想在 eth1eth2 上共享该连接。

# 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 守护进程。

现在您应该能够使用 eth1eth2 连接到互联网了。

通过 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

参见