1

Я использую TUN/TAP для создания Tun NIC tun0 с IP 10.10.10.2, и у меня есть настоящий NIC eth0 с IP 202.112.34.49

Затем я запускаю TCP-клиент, который привязывает свой сокет к 202.112.34.49 и привязку к TCP-серверу 10.10.10.2. но я не могу установить TCP-соединение между ними.

Так может ли TCP-клиент на одном NIC подключаться к tcp-серверу на другом NIC?

2 ответа2

3

Ни TCP-клиент, ни TCP-сервер не находятся на каких-либо сетевых картах. Отдельные интерфейсы рассматриваются на уровнях 1 и 2, в то время как TCP работает на уровне 4. За исключением очень специальных опций сокетов, таких как SO_BINDTODEVICE , конечные точки TCP не привязаны ни к какому сетевому интерфейсу.

Ваш TCP-сервер и клиент просто привязаны к разным локальным IP-адресам. Соединение между ними должно работать просто отлично.

2

Пакеты с локальными адресами всегда будут работать на интерфейсе lo ; они никогда не покинут машину. (Пакеты на локальные адреса, поступающие на интерфейсы non-lo, считаются марсианскими.)

Другими словами, ваши пакеты должны где-то застревать на интерфейсе lo , возможно, из-за брандмауэра. Проверьте вывод iptables-save и выполните команду tcpdump на интерфейсе lo для этих пакетов, чтобы устранить эту проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .