Путь интерфейса интерфейса туннеля Linux

У меня есть вопросы по потоку IP-пакетов для следующего сценария.

Сценарий:

  1. Интерфейс tun0 (10.0.0.2/8) и физическая беспроводная LAN-карта wlan0 (ip-адрес не исправляется) на стороне клиента, wlan0 может подключаться к Интернету,
  2. Другой интерфейс tun0 (10.0.0.1/8) и физическая карта ethernet eth0 (192.168.1.38/24) на стороне сервера (Ubuntu 12.04 amd64), eth0 находится в частной сети за брандмауэром NAT и может подключаться к Интернету через брандмауэр (межсетевой экран как шлюз),
  3. запустили « echo 1 > /proc/sys/net/ipv4/ip_forward » на стороне сервера,
  4. выполнили « iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE » на стороне сервера,

Вот схема сценария:

 --------------- ---------------- | | | | | client tun0 |----------| client wlan0 | | 10.0.0.2 | | ip not fix | | | | | --------------- ---------------- | | internet | | ---------------- | | | firewall | | (gateway) | | 192.168.1.1 | | | ---------------- | | private network | 192.168.1.0/24 | --------------- ---------------- | | | | | server tun0 |----------| server eth0 | | 10.0.0.2 | | 192.168.1.38 | | | | | --------------- ---------------- 

Я использовал две очень простые vpn-подобные клиент-серверные программы для чтения / записи ip-пакетов двух интерфейсов tun0 и создания туннеля между wlan0 и eth0, так что ip-пакеты от 10.0.0.2 могли достигать 10.0.0.1 и наоборот ( например, может запускать ftp с 10.0.0.1 до 10.0.0.2).

Однако, если я хочу использовать клиент tun0 (10.0.0.2) для просмотра веб-страниц, http-запрос будет происходить из 10.0.0.2 и дестабилизировать по интернет-адресу ip (конечно же, не 10.0.0.1). HTTP-запрос (я думаю) после достижения сервера tun0 (10.0.0.1) затем будет перенаправлен на сервер eth0 (поскольку ip_forward включен, и я думаю, что этот перенаправленный HTTP-запрос все равно будет иметь IP-адрес источника 10.0.0.2, исправьте меня, если я ошибаюсь), и там NAT выполняется, чтобы переупаковать HTTP-запрос как исходящий из eth0 (т.е. исходный ip-адрес изменяется на 192.168.1.38, поскольку я запустил команду iptables), а затем переупакованный HTTP-запрос проходит через брандмауэр (а затем и Интернет) до места назначения.

Когда HTTP-ответ (с веб-сайта) достигает сервера eth0, там должен быть обратный NAT. Мой вопрос:

  1. будет ли обратный NAT возвращать IP-адрес назначения ответа http на 10.0.0.2,
  2. как сервер eth0 знает, куда перенаправить HTTP-ответ с обратным NAT?
  3. будет ли eth0 перенаправлять HTTP-ответ на сервер tun0 (10.0.0.1), поскольку адрес IP-адреса получателя обратный-NATed должен быть 10.0.0.2?
  4. мне нужно добавить маршрут на стороне сервера для правильной маршрутизации / пересылки HTTP-ответа с обратным NAT? если да, то как?
  5. мне нужно добавить некоторые правила iptables на стороне сервера для правильной маршрутизации / пересылки HTTP-ответа с обратным NAT? если да, то как?

One Solution collect form web for “Путь интерфейса интерфейса туннеля Linux”

Предполагая, что ваш клиент отправляет весь трафик через tun0, вам нужно добавить следующее на стороне сервера (после включения / proc / sys / net / ipv4 / ip_forward):

 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT 

После этого шага, когда вы будете просматривать веб-страницы со своего клиента, следующий поток пакетов:

  1. Клиент отправит пакет в 10.0.0.1.
  2. На стороне сервера пакет, полученный на tun0, будет переведен с 10.0.0.2 на 192.168.1.38.
  3. В таблице NAT будет создана запись отображения.
  4. Пакет будет отправлен в интернет через 192.168.1.1 (шлюз).
  5. Ответ будет получен по адресу 192.168.1.38.
  6. Обратный NAT будет происходить согласно записи отображения, созданной на шаге 3.
  7. Пакет ответа будет перенаправлен обратно в 10.0.0.2.

Надеюсь, что я не пропущу какой-то важный шаг 🙂

  • Возможно ли подключение Wi-Fi и Ethernet к одной сети?
  • Базовая производительность NIC IC 82574L на Debian 7.0
  • NSLookup, как интерпретировать вывод
  • Приведение интерфейса не добавляет шлюз по умолчанию в таблицу маршрутизации в Ubuntu
  • Почему init прослушивает порт 80?
  • Как создать сетевой интерфейс без генерации связанного маршрута?
  • Куда шла панд?
  • Протокол маршрутизации AODV на модели малины Pi B?
  • Как применить iptables SNAT к пакетам, привязанным к localhost (цепочка INPUT)?
  • SNR или уровень сигнала и шума в режиме ad-hoc
  • ftp не получает список каталогов
  • Сообщение SIPp "hello world" для Asterisk
  • Linux и Unix - лучшая ОС в мире.