Ошибка установления связи TCP: пакеты SYN и SYN / ACK не распознаются

У меня очень интересная проблема:

У меня гипервизор Proxmox и две виртуальные машины Linux на нем:

  • Первая виртуальная машина имеет несколько сетевых адаптеров в главном мосту, каждый из которых добавлен к виртуальной машине тег vlan на гипервизоре.
  • Второй vm имеет только один nic в основном мосту, но у него есть vlan-интерфейсы внутри vm.

Сетевые настройки идентичны, но на втором vm что-то TCP-Handshake не работает. С другой стороны, протоколы ICMP и UDP работают нормально.

Проблема возникает во всех направлениях трафика, относящегося ко второй машине:

  • от второй виртуальной машины к внешнему миру.
  • от второй виртуальной машины к маршрутизатору. (и наоборот)
  • от второй виртуальной машины к первой виртуальной машине. (и наоборот)

Как я это тестировал?

  • ping : работает нормально
  • nslookup (режим udp): работает нормально
  • nslookup (режим tcp): Пакеты SYN и SYN / ACK от второй виртуальной машины не распознаются. Похоже, что этот пакет не идет, но он идет отлично. (см. ниже)

    Я показываю здесь 4 захвата, когда я пытался подключиться к порту 80 на виртуальной машине через telnet.

    • Маршрутизатор: 192.168.32.1
    • Первая виртуальная машина: 192.168.32.70
    • Вторая виртуальная машина: 192.168.32.80

    Успешное подключение к первой виртуальной машине (захват от клиента):

    No.     Time        Source                Destination           Protocol Length Info
          2 1.311927    192.168.32.1          192.168.32.70         TCP      74     38873→80 [SYN] Seq=0 Win=13840 Len=0 MSS=1384 SACK_PERM=1 TSval=54904054 TSecr=0 WS=32
          3 1.347181    192.168.32.70         192.168.32.1          TCP      74     80→38873 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1384 SACK_PERM=1 TSval=57170781 TSecr=54904054 WS=128
          4 1.347223    192.168.32.1          192.168.32.70         TCP      66     38873→80 [ACK] Seq=1 Ack=1 Win=13856 Len=0 TSval=54904058 TSecr=57170781
    

    Успешное подключение к первой виртуальной машине (захват с сервера):

    No.     Time        Source                Destination           Protocol Length Info
          1 0.000000    192.168.32.1          192.168.32.70         TCP      74     38873→80 [SYN] Seq=0 Win=13840 Len=0 MSS=1384 SACK_PERM=1 TSval=54904054 TSecr=0 WS=32
          2 0.000128    192.168.32.70         192.168.32.1          TCP      74     80→38873 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1460 SACK_PERM=1 TSval=57170781 TSecr=54904054 WS=128
          3 0.051272    192.168.32.1          192.168.32.70         TCP      66     38873→80 [ACK] Seq=1 Ack=1 Win=13856 Len=0 TSval=54904058 TSecr=57170781
    

    Неудачное подключение ко второй виртуальной машине (захват из client):

    No.     Time        Source                Destination           Protocol Length Info
         25 0.889659    192.168.32.1          192.168.32.80         TCP      74     37740→80 [SYN] Seq=0 Win=13840 Len=0 MSS=1384 SACK_PERM=1 TSval=54864760 TSecr=0 WS=32
         27 0.925075    192.168.32.80         192.168.32.1          TCP      74     80→37740 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1384 SACK_PERM=1 TSval=210548 TSecr=54864760 WS=128
         34 1.880028    192.168.32.1          192.168.32.80         TCP      74     [TCP Spurious Retransmission] 37740→80 [SYN] Seq=0 Win=13840 Len=0 MSS=1384 SACK_PERM=1 TSval=54864860 TSecr=0 WS=32
         35 1.915204    192.168.32.80         192.168.32.1          TCP      74     [TCP Retransmission] 80→37740 [SYN, ACK] Seq=4294967049 Ack=1 Win=28960 Len=0 MSS=1384 SACK_PERM=1 TSval=210795 TSecr=54864760 WS=128
         51 2.912418    192.168.32.80         192.168.32.1          TCP      74     [TCP Retransmission] 80→37740 [SYN, ACK] Seq=4294966799 Ack=1 Win=28960 Len=0 MSS=1384 SACK_PERM=1 TSval=211045 TSecr=54864760 WS=128
         63 3.880067    192.168.32.1          192.168.32.80         TCP      74     [TCP Spurious Retransmission] 37740→80 [SYN] Seq=0 Win=13840 Len=0 MSS=1384 SACK_PERM=1 TSval=54865060 TSecr=0 WS=32
         64 3.917480    192.168.32.80         192.168.32.1          TCP      74     [TCP Retransmission] 80→37740 [SYN, ACK] Seq=4294966549 Ack=1 Win=28960 Len=0 MSS=1384 SACK_PERM=1 TSval=211295 TSecr=54864760 WS=128
         67 5.912529    192.168.32.80         192.168.32.1          TCP      74     [TCP Retransmission] 80→37740 [SYN, ACK] Seq=4294966049 Ack=1 Win=28960 Len=0 MSS=1384 SACK_PERM=1 TSval=211795 TSecr=54864760 WS=128
         73 7.890030    192.168.32.1          192.168.32.80         TCP      74     [TCP Spurious Retransmission] 37740→80 [SYN] Seq=0 Win=13840 Len=0 MSS=1384 SACK_PERM=1 TSval=54865461 TSecr=0 WS=32
         74 7.925401    192.168.32.80         192.168.32.1          TCP      74     [TCP Retransmission] 80→37740 [SYN, ACK] Seq=4294965546 Ack=1 Win=28960 Len=0 MSS=1384 SACK_PERM=1 TSval=212298 TSecr=54864760 WS=128
    

    Неудачное подключение ко второй виртуальной машине (захват с сервера):

    No.     Time        Source                Destination           Protocol Length Info
          1 0.000000    192.168.32.1          192.168.32.80         TCP      74     37740→80 [SYN] Seq=0 Win=13840 Len=0 MSS=1384 SACK_PERM=1 TSval=54864760 TSecr=0 WS=32
          2 0.000105    192.168.32.80         192.168.32.1          TCP      74     80→37740 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1460 SACK_PERM=1 TSval=210548 TSecr=54864760 WS=128
          3 0.990176    192.168.32.1          192.168.32.80         TCP      74     [TCP Spurious Retransmission] 37740→80 [SYN] Seq=0 Win=13840 Len=0 MSS=1384 SACK_PERM=1 TSval=54864860 TSecr=0 WS=32
          4 0.990240    192.168.32.80         192.168.32.1          TCP      74     [TCP Retransmission] 80→37740 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1460 SACK_PERM=1 TSval=210795 TSecr=54864760 WS=128
          5 1.987305    192.168.32.80         192.168.32.1          TCP      74     [TCP Retransmission] 80→37740 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1460 SACK_PERM=1 TSval=211045 TSecr=54864760 WS=128
          6 2.991251    192.168.32.1          192.168.32.80         TCP      74     [TCP Spurious Retransmission] 37740→80 [SYN] Seq=0 Win=13840 Len=0 MSS=1384 SACK_PERM=1 TSval=54865060 TSecr=0 WS=32
          7 2.991317    192.168.32.80         192.168.32.1          TCP      74     [TCP Retransmission] 80→37740 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1460 SACK_PERM=1 TSval=211295 TSecr=54864760 WS=128
          8 4.987338    192.168.32.80         192.168.32.1          TCP      74     [TCP Retransmission] 80→37740 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1460 SACK_PERM=1 TSval=211795 TSecr=54864760 WS=128
         11 7.000116    192.168.32.1          192.168.32.80         TCP      74     [TCP Spurious Retransmission] 37740→80 [SYN] Seq=0 Win=13840 Len=0 MSS=1384 SACK_PERM=1 TSval=54865461 TSecr=0 WS=32
         12 7.000184    192.168.32.80         192.168.32.1          TCP      74     [TCP Retransmission] 80→37740 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1460 SACK_PERM=1 TSval=212298 TSecr=54864760 WS=128
    

    Я не понимаю, почему это не работает. Есть идеи?

    По запросу MarkoPolo я добавляю вывод команд со второго vm:

    ifconfig

    ens18     Link encap:Ethernet  HWaddr 12:7c:7f:a1:8a:b4  
              inet addr:10.10.100.80  Bcast:0.0.0.0  Mask:255.255.255.0
              inet6 addr: fe80::107c:7fff:fea1:8ab4/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:185759 errors:0 dropped:27 overruns:0 frame:0
              TX packets:1186 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:23593488 (23.5 MB)  TX bytes:173539 (173.5 KB)
    
    ens18.32  Link encap:Ethernet  HWaddr 12:7c:7f:a1:8a:b4  
              inet addr:192.168.32.80  Bcast:0.0.0.0  Mask:255.255.255.0
              inet6 addr: fe80::107c:7fff:fea1:8ab4/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:1821 errors:0 dropped:0 overruns:0 frame:0
              TX packets:52 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:195803 (195.8 KB)  TX bytes:3718 (3.7 KB)
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:160 errors:0 dropped:0 overruns:0 frame:0
              TX packets:160 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1 
              RX bytes:11840 (11.8 KB)  TX bytes:11840 (11.8 KB)
    

    route -n

    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         10.10.100.1     0.0.0.0         UG    0      0        0 ens18
    10.10.100.0     0.0.0.0         255.255.255.0   U     0      0        0 ens18
    192.168.32.0    0.0.0.0         255.255.255.0   U     0      0        0 ens18.32
    
0
задан 14 December 2016 в 19:32
1 ответ

Я решил эту проблему, добавив ens18 к мосту br0 и создав интерфейс vlan на мосту br0.32.

Кажется, это ошибка ядра ubuntu, я протестировал эту проблему на Arch linux iso и она работает корректно. Я пришлю сообщение об ошибке на launchpad...

.
1
ответ дан 4 December 2019 в 16:24

Теги

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