version: '3'
services:
openwrt:
image: lede:test
# ports:
# - "80:80"
networks:
- openwrt-WAN
- openwrt-LAN
privileged: true
networks:
openwrt-WAN:
driver: macvlan
driver_opts:
parent: eth0
ipam:
config:
- gateway: "192.168.2.1"
subnet: "192.168.2.0/24"
openwrt-LAN:
driver: bridge
internal: true
想用 docker 来部署 openwrt ,按照上面的配置部署后,容器内成功获取 ip
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 02:42:ac:1d:00:02 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.1/24 brd 192.168.10.255 scope global br-lan
valid_lft forever preferred_lft forever
100: eth0@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:c0:a8:02:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.2.192/24 brd 192.168.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:c0ff:fea8:202/64 scope link
valid_lft forever preferred_lft forever
101: eth1@if102: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP group default
link/ether 02:42:ac:1d:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
"192.168.2.0/24"的其它机器可以 ping 通容器 但是 http 和 ssh 都不行
1
Buges 2021-11-16 16:56:46 +08:00 via Android 1
1. 不要这么做。openwrt 的 docker 镜像是用来开发测试的,不是正常运行的,你会很快遇到权限错误、内核模块不匹配等问题。
2.macvlan 和的子接口和主接口无法直接通讯。其他设备能 ping 通但无法通信的话,检查防火墙和是否绑定到了相应的接口上。 |
2
dalaomai OP @Buges 感谢回复。对于 1:我其实是想实现其它容器有一个统一的全局代理,没想到其它方案; 2:openwrt 的防火墙已关,我理解如果绑定错接口应该 ping 不通吧
|
3
Buges 2021-11-16 17:15:08 +08:00 via Android 1
@dalaomai 1. 容器是通过宿主机访问网络的,你应该在宿主机上设置全局代理,或者按 wireguard 推荐的方式,创建相应的 tun 然后移动到容器的 namespace 里。需要注意 tproxy 与 docker 网络栈有所冲突。
2.绑定对应的接口指的是你的应用 bind to the network interface which is reachable ,比如为了安全起见很多程序默认不会绑定到 wan interface 。 |
5
test0x01 2021-11-16 20:41:50 +08:00 via Android
我一直用这种方式提供旁路由的
|