今天需要在一个docker镜像容器内访问外网,发现ping不通无法访问,这里记录下解决过程。
1、查看宿主机防火墙NAT转发情况
# 退出容器,宿主机查看防火墙转发配置
firewall-cmd --query-masquerade
no # 没有配置转发
2、配置并开启NAT转发
# 配置转发
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
# 开启转发
firewall-cmd --add-masquerade --permanent
# 重新加载运行的配置
firewall-cmd --reload
# 查看配置是否生效
firewall-cmd --query-masquerade
yes # 配置已生效
3、重启docker和容器
systemctl restart docker
docker start cyber
4、验证外网访问
docker exec -it cyber /bin/bash
curl www.baidu.com
<!DOCTYPE html> ... # 访问成功
yan 23.5.24