5

Таким образом, я хотел бы, чтобы трафик устройства Tun пересылался туда и обратно через другой сетевой интерфейс, который имеет подключение к Интернету. Хотя я вижу, что трафик выходит в Интернет и возвращается, он не перенаправляется обратно на мое устройство Tun.

Вот мои настройки:

У меня очень простая установка с использованием виртуальной машины Mint Linux 15 под VirtualBox с Win7 в качестве хоста.

Внутри виртуальной машины есть два сетевых интерфейса - eth0 и tun0.

  • Интерфейс eth0 подключен к Интернету и назначен как 192.168.1.115/24.
  • Интерфейс tun0 назначен как 10.0.5.1/24.

    ip tuntap add dev tun0 mode tun user askldjd
    ip link set tun0 up
    ip addr add 10.0.5.1/24 dev tun0
    

Я установил правило iptables для маскировки всего трафика, проходящего через eth0.

    iptables -I FORWARD -i tun0 -o eth0 -s 10.0.5.0/24 -m conntrack --ctstate NEW -j ACCEPT
    iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

Я проверил правило, используя простой ping -I . Так что в некоторой степени мои приемлемые правила работают.

    ping -I 10.0.5.1 google.com
    PING google.com (74.125.228.65) from 10.0.5.1 : 56(84) bytes of data.
    64 bytes from iad23s07-in-f1.1e100.net (74.125.228.65): icmp_req=1 ttl=55 time=7.46 ms

Мой следующий шаг - создать пакет запроса ICMP с src = 10.0.5.1 и dst = 74.125.228.6 (google.com). Это было сделано с помощью захвата tcpdump, поэтому я знаю, что все поля / контрольная сумма пакета действительны. И я отправляю этот пакет в необработанный IP-сокет с помощью очень простого скрипта Python.

Перед запуском скрипта Python я настроил tshark для мониторинга eth0 и tun0.

    tshark -i eth0
    tshark -i tun0

Затем я запускаю скрипт. В консоли tshark я вижу, что отправляется ICMP-запрос и ICMP-ответ возвращается из Google.

    1811.947250 192.168.1.115 -> 74.125.228.6 ICMP 98 Echo (ping) request  id=0x0990, seq=1/256, ttl=64
    1811.955146 74.125.228.6 -> 192.168.1.115 ICMP 98 Echo (ping) reply    id=0x0990, seq=1/256, ttl=55

А из окна tun0 tshark я ничего не вижу.

На мой взгляд, поскольку пакет запроса ICMP установлен как source = 10.0.5.1, я ожидал бы, что IPTable будет отменять ответ ICMP, когда он возвращается. Этого не происходит.

Так что либо мои настройки IPTables неверны, либо я просто неправильно понимаю концепцию устройства Tun. Любое руководство будет с благодарностью.

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

1 ответ1

2

Ваша главная ошибка: предположение, что такой трафик будет перенаправлен. Это не тот случай. Это исходящий, а не перенаправленный трафик для перспективы ВМ. Ответы ICMP приходят в eth0 и попадают в стек протоколов, поэтому вы не можете видеть их на устройстве tun0. Для более подробной информации вы можете посмотреть здесь: https://serverfault.com/questions/554477/tap0-not-receiving-traffic/554698

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