eth0(modem usb)和wlan0(wifi模块)互联

eth0 (modem usb) and wlan0 (wifi module) interconnection

我正在尝试在 eth0(USB 调制解调器)和 wlan0(Wifi 热点)之间架起一座桥,或者将所有流量从 wlan0 路由到 eth0。

程序:

如果接口已经有 ip,桥接将不会成功。

ip addr flush dev eth0
ip addr flush dev wlan0

创建网桥并添加网络。

brctl addbr br0
brctl addif br0 eth0

开启wifi热点。此时我可以看到我的 phone.

网络
hostapd /etc/hostapd.conf -B &

给网桥分配一个ip。

ifconfig br0 192.168.0.1

启动 dhcp-server 这样我的热点就可以自动为连接的设备分配一个 IP 地址。

/etc/init.d/S80dhcp-server start

重置我的桥。

ifdown br0
ifup br0

配置文件

hostapd.conf:

interface=wlan0 
bridge=br0 
driver=nl80211 
ctrl_interface=/var/run/hostapd 
ssid=My_Network 
dtim_period=2 
beacon_int=100 
channel=7 
hw_mode=g 
max_num_sta=8 
ap_max_inactivity=300

/etc/network/interfaces:

auto br0
iface br0 inet manual
bridge_ports eth0 wlan0

/etc/dhcp/dhcp.conf

ddns-update-style none;
option domain-name "google.com";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.100 192.168.0.110;
  option broadcast-address 192.168.0.255;
  option routers 192.168.0.1;
}

dhcp 服务器返回正常,但是当我尝试连接到 wifi 热点时,我无法获取 ip。 关于如何进行的任何想法?

我终于成功了。 我没有使用网桥,而是使用了 iptables。

只要这两个命令就足够了:

回显 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.1/24 -j MASQUERADE

Here 是答案的来源和解释