LINUX.ORG.RU

История изменений

Исправление v4567, (текущая версия) :

По поводу route-gateway, согласен можно не писать.

push «route 192.168.1.0 255.255.255.0»

Это в конфиге сервера, или у меня в конфиге клиента:

route 192.168.1.0 255.255.255.0

Одна из этих записей должна быть обязательно, (или в конфиге сервера - как Вы написали, или в конфиге клиента - как я написал) иначе у клиента не будет прописан маршрут к его внутренней сети через vpn интерфейс - tapX и свою сеть 192.168.1.0/24 он не увидит. Тогда этот маршрут можно прописать вручную.

Но что бы увидеть свою сеть этого не достаточно, на шлюзе обязательно должен быть проброс - FORWARD с интерфейса tap0 в интерфейс eth1 и обратно, о чём я и написал и привёл правила.

iptables -t nat -A POSTROUTING -s 10.0.100.0/24 -j MASQUERADE

Можно и так написать, но если у вас на интерфейсе eth1 стационарный ip, а не динамический, то лучше делать как я написал:

iptables -t nat -I POSTROUTING 1 -o eth1 -p tcp -s 10.0.100.0/24 -d 192.168.1.0/24 -j SNAT --to-source 192.168.1.254

В подтверждение привожу цитаты из переведённой документации по netfilter

Маскарадинг (MASQUERADE) в основе своей представляет то же самое, что и SNAT только не имеет ключа --to-source. Причиной тому то, что маскарадинг может работать, например, с dialup подключением или DHCP, т.е. в тех случаях, когда IP адрес присваивается устройству динамически. Если у вас имеется динамическое подключение, то нужно использовать маскарадинг, если же у вас статическое IP подключение, то бесспорно лучшим выходом будет использование действия SNAT.

Маскарадинг подразумевает получение IP адреса от заданного сетевого интерфейса, вместо прямого его указания, как это делается с помощью ключа --to-source в действии SNAT. Действие MASQUERADE имеет хорошее свойство - «забывать» соединения при остановке сетевого интерфейса. В случае же SNAT, в этой ситуации, в таблице трассировщика остаются данные о потерянных соединениях, и эти данные могут сохраняться до суток, поглощая ценную память. Эффект «забывчивости» связан с тем, что при остановке сетевого интерфейса с динамическим IP адресом, есть вероятность на следующем запуске получить другой IP адрес, но в этом случае любые соединения все равно будут потеряны, и было бы глупо хранить трассировочную информацию.

Как вы уже поняли, действие MASQUERADE может быть использовано вместо SNAT, даже если вы имеете постоянный IP адрес, однако, невзирая на положительные черты, маскарадинг не следует считать предпочтительным в этом случае, поскольку он дает большую нагрузку на систему.

Взято вот от сюда: https://it.wikireading.ru/14362

Вот скажите зачем вы приводите правила forward там где вас об этом не спрашивали?

Да ТС не просил приводить правила фильтра, написал только о проблеме, что не видит свою сеть. Проблема может быть и в фильтре, вот я и привёл правила, хотел коснуться всех аспектов с которыми могут быть проблемы.

Исходная версия v4567, :

По поводу route-gateway согласен можно не писать.

push «route 192.168.1.0 255.255.255.0»

Это в конфиге сервера, или у меня в конфиге клиента:

route 192.168.1.0 255.255.255.0

Одна из этих записей должна быть обязательно, (или в конфиге сервера - как Вы написали, или в конфиге клиента - как я написал) иначе у клиента не будет прописан маршрут к его внутренней сети через vpn интерфейс - tapX и свою сеть 192.168.1.0/24 он не увидит. Тогда этот маршрут можно прописать вручную.

Но что бы увидеть свою сеть этого не достаточно, на шлюзе обязательно должен быть проброс - FORWARD с интерфейса tap0 в интерфейс eth1 и обратно, о чём я и написал и привёл правила.

iptables -t nat -A POSTROUTING -s 10.0.100.0/24 -j MASQUERADE

Можно и так написать, но если у вас на интерфейсе eth1 стационарный ip, а не динамический, то лучше делать как я написал:

iptables -t nat -I POSTROUTING 1 -o eth1 -p tcp -s 10.0.100.0/24 -d 192.168.1.0/24 -j SNAT --to-source 192.168.1.254

В подтверждение привожу цитаты из переведённой документации по netfilter

Маскарадинг (MASQUERADE) в основе своей представляет то же самое, что и SNAT только не имеет ключа --to-source. Причиной тому то, что маскарадинг может работать, например, с dialup подключением или DHCP, т.е. в тех случаях, когда IP адрес присваивается устройству динамически. Если у вас имеется динамическое подключение, то нужно использовать маскарадинг, если же у вас статическое IP подключение, то бесспорно лучшим выходом будет использование действия SNAT.

Маскарадинг подразумевает получение IP адреса от заданного сетевого интерфейса, вместо прямого его указания, как это делается с помощью ключа --to-source в действии SNAT. Действие MASQUERADE имеет хорошее свойство - «забывать» соединения при остановке сетевого интерфейса. В случае же SNAT, в этой ситуации, в таблице трассировщика остаются данные о потерянных соединениях, и эти данные могут сохраняться до суток, поглощая ценную память. Эффект «забывчивости» связан с тем, что при остановке сетевого интерфейса с динамическим IP адресом, есть вероятность на следующем запуске получить другой IP адрес, но в этом случае любые соединения все равно будут потеряны, и было бы глупо хранить трассировочную информацию.

Как вы уже поняли, действие MASQUERADE может быть использовано вместо SNAT, даже если вы имеете постоянный IP адрес, однако, невзирая на положительные черты, маскарадинг не следует считать предпочтительным в этом случае, поскольку он дает большую нагрузку на систему.

Взято вот от сюда: https://it.wikireading.ru/14362

Вот скажите зачем вы приводите правила forward там где вас об этом не спрашивали?

Да ТС не просил приводить правила фильтра, написал только о проблеме, что не видит свою сеть. Проблема может быть и в фильтре, вот я и привёл правила, хотел коснуться всех аспектов с которыми могут быть проблемы.