почему перенаправление портов не работает в этой установке?

Я пытаюсь установить среду виртуализации докера. Это - развитие этого вопроса.

У меня есть виртуальный интерфейс eth0:0, и я хотел бы передать его с помощью iptables.

Общедоступный, основной IP 93.93.93.93

IP обработки отказа 5.6.7.8

У меня есть сервер, где искажение IP настроено:

/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 93.93.93.93
        netmask 255.255.255.0
        network 93.93.93.0
        broadcast 93.93.93.255
        gateway 93.93.93.254

# IPFO 1
    post-up /sbin/ifconfig eth0:0 5.6.7.8 netmask 255.255.255.255 broadcast 5.6.7.8
    pre-down /sbin/ifconfig eth0:0 down

Таким образом, когда я проверяю с помощью ping-запросов eth0:0 снаружи его работы. Кажется, что проблема начинает с маршрутизации, возможно?

root@aldebaran:~# ip route
default via 93.93.93.254 dev eth0 
93.93.93.0/24 dev eth0  proto kernel  scope link  src 94.23.55.226 
172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.42.1 

Никакой знак eth0.0

Затем я добавляю правила iptables:

iptables -A PREROUTING -t nat -i eth0:0 -p tcp --dport 80 -j DNAT --to 172.17.0.2:80
iptables -A FORWARD -p tcp -d 172.17.0.2 --dport 80 -j ACCEPT

Затем я пробую

root@aldebaran:~# curl 172.17.0.2:80
WORKS!
root@aldebaran:~# curl IP_FAILOVER
curl: (7) Failed to connect to IP_FAILOVER port 80: Connection refused

Согласно этому учебному руководству, у меня нет установки, направляющей правильно. Действительно ли это правильно? Как я фиксирую это?

1
задан 13 April 2017 в 15:14
1 ответ

Проблема заключалась в том, что я использовал псевдоним IP, который создает интерфейс, который Iptables не может использовать. Eth0: 0 не является допустимой целью. Вместо этого я должен использовать:

iptables -t nat -I PREROUTING --dst 5.6.7.8 -p tcp --dport 80 -j DNAT --to 172.17.0.2:80
iptables -A FORWARD -p tcp -d 172.17.0.2 --dport 22 -j ACCEPT
iptables -t nat -A POSTROUTING -s 172.17.0.2 -j MASQUERADE
0
ответ дан 4 December 2019 в 08:17

Теги

Похожие вопросы