Софт роутер

Автор guliver, 15 апреля 2025, 21:41:41

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

guliver

Приветствую, в Linux новичок. Решил попробовать настроить программный роутер.
Дано:
1. systemd-networkd
2. nftables

Раскомментировал net.ipv4.ip_forward=1
Создал
30-enp1s0.network
[Match]
Name = enp1s0
[Network]
DHCP = yes
20-bind.network
[Match]
Name=enp[2,3]s0
[Network]
Bridge=br0
20-bridge.netdev
[NetDev]
Name=br0
Kind=bridge
20-bridge.network
[Match]
Name = br0
[Network]
Address = 10.100.10.1/24
/etc/nftables.conf
#!/usr/sbin/nft -f

flush ruleset

define WAN_INT = enp1s0
define LAN_INT = br0

define BOGONS4 = {
0.0.0.0/8,
10.0.0.0/8,
10.64.0.0/10,
127.0.0.0/8,
127.0.53.53,
169.254.0.0/16,
172.16.0.0/12,
192.0.0.0/24,
192.0.2.0/24,
192.168.0.0/16,
198.18.0.0/15,
198.51.100.0/24,
203.0.113.0/24,
224.0.0.0/4,
240.0.0.0/4,
255.255.255.255/32
}

table ip FILTER {
    chain FROM_WAN {
        ip saddr { $BOGONS4 } counter drop
        counter drop
    }
    chain FROM_LAN {
        tcp dport { 22, 53, 179, 10050 } counter accept
        udp dport { 67, 53, 161 } counter accept
        counter drop
    }
    chain INPUT {
        type filter hook input priority 0; policy accept;
        ct state established,related counter accept
        ct state invalid counter drop
        icmp type echo-request meta length 1529-65535 counter drop
        ip protocol icmp limit rate 10/minute counter accept
        iifname lo ip daddr != 127.0.0.0/8 counter drop
        iifname lo counter accept
        iifname $WAN_INT counter jump FROM_WAN
        iifname $LAN_INT counter jump FROM_LAN
        counter drop
    }
    chain FORWARD {
        type filter hook forward priority 0; policy accept;
        ct state established,related counter accept
        ct state invalid counter drop
        iifname { lo, $LAN_INT } counter accept
        counter drop
    }
}

table ip NAT {
    chain POSTROUTING {
        type nat hook postrouting priority 0; policy accept;
        oif { $WAN_INT } masquerade
    }
}

В результате на bridge не проходит интернет. В чём может быть проблема?

dzhoser

# Измените FORWARD цепочку:
chain FORWARD {
    type filter hook forward priority 0; policy drop;
    ct state established,related accept
    iifname $LAN_INT oifname $WAN_INT accept
    iifname $WAN_INT oifname $LAN_INT ct state new accept
}

# Или упростите FROM_LAN:
chain FROM_LAN {
    accept
}
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

guliver

спасибо за ответ, но изменения не помогают

dzhoser

Не разрешены порты 80 и 443 для http. А интернет есть привет ping 8.8.8.8
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

ferum

Топикостартёр не рассказал о цели данного мероприятия.
Русские дебианщики против цифрового слабоумия !

guliver

Цитата: dzhoser от 18 апреля 2025, 03:38:55Не разрешены порты 80 и 443 для http. А интернет есть привет ping 8.8.8.8
добавил в правило tcp dport 80 и 443. без изменений

Цитата: ferum от 18 апреля 2025, 19:54:04Топикостартёр не рассказал о цели данного мероприятия.
пытаюсь научиться сделать роутер. чтобы порты были в bridge и имели выход в сеть

Лия

Цитата: guliver от 18 апреля 2025, 21:09:18пытаюсь научиться сделать роутер. чтобы порты были в bridge и имели выход в сеть
Я плохо разбираюсь в nftables, так что изучите ман или спросите тут (не реклама) :)

SerW

> изучите ман
Оолонг-рид!..
Сергей Швайко » DragonSerW

Лия

Цитата: SerW от 18 апреля 2025, 21:37:51Оолонг-рид!..
Как говорится, назвался груздем линуксоидом - полезай в кузов кури маны.
:)

dzhoser

Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

guliver

Цитата: dzhoser от 19 апреля 2025, 06:46:52Ping есть?
Нет. Полностью отсутствует доступ в интернет

dzhoser

Между localhost и 10.100.10.1/24 есть пинг?
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

guliver

#12
Да, есть
Может поможет понять ошибку
апр 19 15:08:52 router systemd[1]: Starting systemd-networkd.service - Network Configuration...
апр 19 15:08:52 router systemd-networkd[478]: br0: netdev ready
апр 19 15:08:52 router systemd-networkd[478]: lo: Link UP
апр 19 15:08:52 router systemd-networkd[478]: lo: Gained carrier
апр 19 15:08:52 router systemd-networkd[478]: Enumeration completed
апр 19 15:08:52 router systemd[1]: Started systemd-networkd.service - Network Configuration.
апр 19 15:08:52 router systemd-networkd[478]: br0: Configuring with /etc/systemd/network/20-bridge.network.
апр 19 15:08:52 router systemd-networkd[478]: enp3s0: Configuring with /etc/systemd/network/20-bind.network.
апр 19 15:08:52 router systemd-networkd[478]: enp2s0: Configuring with /etc/systemd/network/20-bind.network.
апр 19 15:08:52 router systemd-networkd[478]: enp1s0: Configuring with /etc/systemd/network/30-enp1s0.network.
апр 19 15:08:52 router systemd-networkd[478]: br0: Link UP
апр 19 15:08:52 router systemd-networkd[478]: enp1s0: Link UP
апр 19 15:08:52 router systemd-networkd[478]: enp3s0: Link UP
апр 19 15:08:52 router systemd-networkd[478]: enp2s0: Link UP
апр 19 15:08:55 router systemd-networkd[478]: enp1s0: Gained carrier
апр 19 15:08:56 router systemd-networkd[478]: enp1s0: Gained IPv6LL
апр 19 15:09:00 router systemd-networkd[478]: enp2s0: Gained carrier
апр 19 15:09:00 router systemd-networkd[478]: br0: Gained carrier
апр 19 15:09:00 router systemd-networkd[478]: enp1s0: DHCPv4 address 192.168.9.188/24, gateway 192.168.9.1 acquired from 192.168.9.1
апр 19 15:09:01 router systemd-networkd[478]: br0: Gained IPv6LL

dzhoser

#13
Добавьте явное разрешение FORWARD для трафика между интерфейсами:

nft
chain FORWARD {
    type filter hook forward priority 0; policy accept;
    ct state established,related counter accept
    ct state invalid counter drop
    iifname $LAN_INT oifname $WAN_INT counter accept
    iifname $WAN_INT oifname $LAN_INT ct state new counter drop
    counter drop
}
Убедитесь, что на клиентах прописан правильный шлюз (10.100.10.1) и DNS.

Если используете DHCP, настройте и запустите сервер (например, dnsmasq):

conf
interface=br0
dhcp-range=10.100.10.100,10.100.10.200,255.255.255.0
dhcp-option=option:router,10.100.10.1
Проверьте журналы:

bash
journalctl -u systemd-networkd -fПосле изменений перезагрузите сервисы:

bash
systemctl restart systemd-networkd nftables
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

guliver

Не выходит
root@router:~# journalctl -u systemd-networkd -f
апр 21 20:04:52 router systemd-networkd[4209]: br0: Gained IPv6LL
апр 21 20:04:52 router systemd-networkd[4209]: enp1s0: Gained IPv6LL
апр 21 20:04:52 router systemd-networkd[4209]: Enumeration completed
апр 21 20:04:52 router systemd-networkd[4209]: br0: netdev exists, using existing without changing its parameters
апр 21 20:04:52 router systemd-networkd[4209]: br0: Configuring with /etc/systemd/network/20-bridge.network.
апр 21 20:04:52 router systemd[1]: Started systemd-networkd.service - Network Configuration.
апр 21 20:04:52 router systemd-networkd[4209]: enp3s0: Configuring with /etc/systemd/network/20-bind.network.
апр 21 20:04:52 router systemd-networkd[4209]: enp2s0: Configuring with /etc/systemd/network/20-bind.network.
апр 21 20:04:52 router systemd-networkd[4209]: enp1s0: Configuring with /etc/systemd/network/30-enp1s0.network.
апр 21 20:04:52 router systemd-networkd[4209]: enp1s0: DHCPv4 address 192.168.9.188/24, gateway 192.168.9.1 acquired from 192.168.9.1