Искам да направя моя собствена много проста реализация на VPN в C на Linux. За тази цел ще заснема IP пакети, ще ги модифицирам и ще изпратя напред. Модификацията се състои от криптиране, удостоверяване и други неща като в IPSec. Въпросът ми е трябва ли да обработвам по някакъв начин размера на пакетите или това ще се обработва автоматично? Знам, че максималният му размер е 65535 - 20 (за заглавка), но според MTU е по-малък. Мисля, че това е така, защото криптираният полезен товар, „инкапсулиран в UDP“ за NAT-T, е много по-голям от просто „нормалния полезен товар“ на IP пакета.
Инкапсулиране на пакети за собствен прост VPN
Отговори (1)
Е, открих, че всъщност има 2 начина за справяне с този проблем:
1) Можем да изпращаме големи пакети чрез DF флаг на настройките, за да кажем, че искаме да фрагментираме пакетите. Но в този случай пакетът може да бъде загубен, тъй като не всички устройства/и т.н. поддържат фрагментиране на пакети
2) Можем автоматично да изчислим нашия максимален MTU между хостовете, да ги разделим и изпратим. От друга страна събираме всички тези пакети заедно и ги възстановяваме. Това може да стане чрез внедряване на собствена "система" за тази цел.
Повече за фрагментирането и повторното сглобяване на IP пакети можете да прочетете тук
person
user2123079
schedule
12.08.2015