2017-09-21 3 views
0

Ich habe zwei Dienste (A & B) auf einem Container ausgeführt. Ein Dienst verspottet eine Abhängigkeit, die von der anderen benötigt wird.Port-Weiterleitung mit iptables in Docker Container

Dienst A ist eine Black-Box und ruft eine IP 169.254.169.254 an. Ich mag diesen Anruf zu Service B. unter Verwendung von iptables weiterleiten

Ich bin die Container wie dieser Start so kann es seine eigenen iptables hat,

docker run -it --cap-add=NET_ADMIN --sysctl net.ipv4.conf.eth0.route_localnet=1 <name> bash 

Einmal in bash, i iptables konfigurieren Sie den Anruf weiterleiten,

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 

Der Anruf wird jedoch nicht an 127.0.0.1 weitergeleitet. Die gleichen Schritte funktionieren, wenn sie in einer Ubuntu Xenial VM ausgeführt werden.

Antwort

0

Sie können die laufen unter

iptables -t nat -A OUTPUT -p tcp --dport 80 -d 169.254.169.254 -j DNAT --to-destination 127.0.0.1:8099 

habe ich einen einfachen Test auf meinem Behälter unten ein und es funktionierte großartig

[email protected]:/# iptables -t nat -A OUTPUT -p tcp --dport 8080 -d 123.45.67.89 -j DNAT --to-destination 127.0.0.1:80 

[email protected]:/# curl 123.45.67.89:8080 
<!DOCTYPE html> 
<html> 
<head> 
<title>Welcome to nginx!</title> 
Verwandte Themen