Инкапсулиране на пакети за собствен прост VPN

Искам да направя моя собствена много проста реализация на VPN в C на Linux. За тази цел ще заснема IP пакети, ще ги модифицирам и ще изпратя напред. Модификацията се състои от криптиране, удостоверяване и други неща като в IPSec. Въпросът ми е трябва ли да обработвам по някакъв начин размера на пакетите или това ще се обработва автоматично? Знам, че максималният му размер е 65535 - 20 (за заглавка), но според MTU е по-малък. Мисля, че това е така, защото криптираният полезен товар, „инкапсулиран в UDP“ за NAT-T, е много по-голям от просто „нормалния полезен товар“ на IP пакета.


person user2123079    schedule 05.08.2015    source източник


Отговори (1)


Е, открих, че всъщност има 2 начина за справяне с този проблем:

1) Можем да изпращаме големи пакети чрез DF флаг на настройките, за да кажем, че искаме да фрагментираме пакетите. Но в този случай пакетът може да бъде загубен, тъй като не всички устройства/и т.н. поддържат фрагментиране на пакети

2) Можем автоматично да изчислим нашия максимален MTU между хостовете, да ги разделим и изпратим. От друга страна събираме всички тези пакети заедно и ги възстановяваме. Това може да стане чрез внедряване на собствена "система" за тази цел.

Повече за фрагментирането и повторното сглобяване на IP пакети можете да прочетете тук

person user2123079    schedule 12.08.2015