LINUX.ORG.RU
ФорумAdmin

ufw вместо iptables

 ,


0

1

Потихоньку осваиваю wireguard :=)
Надыбал мануал для красной шляпы, в серверном конфиге которого есть такие две очевидно важные строки:

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Но они для iptables, а какими ои должны быть для ufw?

★★★★

Гугл подсказывает, что в самом UFW возможности включить маскарад нет - там используется before.rules, которые пишутся в формате iptables.

Пример

Pinkbyte ★★★★★ ()
Ответ на: комментарий от chukcha

ufw - это надстройка над iptables, правила iptables при этом вполне себе работают. Какую проблемы ты пытаешься решить?

Если вопрос в порядке правил(например ufw добавляет последним правилом DROP на все интерфейсы в цепочку FORWARD) - замени -A на -I <chain> 1 - тогда правило будет добавляться не последним, а первым.

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1)

Я сильно расстрою новостью, что ufw это простая обёртка над ip/nftables, для тех пользователей, кто не хочет ломать последний мозг над синтаксисом и просто хочет allow/deny port?

SkyMaverick ★★★★ ()
Последнее исправление: SkyMaverick (всего исправлений: 1)
Ответ на: комментарий от SkyMaverick

Да, тепеь я не смогу спать ночами, когда узнал страшную тайну!

Откройте другую. Почему в настройках FW и NAT такой жуткий снтаксис, что нужны обёртки? Только не надо про «гибкость».

modest ()
Ответ на: комментарий от SkyMaverick

Я не сильно расстроюсь, потому что настолько часто попадаю впросак с этими тонкостями, что уже привык :-)

Вот иммеющийся конфиг сервера WireGuard:

/etc/wireguard/wg0.conf

[Interface]
PrivateKey = <privatekey>
Address = 10.0.0.1/24
ListenPort = 3999

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE 

Если ufw включен, то vpn не работает. Но стоит остановить ufw, то vpn начинает нормально работать.

Так что ваше «ufw это простая обёртка над ip/nftables» видимо не просто обертка, и конфиг, который взят от Центоса, для Дебиана нуждается в какой-то правке.

В какой?

chukcha ★★★★ ()
Ответ на: комментарий от modest

Почему в настройках FW и NAT такой жуткий снтаксис

Абсолютно нормальный синтаксис.

что нужны обёртки?

Обертки обычно зарождаются с малого, есть у вас какой-то кусок с однотипными правилами различающиеся одним, двумя правилами. Вы выносите эту хрень в отдельную функцию в том же bash скрипте, потом присобачиваете ещё что-то, потом ещё, добавляете конфиги и вот вас приветствует очередная оболочка. Дальше делитесь с одним человеком, со вторым... и внезапно обнаруживаете, что вашим поделием пользуются сотни.
Или почти тоже самое, но по взрослому, внезапно принимаете решение, что всё это фигня, должно быть по взрослому и творите очередного монстра.
Как-то так.

anc ★★★★★ ()
Ответ на: комментарий от anc

Да, ответили, в плане просвещения. А можно конкретнее - показать мой конфиг с этими подсказками?
А то я чукча, мало ли что, не так пойму глубину ваших познаний и наворочу невесть что :-)

chukcha ★★★★ ()
Ответ на: комментарий от chukcha

А то я чукча, мало ли что, не так пойму глубину ваших познаний и наворочу невесть что :-)

Не прикидывайтесь, четыре звезды уже нафлудили :)

Вам уже ответили:

замени -A на -I <chain> 1

От себя добавлю, цифирка 1 в конце не обязательна, по умолчанию она и будет использована. -A от слова append, -I от слова insert, цифирка указывает в какую строку цепочки воткнуть правило, по умолчанию втыкает в начало цепочки.

anc ★★★★★ ()
Ответ на: комментарий от modest

Ну не знаю, как по мне синтаксис как синтаксис. Причём у nftables, исключительно моё мнение, куда более человекочитаемый, понятный и вменяемый.

Ну а почему не надо? Гибкость, в том числе и о том, что позволяет решать широкий круг задач. UFW, если абстрагировать - это использующая ограниченное подмножество возможностей обёртка, упрощающая конечному пользователю решение базовых задач разграничения доступа к сети.

Оффтоп. Про синтаксисы, я вот, например, PowerShell как ни пытался, так до сих пор нормально работать с ним не в состоянии. Вот это, как по мне, пример действительно ужасного синтаксиса.

SkyMaverick ★★★★ ()
Ответ на: комментарий от anc

anc Ну да, вам бы только на мои звезды глазеть :=)

Ладно, сделал вашу замену:

[Interface]
PrivateKey = <privatekey>
Address = 10.0.0.1/24
ListenPort = 3999

PostUp = iptables -I <chain> 1 FORWARD -i %i -j ACCEPT; iptables -t nat -I <chain> 1 POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

- правильно?

chukcha ★★★★ ()
Последнее исправление: chukcha (всего исправлений: 2)
Ответ на: комментарий от chukcha

сделал вашу замену

Она не моя, она Pinkbyte. Я тут мимокрокодил. :)

- правильно?

Ага.

anc ★★★★★ ()
Ответ на: комментарий от SkyMaverick

Про синтаксисы, я вот, например, PowerShell как ни пытался, так до сих пор нормально работать с ним не в состоянии. Вот это, как по мне, пример действительно ужасного синтаксиса.

У мц куда не копни, всё такое. Я серьезно, достаточно долго погромировал под эту хрень(в смысле под шинду). Эталоном для меня является vba, единственный случай когда читая документацию я матерился не смотря на присутствие женщин.

anc ★★★★★ ()
Ответ на: комментарий от AS

Нет: iptables [-t table] -D chain rulenum

Блин, так кому из вас верить??

Кто-нибудь может эти две злочастные строки написать в полном формате, без намеков?

chukcha ★★★★ ()
Ответ на: комментарий от AS

При всём моём к вам уважении, но автоматически удалять по номеру правила это очень неиллюзорный способ однажды получить неожиданное поведение с возможно не очень желательными последствиями.

anc ★★★★★ ()
Ответ на: комментарий от anc

При всем уважении к вашей занимательной дискуссии вы совершенно забыли о топикстартере с его вопросом.
А он так и продолжает терпеливо ждать вашего правильного и обоснованного решения.

Любая ошибка в нем приведет к дискредитации канала VPN, так что дилетантам тут лучше воздержаться от излияний, не гарантирующих безопасность.

chukcha ★★★★ ()
Последнее исправление: chukcha (всего исправлений: 1)
Ответ на: комментарий от chukcha

Так вы попробовали, то что вам предложили?

anc ★★★★★ ()
Ответ на: комментарий от chukcha

Неправильно. -I <chain> - это я имел ввиду -I FORWARD например. chain в данном случае название цепочки.

Правильно:

PostUp = iptables -I FORWARD 1 -i %i -j ACCEPT; iptables -t nat -I POSTROUTING 1 -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Pinkbyte ★★★★★ ()
Ответ на: комментарий от SkyMaverick

Оффтоп. Про синтаксисы, я вот, например, PowerShell как ни пытался, так до сих пор нормально работать с ним не в состоянии. Вот это, как по мне, пример действительно ужасного синтаксиса.

Вот тоже самое. Я допускаю, что это некий синдром утёнка, но точно также я не мог работать с lsi megacli, даже поиск в man был затруднителен со всем этим camelcase и сокрашениями. Как только перешёл на storcli, мои волосы сразу стали мягкими и шелковистыми.

Dimez ★★★★★ ()
Ответ на: комментарий от chukcha

Блин, так кому из вас верить??

Верить надо man iptaples. Хотя...

AS ★★★★★ ()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от anc

При всём моём к вам уважении, но автоматически удалять по номеру

Интересно, когда это iptables научили не по номеру удалять... Похоже давно.

AS ★★★★★ ()
Ответ на: комментарий от anc

яннп ну и ладно.

Ну в мане в начале примеры. Я, честно говоря, думал, что они там все (а иначе нафига их так много)? Лет 15 назад городил скрипт для удаления правил через расчёт номера. В общем только что узнал, что можно было не городить. :-)

AS ★★★★★ ()
Ответ на: комментарий от AS

Ааааа... Семён Семёныч :) Ну сколько я знаю iptables, а это где-то с начала нулевых, номерки были опциональны и сомневаюсь, что когда-то были обязательны. :)

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Pinkbyte Урря! После трех дней траханины удалось таки запустить WireGuard! :-)

Непонятные строки для сервера WG в итоге получились такие -

[Interface]
PrivateKey = реальный_privatekey
Address = 10.0.0.1/24
ListenPort = 28888

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s3 -j MASQUERADE
где в предпоследней строке вместо рекомендованного -I используется -A.
Разницы между ними так и не понял, работает ну и ладно.

Теперь Гигабайты по внутренней сетке 10.0.0.x бегают только в путь, а скорость в туннеле близка к скорости физического канала!

Однако радость было недолгой. Да, защищенный туннель VPN получился, и доступа к нему никто из посторонних не имеет.

Но мне-то надо совсем другое - чтобы VPN-клиент выходил через VPN-сервер в свободный Интернет, как это обычно предлагают Интернет хостеры.

Например, мой локальный клиентский VPN-адрес равен 10.0.0.2, локальный VPN-адрес сервера равен 10.0.0.1, а его внешний 95.95.95.95.

И вот мне нужно через этот мой VPN выйти в Инет под адресом 95.95.95.95

Как это сделать?

Да, можно замутить такой трюк через реверсный прокси, но это будет совсем некошерное решение.
Наверное, можно задействовать какую-ту хитрую маршрутизацию. Но как?

chukcha ★★★★ ()
Ответ на: комментарий от chukcha

Все сетевики куда-то подевались... Наверное с утра до ночи сидят в новостях :=)

chukcha ★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.