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. 不要这么做。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 ![]() @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 我一直用这种方式提供旁路由的 |