правка: Я новичок в нетворкинге и открытии чего-то нового :)
Я создал программный интерфейс TUN, с которым можно взаимодействовать.
Я настроил его и запустил
ifconfig myTun 10.10.1.1/24 up
ifconfig
и он работает и пингуется, как я вижу10.10.1.1
и чтобы на 100% убедиться, что мой интерфейс TUN работает и исправен с моей письменной проблемой, я сделал следующее:
Я выполнил ping 10.10.1.2
, и пакет был получен в моей программе, я записал его обратно в tun, а затем снова получил его в цикле.
теперь я уверен, что все пакетыОТилиК 10.10.1.x
принимаются и отправляются в TUN без каких-либо проблем.
когда я пишу пакет слюбой внешний IP-адрес назначенияон 10.10.1.x
успешно записан в TUN, но ответа на TUN не получено.
после поиска и прочтения множества статей я пришел к выводу, что ядро молча отбрасывает его.
Я прочитал много вопросов и ответов об интерфейсах TUN на serverfault.com и обнаружил, что упустил серьезную часть в своей логике, а именно:МАРШРУТИЗАЦИЯ.
Мое окончательное понимание таково: пакет в порядке и получен сетевым стеком в Linux, но ядро не знает, что делать с пакетом из-за его странного назначения. Затем я обнаружил, что мне нужно указать некоторую маршрутизацию для ядра вiptablesи позволяет net.ipv4.ip_forward
, но не знает, как это сделать.
Моя конечная цель:
когда я отправляю любой пакет с любым местом назначения за пределами 10.10.1.x
TUN, он должен быть направлен на мой основной интерфейс (который имеет доступ к Интернету и является wlps020f3
), а любой результат этого пакета должен быть получен обратно на мой интерфейс TUN
как настроитьНАТвiptablesобойти?
заранее спасибо
решение1
sudo sysctl -w net.ipv4.ip_forward=1
NAT-трафикиз туннельного интерфейса за вашим беспроводным адресом:
sudo iptables -t nat -A POSTROUTING -o wlps020f3 -j MASQUERADE
Ни одно из этих изменений не переживет перезагрузку. Верхняя ссылка иВот этотесть больше информации по этому аспекту.