【发布时间】:2020-09-21 20:53:12
【问题描述】:
我想使用 docker-compose 设置一个容器 (C1) 作为路由器/网关,C1 将 tcp 数据从容器 (C2) 转发到互联网。 但是 C2 根本无法访问互联网,traceroute 显示数据包已到达 C1 然后没有更多操作
通过使用虚拟机的类似设置,它可以正常工作。 这是为什么呢?
C2(设置C1为默认路由器) -> C1 -> 互联网
C1: alpine 镜像,安装了 iptables,ip: 1.1 。 ping 或 traceroute 在这里工作
iptables -A FORWARD -o eth0 -j ACCEPT;
C2:alpine镜像,使用ip route 替换默认路由器,ip:1.3
ip route replace default via 172.28.1.1
version: '3'
services:
C1:
build: ./projects/C1
container_name: C1
privileged: true
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
# - net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.ip_forward=1
networks:
testing_net:
ipv4_address: 172.28.1.1
C2:
build: ./projects/C2
container_name: C2
cap_add:
- NET_ADMIN
- SYS_MODULE
privileged: true
# sysctls:
# - net.ipv4.conf.all.src_valid_mark=1
# - net.ipv4.ip_forward=1
networks:
testing_net:
ipv4_address: 172.28.1.3
networks:
testing_net:
ipam:
driver: default
config:
- subnet: 172.28.0.0/16
【问题讨论】:
标签: docker networking docker-compose