作者uorol (′‧ω‧‵)
看板Linux
标题[问题] iptables可以做到桥接吗?
时间Tue Sep 10 00:31:21 2019
Dear all
小弟最近在玩Raspberry,
想要透过板子来做两台电脑的桥接功能
爬文之後暂时用brctl可以做到两个interface的桥接,
但是实作上还有一些不太优雅的地方.
想问问有没有人有相关的经验可以分享
[目标]
想要使不同 interface 上面的 Device A 可以跟 Device B 进行沟通
Device A <========> Raspberry <========> Device B
eth0 eth1
* 分配 ip 给两台 Device 是透过 DHCP 来完成
[尝试做法I]
把 Device A 跟 Raspberry 配到 子网域 A (192.168.100.0)
192.168.100.100 192.168.100.1 (eth0)
把 Device B 跟 Raspberry 配到 子网域 B (192.168.111.0)
192.168.111.100 192.168.111.1 (eth1)
用 iptables 加入 forward 规则
=> 理论可行...?
但是需要修改 Device A/B 的 routing rule,
否则会走 default gateway, 就不会透过 eth0/1进行沟通
因为不是全部的 Device 都有权限修改 routing table,
就放弃此作法了...
[尝试做法II]
把 Device A 跟 Raspberry 配到 子网域 A (192.168.100.0)
192.168.100.100 192.168.100.1 (eth0)
把 Device B 跟 Raspberry 配到 子网域 A (192.168.100.0)
192.168.100.101 192.168.100.2 (eth1)
用 iptables 加入 forward 规则
=> Device A/B 没办法互相 ping 到
应该是 default routing rule 第一条 rule,
把 192.168.100.0 的 broadcast 全部丢给 eth0 了...
[尝试做法III]
把 Device A 跟 Raspberry 配到 子网域 A (192.168.100.0)
192.168.100.100 192.168.100.1 (eth0)
把 Device B 跟 Raspberry 配到 子网域 A (192.168.100.0)
192.168.100.101 192.168.100.2 (eth1)
等两台 Device 配到 ip 後
用 brctl 加入一个 bridge br0
然後将 eth0 跟 eth1 加入 br0
把 eth0 / eth1 重设 ip 为 0.0.0.0
br0 分配 ip 为 192.168.100.3
=> Device A 可以 Ping 到 Device B, 也可以 Ping 到 Raspberry
不过接下来 eth0 跟 eth1 的 DHCP 貌似就失效了...
比较暴力的方法就是当其中一边断线之後我就把 interface 全部干掉重来
不过这样也太不优雅了 xd
不知道有没有其它建议? 或者有没有比较推荐的文章可以阅读
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.195.32.204 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1568046683.A.EA9.html
1F:→ wens: 方法3: 你都挂成 br0 了,当然 dhcp 也是用 br0 去请求啊 09/10 06:31
2F:→ wens: 就算你是 static ip 也是让 br0 挂IP,不是他附属的介面 09/10 06:31
3F:推 Bencrie: 同楼上。原 po 你 bridge 都弄好了就不要管 eth0/eth1 09/10 09:00
4F:→ Bencrie: iproute2 的命令:ip l a br0 type bridge 09/10 09:02
5F:→ Bencrie: ip a a 192.168.100.1/24 dev br0 09/10 09:02
6F:→ Bencrie: ip l s eth0 master br0;ip l s eth1 master br0 09/10 09:03
7F:→ Bencrie: ip l s up br0 09/10 09:04
8F:→ Bencrie: 最後 dhcpd 介面用 br0 09/10 09:05
9F:→ uorol: 感谢楼上两位, 因为我有一边是用p2p wlan去连接 09/10 10:51
10F:→ uorol: 看了一下log应该是wpa尝试用原先的interface去沟通 09/10 10:52
11F:→ uorol: 可能我得想办法把wpa里面带的interface也改成br0....XD 09/10 10:55
12F:→ deadwood: 建立br0介面并加入两张网卡为成员以後,你的两个device 09/12 00:34
13F:→ deadwood: 设定同个网段的IP就该通了,br跟ethx其实不需要设定IP 09/12 00:35
14F:→ deadwood: 有需要从Rpi上面发DHCP才需要设定br0的IP才对 09/12 00:36
15F:→ deadwood: 另外拟用iptable做的是路由而不是桥接 09/12 00:39