Маскарад або палітычная маршрутызацыя: трафік лакальнай сеткі праз VPN-шлюз
Linux-шлюз можа схаваць крыніцы лакальнай сеткі за адрасам тунеля або маршрутызаваць іх без змен. Выбар залежыць ад таго, каму належыць далёкі бок, і ад яго зваротнага маршруту.
Паставіць усю лакальную сетку за VPN-тунель — гэта простая частка; вырашыць, як далёкі бок бачыць гэтых кліентаў, — не. Маскарад перапісвае кожную крыніцу лакальнай сеткі на адрас тунеля шлюза, таму далёкі бок адказвае аднаму партнёру. Палітычная маршрутызацыя захоўвае зыходныя адрасы і патрабуе, каб далёкі бок ведаў, як да іх дабрацца. Ні адзін з варыянтаў не з’яўляецца прадвызначаным; выбар вынікае з таго, каму належыць далёкі бок і ці важная ідэнтычнасць кожнай прылады.
Дзве схемы абяцаюць рознае
Маскарад зводзіць лакальную сетку да аднаго бачнага хаста: шлюза. Далёкая сетка адказвае на гэты адзін адрас, а шлюз перакладае адказы назад кліенту, які пачаў паток. Маршрут да вашых прыватных прэфіксаў на далёкім баку не патрэбны, таму гэтая схема вытрымлівае правайдэра, які адмаўляецца іх прапускаць. Шлюз таксама становіцца крыніцай кожнага злучэння, таму далёкі бок не можа адрозніць двух кліентаў.
Палітычная маршрутызацыя захоўвае адрас кожнага кліента нязменным. Далёкая сетка бачыць сапраўдную крыніцу і можа зафіксаваць яе, прымяніць правіла для кожнага хаста або адправіць адказ непасрэдна на гэты адрас. Гэтая бачнасць і ёсць сутнасцю, і яна нясе абавязак: далёкі бок павінен мець маршрут для прэфікса лакальнай сеткі, які вядзе назад праз тунель. Сплануйце гэты маршрут да ўключэння правіла, бо тунель падымецца ў любым выпадку і не хопіць толькі адказаў.
Рэжымы збояў адрозніваюцца гэтак жа, як і абяцанні. Адсутнае правіла маскарада дае пакеты, якія сыходзяць з прыватнымі крыніцамі і ніколі не вяртаюцца. Адсутны зваротны маршрут дае той жа сімптом пры палітычнай маршрутызацыі, але выпраўленне належыць далёкаму маршрутызатару, а не шлюзу.
Маскарад: адзін партнёр на далёкім баку
У шляху маскарада ёсць парадак, які мае значэнне. Перасыланне павінна быць уключана, перш чым любое правіла NAT прынясе карысць, табліца фільтрацыі павінна дазваляць транзіт у абодвух кірунках, і толькі тады трансляцыя ўжываецца на інтэрфейсе тунеля.
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i eth1 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
Кліентам усё яшчэ патрэбны шлях да шлюза. Альбо шлюз з’яўляецца іх маршрутызатарам па змаўчанні, альбо яны трымаюць пэўны маршрут для далёкага прэфікса; калі асобны маршрутызатар застаецца галоўным, яму патрэбны статычны маршрут для пунктаў прызначэння тунеля, інакш пакет пойдзе на няправільны хоп, перш чым шлюз яго ўбачыць.
DNS — асобнае рашэнне. Рэзалвер на далёкім баку адказвае, толькі калі яго адказ можа вярнуцца да кліента. Пры маскарадзе запыт выглядае як запыт ад шлюза, таму зваротны шлях рэзалвера ўжо забяспечаны; пры палітычнай маршрутызацыі рэзалверу патрэбны той жа зваротны маршрут, што і любой іншай далёкай службе.
Палітычная маршрутызацыя: захавайце крыніцу, дадайце зваротны шлях
Палітычная маршрутызацыя пачынаецца з табліцы і правіла, якое яе выбірае. Трафік, што ўваходзіць з інтэрфейса лакальнай сеткі, накіроўваецца ў асобную табліцу, і гэтая табліца нясе маршрут па змаўчанні праз тунель. Галоўная табліца застаецца нязменнай, таму трафік, створаны самім шлюзам, можа ісці іншым шляхам.
ip rule add iif eth1 table vpn
ip route add default dev tun0 table vpn
Затым далёкі бок павінен накіраваць прэфікс лакальнай сеткі назад праз тунель. Гэта налада на далёкім маршрутызатары, а не на гэтым шлюзе. Шлюз таксама павінен прымаць адказы, што прыходзяць праз іншы інтэрфейс, чым прадказвае галоўная табліца; паслабленая фільтрацыя зваротнага шляху (rp_filter са значэннем 2) — звычайная папраўка, калі строгі рэжым скідвае гэтыя пакеты.
Калі актыўныя два тунелі, пазначце кожны паток пры ўваходзе і дайце пазнацы выбіраць табліцу. Правіла, якое глядзіць толькі на ўваходны інтэрфейс, накіроўвае трафік абодвух тунеляў у адну табліцу, таму другі тунель крадзе патокі ў першага. Праверце гэтую пазнаку злучэннем, якое перажывае перападключэнне, бо менавіта тады праяўляецца змешаная палітыка.
Вырашайце па ўласнасці і па тым, што фіксуе далёкі бок
Калі тунель сканчаецца ў правайдэра, выкарыстоўвайце маскарад. Гэты аператар не будзе маршрутызаваць вашы прыватныя дыяпазоны лакальнай сеткі, і ў яго няма прычыны адрозніваць асобных кліентаў за вашым шлюзам. Адзін бачны партнёр — адзіная мадэль, якую падтрымлівае яго палітыка, таму дайце яму гэта і трымайце трансляцыю на сваім краі. Правайдэр бачыць аднаго партнёра, што якраз і чакае яго палітыка, а вашы кліенты ўспадкоўваюць гэтую адзіную ідэнтычнасць.
Калі абодва бакі вашыя і далёкія службы абапіраюцца на адрасы крыніц, палітычная маршрутызацыя заслугоўвае свайго дадатковага маршруту. Тады правілы фаервола, доступ па карыстальніках і журналы аўдыту могуць адрозніваць кліентаў. Калі далёкаму боку патрэбная толькі дасягальнасць, маскарад прасцейшы і прыбірае цэлы клас памылак зваротнага маршруту.
Гібрыдныя схемы — нармальная з’ява: палітычная маршрутызацыя ўнутры вашай сеткі, маскарад на краі правайдэра. Важна запісаць, які хоп транслюе і які хоп маршрутызуе, бо выпадковае правіла NAT, дададзенае для аднаго кліента, хавае крыніцу для ўсіх кліентаў у тым жа ланцугу.
Праверце з кліента, затым з другога кліента
Правядзіце тэст там, дзе пачынаецца трафік. Праверце маршрут, які выкарыстоўвае хост, паназірайце, як пакет з’яўляецца на інтэрфейсе тунеля, і агледзьце conntrack наконт трансляцыі. Гэтая паслядоўнасць даказвае, што пакет пайшоў патрэбным шляхам, а не проста некуды дабраўся.
Паўтарыце тэст пасля перападключэння. Правіла маскарада, якое называе інтэрфейс, перажывае новы адрас тунеля; правіла, якое называе стары адрас, — не. Затым праверце другі хост лакальнай сеткі, бо схема, якая працуе на адной машыне, часта залежыць ад уласнага маршруту гэтай машыны, а не ад палітыкі шлюза.
Запішыце выбраную мадэль, трансляваную або захаваную крыніцу і ўладальніка зваротнага маршруту ў нататкі шлюза. Інакш наступны чалавек, які дадасць кліента або тунель, будзе здагадвацца, а здагадка — гэта як працоўная схема ад лакальнай сеткі да VPN робіцца частковай.