Подписка на блог

Customize in /user/extras/follow-sheet.tmpl.php.

Sample text.

Telegram, X or  Twitter, Facebook, VK, LinkedIn, Odnoklassniki, Pinterest, YouTube, TikTok, РСС JSON Feed

Sample text.

Самые разные заметки по ALT Linux

Избранное

Трюк 2-2. Как настроить статическую трансляцию портов на маршрутизаторах ALT Linux

Как настроить статическую трансляцию портов на самом главном маршрутизаторе:

nft add chain nat prerouting { type nat hook prerouting priority dstnat \; }
nft add rule nat prerouting iif "ens18" tcp dport 2026 dnat to 192.168.1.10
nft add rule nat prerouting iif "ens18" tcp dport 8080 dnat to 192.168.1.10:80


nft list ruleset
nft list ruleset > /etc/nftables/nftables.nft
systemctl restart nftables
nft list ruleset

sed -i 's/pool pool.ntp.org iburst/server 172.16.1.1 iburst/' /etc/chrony.conf && systemctl restart chronyd && chronyc sources

Как настроить статическую трансляцию портов на вторичном маршрутизаторе:

nft add chain nat prerouting { type nat hook prerouting priority dstnat \; }
nft add rule nat prerouting iif "ens18" tcp dport { 8080, 2026 } dnat to 192.168.3.10

nft list ruleset
nft list ruleset > /etc/nftables/nftables.nft
systemctl restart nftables
nft list ruleset

sed -i 's/pool pool.ntp.org iburst/server 172.16.1.1 iburst/' /etc/chrony.conf && systemctl restart chronyd && chronyc sources

Трюк 2-1. Как улучшить настройку сервера интернет-провайдера на ALT Linux

Всем привет. Сегодня будет про то, как на сервере интернет-провайдера на ALT Linux настроить:

  • службу сетевого времени на базе сервиса chrony
  • веб-сервер nginx как обратный прокси-сервер
  • web-based аутентификацию

1. Настраиваем Chrony — службу точного времени:

Делаем сервер сервером:

control chrony server

И затем настраиваем сервер:

sed -i 's/pool pool.ntp.org iburst/pool pool.ntp.org iburst prefer minstratum 4/' /etc/chrony.conf | grep pool /etc/chrony.conf
sed -i 's/\#local stratum 10/local stratum 5/' /etc/chrony.conf | grep "local stratum" /etc/chrony.conf
systemctl restart chronyd

2. Настраиваем NGINX — обратный прокси-сервер:

Ставим nginx:

apt-get install nginx -y

Пишем конфиг:

cat << "EOF" > /etc/nginx/sites-available.d/r-proxy.conf
server {
    listen 80;
    server_name web.au-team.irpo;

    location / {
        proxy_pass http://172.16.1.10:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

server {
    listen 80;
    server_name docker.au-team.irpo;

    location / {
        proxy_pass http://172.16.3.10:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
EOF

Затем включаем nginx:

ln -s /etc/nginx/sites-available.d/r-proxy.conf /etc/nginx/sites-enabled.d/

nginx -t
systemctl enable --now nginx
systemctl status nginx

3. Настраиваем базовую аутентификацию на прокси-сервере:

apt-get install apache2-htpasswd -y
htpasswd -c /etc/nginx/.htpasswd WEB
cat /etc/nginx/.htpasswd

Трюк 1-4. Как настроить самый главный сервер на ALT Linux

0. Поставить тег VLAN на интерфейс.

1. Настроить имя устройства:

hostnamectl hostname hq-srv.au-team.irpo
	exec bash
timedatectl set-timezone Asia/Novosibirsk

2. Настроить внутренние интерфейсы:

echo 'TYPE=eth' > /etc/net/ifaces/ens18/options
echo '192.168.100.2/27' > /etc/net/ifaces/ens18/ipv4address
echo 'default via 192.168.100.1' > /etc/net/ifaces/ens18/ipv4route
echo 'nameserver 8.8.8.8' > /etc/net/ifaces/ens18/resolv.conf
systemctl restart network
ping zz.ru -c3

3. Настроить пользователя SSH :

(sshuser)

useradd -u 2026 sshuser
echo "sshuser:P@ssw0rd" | chpasswd
usermod -aG wheel sshuser
echo "WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/sshuser
su -l sshuser
sudo id

4. Включить SSH

echo "Authorized access only" > /etc/openssh/banner
echo -e "Port 2026\nMaxAuthTries 2\nAllowUsers sshuser\nBanner /etc/openssh/banner\n" >> /etc/openssh/sshd_config
systemctl restart sshd
ss -ltnp | grep sshd 

ssh sshuser@127.0.0.1 -p 2026

5. Установить необходимое ПО

apt-get update && apt-get install bind bind-utils -y

6. Сменить DNS

echo $'search au-team.irpo\nnameserver 127.0.0.1' > /etc/net/ifaces/ens18/resolv.conf

7. Настроить DNS:

rndc-confgen -a -c /etc/bind/rndc.key
+++

cat <<'EOF' > /etc/bind/options.conf
logging { };
options {
 listen-on { localnets; 127.0.0.1; };
 forwarders { 77.88.8.7; 77.88.8.3; };
 recursion yes;
 allow-recursion { any; };
 allow-query { any; };
 dnssec-validation no;
 
 directory "/etc/bind/zone";
 dump-file "/var/run/named/named_dump.db";
 statistics-file "/var/run/named/named.stats";
 recursing-file "/var/run/named/named.recursing"; 
 secroots-file "/var/run/named/named.scroots";
 pid-file none;
};
zone "au-team.irpo" {
 type master;
 file "au-team.irpo";
};
zone "168.192.in-addr.arpa" {
 type master;
 file "168.192.in-addr.arpa";
};
EOF

Файлы зоны — обратной:

cat <<'EOF' > /etc/bind/zone/168.192.in-addr.arpa
$TTL  1D
@    IN   SOA   au-team.irpo. root.au-team.irpo. (
                2025020600 ; serial
                12H        ; refresh
                1H         ; retry
                1W         ; expire
                1H         ; ncache
            )
      IN   NS    au-team.irpo.
1.100 IN   PTR   hq-rtr.au-team.irpo.
2.100 IN   PTR   hq-srv.au-team.irpo.
2.200 IN   PTR   hq-cli.au-team.irpo.
EOF

Запустить DNS:

chown :named /etc/bind/zone/au-team.irpo /etc/bind/zone/168.192.in-addr.arpa
systemctl enable --now bind

service network restart
host br-rtr
host -t PTR 192.168.100.2

9. Настроить часовой пояс:

timedatectl set-timezone Azia/Novosibirsk

Трюк 1-3. Как настроить самый главный маршрутизатор на ALT Linux

1. Настроить имя устройства:

hostnamectl hostname hq-rtr.au-team.irpo
exec bash

2. Настроить внутренние интерфейсы:

mkdir -p /etc/net/ifaces/{ens19,vlan{100,200,999},gre1}
echo 'TYPE=eth' | tee /etc/net/ifaces/ens{18,19}/options


-------to ISP------
echo '172.16.1.2/28' > /etc/net/ifaces/ens18/ipv4address
echo 'default via 172.16.1.1' > /etc/net/ifaces/ens18/ipv4route
echo 'nameserver 8.8.8.8' > /etc/net/ifaces/ens18/resolv.conf

3. Настроить VLAN:

echo $'100\n200\n999' | xargs -i bash -c 'echo -e "TYPE=vlan\nHOST=ens19\nVID={}" > /etc/net/ifaces/vlan{}/options'

cat /etc/net/ifaces/vlan999/options 

echo '192.168.100.1/27' > /etc/net/ifaces/vlan100/ipv4address
echo '192.168.200.1/28' > /etc/net/ifaces/vlan200/ipv4address
echo '192.168.99.1/29' > /etc/net/ifaces/vlan999/ipv4address

4. Включить маршрутизацию

sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/net/sysctl.conf

5. Настроить GRE-туннель

cat << EOF > /etc/net/ifaces/gre1/options
TYPE=iptun
TUNTYPE=gre
TUNLOCAL=172.16.1.2
TUNREMOTE=172.16.2.2
TUNTTL=64
TUNOPTIONS='ttl 64'
EOF

+++
cat /etc/net/ifaces/gre1/options

echo "10.10.10.2/30" > /etc/net/ifaces/gre1/ipv4address

systemctl restart network
ip -br -c a

5. Установить необходимое ПО:

apt-get install frr nftables tzdata dnsmasq -y

7. Сменить DNS:

rm -f /etc/net/ifaces/ens18/resolv.conf
echo $'search au-team.irpo\nnameserver 192.168.100.2' > /etc/net/ifaces/vlan100/resolv.conf

8. Настроить NFTables:

cat << EOF > /etc/nftables/nftables.nft
#!/usr/sbin/nft -f
flush ruleset
table ip nat {
 chain postrouting {
 type nat hook postrouting priority srcnat;
 oifname "ens18"  masquerade
 }
}
EOF

и включить nftables

systemctl enable --now nftables

9. Настроить часовой пояс:

timedatectl set-timezone Azia/Novosibirsk

10. Создать сетевого пользователя NetAdmin:

(net_admin)

useradd net_admin
echo "net_admin:P@ssw0rd" | chpasswd
usermod -aG wheel net_admin
echo "WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/net_admin
su -l net_admin
sudo id

11. Настроить OSPF:

Сначала надо включить OSPF:

sed -i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons ; grep ospf /etc/frr/daemons

Затем надо настроить OSPF:

cat <<'EOF' > /etc/frr/frr.conf
interface gre
 no ip ospf passive
exit
!
interface gre1
 ip ospf area 0
 ip ospf authentication
 ip ospf authentication-key P@ssw0rd
 no ip ospf passive
exit
!
interface vlan100
 ip ospf area 0
exit
!
interface vlan200
 ip ospf area 0
exit
!
interface vlan999
 ip ospf area 0
exit
!
router ospf
 passive-interface default
exit

EOF

Потом надо запустить OSPF:

systemctl restart network
systemctl enable --now  nftables frr
cat /etc/resolv.conf

Проверять маршруты OSPF надо так:

ip r

12. Как правильно настроить DHCP:

Сначала надо отключить DNS-сервер, т. к. он будет в другом месте (об этом будет другой трюк:

sed -i 's/AUTO_LOCAL_RESOLVER=yes/AUTO_LOCAL_RESOLVER=no/' /etc/sysconfig/dnsmasq ; grep AUTO_LOCAL_RESOLVER /etc/sysconfig/dnsmasq

Потом настроить DHCP на один адрес:

cat <<'EOF' > /etc/dnsmasq.conf
port=0
interface=vlan200
listen-address=192.168.200.1
dhcp-authoritative
dhcp-range=interface:vlan200,192.168.200.2,192.168.200.2,255.255.255.240,6h
dhcp-option=3,192.168.200.1
dhcp-option=6,192.168.100.2
leasefile-ro
EOF

Потом стартуем DHCP:

systemctl enable --now frr dnsmasq ; ss -lun | grep 67

systemctl restart network
cat /etc/resolv.conf
ip r | grep ospf

Трюк 1-2. Как настроить второй маршрутизатор на ALT Linux

1. Настроить имя устройства:

hostnamectl hostname br-rtr.au-team.irpo
exec bash

2. Настроить внутренние интерфейсы:

mkdir -p /etc/net/ifaces/{ens19,gre1}
echo 'TYPE=eth' | tee /etc/net/ifaces/ens{18,19}/options


-------to ISP------
echo '172.16.2.2/28' > /etc/net/ifaces/ens18/ipv4address
echo 'default via 172.16.2.1' > /etc/net/ifaces/ens18/ipv4route
echo 'nameserver 8.8.8.8' > /etc/net/ifaces/ens18/resolv.conf

-------to BR-SRV---
echo '192.168.3.1/28' > /etc/net/ifaces/ens19/ipv4address

3. Включить маршрутизацию

sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/net/sysctl.conf

4. Настроить GRE-туннель

cat << EOF > /etc/net/ifaces/gre1/options
TYPE=iptun
TUNTYPE=gre
TUNLOCAL=172.16.2.2
TUNREMOTE=172.16.1.2
TUNTTL=64
TUNOPTIONS='ttl 64'
EOF

+++
cat /etc/net/ifaces/gre1/options

echo "10.10.10.2/30" > /etc/net/ifaces/gre1/ipv4address

systemctl restart network
ip -br -c a

5. Установить необходимое ПО:

apt-get install frr nftables tzdata -y

6. Сменить DNS:

rm -f /etc/net/ifaces/ens18/resolv.conf
echo $'search au-team.irpo\nnameserver 192.168.100.2' > /etc/net/ifaces/ens18/resolv.conf

7. Настроить NFTables:

cat << EOF > /etc/nftables/nftables.nft
#!/usr/sbin/nft -f
flush ruleset
table ip nat {
 chain postrouting {
 type nat hook postrouting priority srcnat;
 oifname "ens18"  masquerade
 }
}
EOF

и включить nftables

systemctl enable --now nftables

8. Настроить часовой пояс:

timedatectl set-timezone Azia/Novosibirsk

9. Создать сетевого пользователя NetAdmin:

(net_admin)

useradd net_admin
echo "net_admin:P@ssw0rd" | chpasswd
usermod -aG wheel net_admin
echo "WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/net_admin
su -l net_admin
sudo id

10. Настроить OSPF:

Сначала надо включить OSPF:

sed -i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons ; grep ospf /etc/frr/daemons

Затем надо настроить OSPF:

cat <<'EOF' > /etc/frr/frr.conf

interface gre1
 ip ospf area 0
 ip ospf authentication
 ip ospf authentication-key P@ssw0rd
 no ip ospf passive
exit
!
interface ens19
 ip ospf area 0
exit
!
router ospf
 passive-interface default
exit
EOF

Потом надо запустить OSPF:

systemctl restart network
systemctl enable --now  nftables frr
cat /etc/resolv.conf

Проверять маршруты OSPF надо так (но об этом будет следующий трюк):

ip r

Трюк 1-1. Как настроить ISP на ALT Linux

1. Настроить имя устройства:

hostnamectl hostname ISP
exec bash

2. Настроить внутренние интерфейсы:

mkdir -p /etc/net/ifaces/ens{19,20}

echo 'TYPE=eth' | tee /etc/net/ifaces/ens{19,20}/options

echo '172.16.1.1/28' > /etc/net/ifaces/ens19/ipv4address
echo '172.16.2.1/28' > /etc/net/ifaces/ens20/ipv4address

3. Настроить NAT:

Сначала следует установить NFTables:

apt-get update && apt-get install nftables -y

Затем следует включить маскарадинг:

cat << EOF > /etc/nftables/nftables.nft
#!/usr/sbin/nft -f
flush ruleset
table ip nat {
 chain postrouting {
 type nat hook postrouting priority srcnat;
 oifname "ens18"  masquerade
 }
}
EOF

и включить nftables

systemctl enable --now nftables

4. Включить маршрутизацию

sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/net/sysctl.conf
systemctl restart network
sysctl net.ipv4.ip_forward

Ссылки: