我在一个集装箱上经营两个服务(A & B)。一个服务模拟另一个服务所需的依赖项。
服务A是一个黑匣子,并调用IP 169.254.169.254.我想使用iptable将该呼叫转发到服务B。
我像这样启动容器,这样它就可以有自己的iptable了,
docker run -it --cap-add=NET_ADMIN --sysctl net.ipv4.conf.eth0.route_localnet=1 <name> bash在bash中,我配置iptable来转发呼叫,
iptables -t nat -I PREROUTING -p tcp -d 169.254.169.254 --dport 80 -j DNAT --to-destination "127.0.0.1:8099" -i eth0但是,调用不会被路由到127.0.0.1。如果在中执行相同的步骤,则相同的步骤可以工作。
发布于 2017-09-21 18:35:23
您可以运行以下命令
iptables -t nat -A OUTPUT -p tcp --dport 80 -d 169.254.169.254 -j DNAT --to-destination 127.0.0.1:8099我用下面的方法对我的容器做了一个简单的测试,效果很好。
root@a09ced7f6961:/# iptables -t nat -A OUTPUT -p tcp --dport 8080 -d 123.45.67.89 -j DNAT --to-destination 127.0.0.1:80
root@a09ced7f6961:/# curl 123.45.67.89:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>https://stackoverflow.com/questions/46349698
复制相似问题