@Thushi я говорил про MAC-адрес. IP-адреса от DHCP. Это не троллинг. Консультант я работаю с действительно страшной. В принципе, он не счастлив с учениками М. Ка оставляя его сделать аспирантуре за рубежом. Он так же ужасен в предмете. Он зависит от других сотрудников и студентов в своей работе. Он даже не понимает, детали из бумаги у него есть имя. Я также использую и рекомендую `ntfsclone`. Потому что она разбирается в файловой системе NTFS только читает материал, он должен реконструировать filesytem на разделе, так что если раздел заполнен файлами это делает, как правило, будет меньше, чем точная копия раздела байт сделаны с помощью " ДД "и копирование с ntfsclone будет быстрее, чем через "ДД", особенно если секция имеет много пустого пространства.

Так что в вашей конфигурации, все пакеты попытке отправить в сеть, изначально происходящие из 10.0.0.1 (потому что они идут через tun0 интерфейс и его локальный адрес 10.0.0.1). Вы захватывать пакеты, все нормально до сих пор.
Теперь, tun0 отправляет пакеты дальше. Адрес источника является 10.0.0.1 и вы хотите, чтобы пакеты уйти через другой интерфейс (wlp2s0 в вашем случае). Это маршрутизации так давайте включить маршрутизацию первый:

команды sysctl -w в сети.протокол IPv4.ip_forward=1

После этого, если вы будете смотреть на тсрйитр для wlp2s0 вы можете видеть пакеты оставить с адресом 10.0.0.1 , а не с исходного адреса сети интерфейс (то, что вы ожидаете, я думаю). Так что нужно менять адрес источника и это называется источник нац. В Linux это легко с помощью программы netfilter/iptables в:

в iptables -Т физ-а POSTROUTING -о wlp2s0 -с 10.0.0.1 -Джей маскарад

Также убедитесь, что ваш вперед цепочка принять политику или вы должны разрешить переадресацию с чем-то вроде:

в iptables -вперед -я tun0 -о wlp2s0 -с 10.0.0.1 -Джей принимает
в iptables -вперед -я wlp2s0 -о tun0 -д 10.0.0.1 -Джей принимает

Все должно работать сейчас: ядро Linux выполняет маршрутизацию, она движется пакеты с tun0 интерфейс wlp2s0. netfilter и должны изменить исходный IP-адрес 10.0.0.1 на свой wlp2s0 интерфейса присвоен адрес для исходящих пакетов. Он запоминает все соединения и когда ответные пакеты вернуться (если они) он меняет адрес назначения на wlp2s0 интерфейса, Присвоенный адрес 10.0.0.1 (в "трассировщика" функция).
Ну, это надо, но это не так. Похоже, netfilter и путается с этой сложной конфигурации маршрутизации и тот факт, что один и тот же пакет сначала проходит через выходную цепь, а потом проходит и приходит следующее цепочки. По крайней мере на коробки в Debian 8 она не работает.
Лучший способ для устранения неполадок с netfilter - это след функции:

команды modprobe ipt_LOG
в iptables -Т сырье -выход -п в ICMP -J в помине
в iptables -Т сырье -это следующее -п протокол ICMP -J в помине

Я включить только трассировки для ICMP-пакетов, вы можете использовать другой фильтр для отладки.
Он покажет, какие таблицы и цепочки пакет проходит. И я вижу, что пакет не идет дальше вперед цепи (и это не быть пойманным с NAT/POSTROUTING цепь, которая на самом деле СНАТ).
Ниже несколько способов, чтобы сделать эту работу.

Подход #1

Лучший способ, чтобы ООН-путают с netfilter - изменить IP-адрес источника пакетов в tun0.с приложением. Это также наиболее естественным образом. Мы должны меняться, чтобы 10.0.0.1 10.0.0.2 на пути наружу и 10.0.0.2 10.0.0.1, чтобы на обратном пути.
Я модифицировал tun0.с с адресом источника изменить код. Вот новый файл и вот файл патчей для tun0.гр. Изменение в IP-заголовке также привлекать контрольная сумма коррекции, поэтому я взяла код от брелка проект. Вот полный список команд я выполнять после чистой перезагрузки и tun0_changeip.с запуска:

команду ifconfig tun0 инет 10.0.0.1/30 до
команды sysctl -w в сети.протокол IPv4.ip_forward=1
ИС добавить маршрут по умолчанию в dev tun0 стол Джон
правило IP добавить из всех подстановок Джон
правило IP 10.0.0.2 добавить из поиска основной приоритет 500
в iptables -Т физ-а POSTROUTING -о wlp2s0 -с 10.0.0.2 -Джей маскарад

Обратите внимание, что вам не нужно отключать фильтрации обратного пути в таком случае, потому что все законно - tun0 только принимает и отправляет пакеты, которые относятся к своей подсети. Также вы можете сделать источник маршрутизации на основе, а не на основе интерфейсов.

Подход #2

Это можно сделать СНАТ , прежде чем пакет достигнет tun0 интерфейс. Хотя это не очень правильно. Вы обязательно должны выключить фильтрации обратного пути в этом случае:

команды sysctl -w в сети.протокол IPv4.конф.tun0.rp_filter=0
# Он не будет работать без замены "всех" значение
команды sysctl -w в сети.протокол IPv4.конф.все.rp_filter=0

Теперь, СНАТ: в iptables -Т физ-а POSTROUTING -O в tun0 -с 10.0.0.1 -й СНАТ --к-исходный IP-адрес.адрес.из.ваш.подключения.интерфейс

Здесь мы меняем адрес источника, просто прежде чем пакеты доходят до tun0 устройства. tun0.С код отправить эти пакеты "как есть" (с измененным адресом источника) и они успешно маршрутизироваться через WLAN интерфейс. Но у вас может быть динамический IP на WLAN интерфейсе и хотите использовать маскарадные (для того, чтобы не указать адрес явным образом). Вот как вы можете использовать маскарадные:

в iptables -Т физ-а POSTROUTING -о tun0 -с 10.0.0.1 -Джей СНАТ --к-источник 10.0.55.1
в iptables -Т физ-а POSTROUTING -о wlp2s0 -с 10.0.55.1 -Джей маскарад

Пожалуйста, обратите внимание на "10.0.55.1" IP-адрес - это другое. Вы можете использовать здесь любой IP, это не важно. Пакеты достичь трансляцией сетевых адресов NAT/POSTROUTING цепь на wlp2s0 интерфейс, если мы изменим исходный IP раньше. И теперь это не зависит от статический IP на интерфейс WLAN.

Подход #3

Вы можете также использовать fwmark. Таким образом, вы не должны снать , но вы будете захватывать только исходящие пакеты:
В первую очередь надо отключить фильтрации обратного пути для tun0 , потому что он будет пересылать пакеты, которые принадлежат к другой сети:

команды sysctl -w в сети.протокол IPv4.конф.tun0.rp_filter=0
# Он не будет работать без замены "всех" значение
команды sysctl -w в сети.протокол IPv4.конф.все.rp_filter=0

Теперь давайте изменять правила маршрутизации немного:
# Удаляем старые правила
правило IP-дель-ииф tun0 основного поиска 
правило IP-дель из всех подстановок Джон

# Пакеты начинают с интерфейсом WLAN, так они будут иметь адрес источника из его
в iptables -Т мангл-выход -о wlp2s0 -Джей Марк-набор-Марк 1
правило IP добавить 0х1 поиска fwmark Джон

Вот еще один "хак" для маршрутизации и с netfilter , который работает на моей системе Debian 8 коробки, но все же я рекомендую сделать первый подход, так как это более естественно и не использовать какие-то хаки.


Вы можете также рассмотреть, чтобы построить приложение в качестве прозрачного прокси. Я думаю, было бы гораздо легче, вместо того, чтобы анализировать пакеты от устройства tun.