Назад | Перейти на главную страницу

Iptables NAT не работает с 2 IP

У меня есть 2 общедоступных IP-адреса (например, 1.2.3.4 и 1.2.3.10) и несколько виртуальных машин, использующих LXC / LXD. Я хочу указать оба общедоступных IP-адреса для определенных портов на контейнеры lxc с использованием NAT.

Он уже работал, но как-то сломался. На данный момент 1.2.3.4 работает нормально, но 1.2.3.10 не работает. 1.2.3.10 недоступен на портах 80 и 443 и недоступен для проверки связи.

Если я установлю 192.168.102.102 mydomain в /etc/hosts curl https://mydomain работает, но когда я меняю его на `` 1.2.3.10 mydomain` curl, получается тайм-аут. Так что я думаю, что это проблема с сетью.

Я создал правила iptables

iptables -I FORWARD -m state -d 192.168.102.1/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -I PREROUTING -p tcp -d 1.2.3.10 --dport 80 -j DNAT --to-destination 192.168.102.102:80
iptables -t nat -I PREROUTING -p tcp -d 1.2.3.10--dport 443 -j DNAT --to-destination 192.168.102.102:443

iptables -t nat -I PREROUTING -p tcp -d 1.2.3.4 --dport 80 -j DNAT --to-destination 192.168.102.102:80
iptables -t nat -I PREROUTING -p tcp -d 1.2.3.4 --dport 443 -j DNAT --to-destination 192.168.102.102:443

Вывод iptables:

$ cat /proc/sys/net/ipv4/ip_forward                                                                                                                                                          
1

$ iptables -t nat -v -x -n -L                                                                                                                                                                
Chain PREROUTING (policy ACCEPT 71 packets, 3774 bytes)
    pkts      bytes target     prot opt in     out     source               destination         
       0        0 DNAT       tcp  --  *      *       0.0.0.0/0            1.2.3.10          tcp dpt:443 to:192.168.102.102:443
       0        0 DNAT       tcp  --  *      *       0.0.0.0/0            1.2.3.10          tcp dpt:80 to:192.168.102.102:80
  157341  7227769 DNAT       tcp  --  *      *       0.0.0.0/0            1.2.3.4          tcp dpt:21 to:192.168.102.102:21
    4114   166824 DNAT       tcp  --  *      *       0.0.0.0/0            1.2.3.4          tcp dpt:20 to:192.168.102.102:20
 5380823 253642962 DNAT       tcp  --  *      *       0.0.0.0/0            1.2.3.4          tcp dpt:443 to:192.168.102.102:443
 3771093 182834495 DNAT       tcp  --  *      *       0.0.0.0/0            1.2.3.4          tcp dpt:80 to:192.168.102.102:80
     925    39230 DNAT       tcp  --  *      *       0.0.0.0/0            1.2.3.4          tcp dpt:995 to:192.168.102.102:995
    4358   239605 DNAT       tcp  --  *      *       0.0.0.0/0            1.2.3.4          tcp dpt:110 to:192.168.102.102:110
   24716  1335753 DNAT       tcp  --  *      *       0.0.0.0/0            1.2.3.4          tcp dpt:25 to:192.168.102.102:25
 3593156 215526288 DOCKER     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT 68 packets, 3618 bytes)
    pkts      bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 54 packets, 3223 bytes)
    pkts      bytes target     prot opt in     out     source               destination         
      16     1032 DOCKER     all  --  *      *       0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT 78 packets, 4587 bytes)
    pkts      bytes target     prot opt in     out     source               destination         
       0        0 MASQUERADE  all  --  *      !docker0  172.17.0.0/16        0.0.0.0/0           
       0        0 RETURN     all  --  *      *       192.168.101.0/24     224.0.0.0/24        
       0        0 RETURN     all  --  *      *       192.168.101.0/24     255.255.255.255     
   90982  4983678 MASQUERADE  tcp  --  *      *       192.168.101.0/24    !192.168.101.0/24     masq ports: 1024-65535
      47     3572 MASQUERADE  udp  --  *      *       192.168.101.0/24    !192.168.101.0/24     masq ports: 1024-65535
       0        0 MASQUERADE  all  --  *      *       192.168.101.0/24    !192.168.101.0/24    
       0        0 MASQUERADE  all  --  *      *       10.196.61.0/24      !10.196.61.0/24       /* generated for LXD network lxdbr1 */
  310293 19384321 MASQUERADE  all  --  *      *       192.168.102.0/24    !192.168.102.0/24     /* generated for LXD network lxdbr0 */
       0        0 MASQUERADE  all  --  *      *       192.168.100.0/24    !192.168.100.0/24    

Chain DOCKER (2 references)
    pkts      bytes target     prot opt in     out     source               destination         
       0        0 RETURN     all  --  docker0 *       0.0.0.0/0            0.0.0.0/0           



$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet 1.2.3.4/27 brd 1.2.3.223 scope global eth0
       valid_lft forever preferred_lft forever
    inet 1.2.3.10/31 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 XXXXXXXX::2/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 XXXXXX/64 scope link 
       valid_lft forever preferred_lft forever
3: lxdbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether fe:34:c1:5d:77:a4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.102.1/24 scope global lxdbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::50fd:55ff:fe2f:b8f5/64 scope link 
       valid_lft forever preferred_lft forever
    [...]