LINUX.ORG.RU

Сообщения Sorcus

 

Проблема с nftables на OpenWrt.

Форум — Admin

Суть такая, что правило

nft add rule ip filter forward oif wg0 tcp flags syn tcp option maxseg size set rt mtu
не хочет применятся.
Пишет
root@OpenWrt:~# nft -f /etc/nftables_0.conf 
/etc/nftables_0.conf:9:17-73: Error: Could not process rule: No such file or directory
                oif "wg0" tcp flags syn tcp option maxseg size set rt mtu;
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Содержимое файла /etc/nftables_0.conf
flush ruleset

table inet filter {
        chain input{
                type filter hook input priority 0; policy accept;
        }
        chain forward {
                type filter hook forward priority 0;
                oif "wg0" tcp flags syn tcp option maxseg size set rt mtu;
        }
        chain output {
                type filter hook output priority 0; policy accept;
        }
}
Но аналогичное правило на Archlinux срабатывает без ошибок.
root@OpenWrt:~# nft --version
nftables v0.9.0 (Fearless Fosdick)

root@OpenWrt:~# uname -a
Linux OpenWrt 4.14.63 #0 Wed Aug 15 20:42:39 2018 mips GNU/Linux

root@OpenWrt:~# cat /etc/openwrt_release 
DISTRIB_ID='OpenWrt'
DISTRIB_RELEASE='18.06.1'
DISTRIB_REVISION='r7258-5eb055306f'
DISTRIB_TARGET='ramips/rt3883'
DISTRIB_ARCH='mipsel_74kc'
DISTRIB_DESCRIPTION='OpenWrt 18.06.1 r7258-5eb055306f'
DISTRIB_TAINTS=''

root@OpenWrt:~# lsmod | grep ^nf
nf_conntrack           55488 40 nft_redir_ipv6,nft_redir_ipv4,nft_redir,nft_nat,nft_masq_ipv6,nft_masq_ipv4,nft_masq,nft_flow_offload,nft_ct,nf_nat_pptp,nf_conntrack_pptp,nf_conntrack_netlink,xt_state,xt_conntrack,xt_CT,nf_nat_tftp,nf_nat_snmp_basic,nf_nat_sip,nf_nat_masquerade_ipv6,nf_nat_masquerade_ipv4,nf_nat_irc,nf_conntrack_ipv6,nf_nat_ipv6,nf_conntrack_ipv4,nf_nat_ipv4,nf_nat_h323,nf_nat_ftp,nf_nat_amanda,nf_nat,nf_flow_table,nf_conntrack_tftp,nf_conntrack_snmp,nf_conntrack_sip,nf_conntrack_rtcache,nf_conntrack_proto_gre,nf_conntrack_irc,nf_conntrack_h323,nf_conntrack_ftp,nf_conntrack_broadcast,nf_conntrack_amanda
nf_conntrack_amanda     1696  1 nf_nat_amanda
nf_conntrack_broadcast     768  1 nf_conntrack_snmp
nf_conntrack_ftp        5152  1 nf_nat_ftp
nf_conntrack_h323      34368  1 nf_nat_h323
nf_conntrack_ipv4       4928  5 
nf_conntrack_ipv6       5040  5 
nf_conntrack_irc        2864  1 nf_nat_irc
nf_conntrack_netlink   20896  0 
nf_conntrack_pptp       3456  1 nf_nat_pptp
nf_conntrack_proto_gre    2464  1 nf_conntrack_pptp
nf_conntrack_rtcache    2432  0 
nf_conntrack_sip       17632  1 nf_nat_sip
nf_conntrack_snmp        720  1 nf_nat_snmp_basic
nf_conntrack_tftp       2752  1 nf_nat_tftp
nf_defrag_ipv4          1024  1 nf_conntrack_ipv4
nf_defrag_ipv6          8944  1 nf_conntrack_ipv6
nf_flow_table          12176  5 nf_flow_table_ipv6,nf_flow_table_ipv4,nf_flow_table_inet,nft_flow_offload,nf_flow_table_hw
nf_flow_table_hw        1984  0 
nf_flow_table_inet       416  0 
nf_flow_table_ipv4       384  0 
nf_flow_table_ipv6       384  0 
nf_log_common           2624  1 nf_log_ipv4
nf_log_ipv4             3232  0 
nf_nat                  9360 14 nft_nat,nf_nat_pptp,nf_nat_tftp,nf_nat_sip,nf_nat_redirect,nf_nat_proto_gre,nf_nat_masquerade_ipv6,nf_nat_masquerade_ipv4,nf_nat_irc,nf_nat_ipv6,nf_nat_ipv4,nf_nat_h323,nf_nat_ftp,nf_nat_amanda
nf_nat_amanda            736  0 
nf_nat_ftp              1184  0 
nf_nat_h323             5024  0 
nf_nat_ipv4             3760  1 nft_chain_nat_ipv4
nf_nat_ipv6             4432  1 nft_chain_nat_ipv6
nf_nat_irc               992  0 
nf_nat_masquerade_ipv4    1392  1 nft_masq_ipv4
nf_nat_masquerade_ipv6    1552  1 nft_masq_ipv6
nf_nat_pptp             1664  0 
nf_nat_proto_gre         816  1 nf_nat_pptp
nf_nat_redirect         1088  2 nft_redir_ipv6,nft_redir_ipv4
nf_nat_sip              7168  0 
nf_nat_snmp_basic       6320  0 
nf_nat_tftp              512  0 
nf_reject_ipv4          2048  4 nft_reject_ipv4,nft_reject_inet,nft_reject_bridge,ipt_REJECT
nf_reject_ipv6          2464  3 nft_reject_ipv6,nft_reject_inet,nft_reject_bridge
nf_tables              64912137 nf_flow_table_ipv6,nf_flow_table_ipv4,nf_flow_table_inet,nft_set_rbtree,nft_set_hash,nft_reject_ipv6,nft_reject_ipv4,nft_reject_inet,nft_reject_bridge,nft_reject,nft_redir_ipv6,nft_redir_ipv4,nft_redir,nft_quota,nft_numgen,nft_nat,nft_meta_bridge,nft_meta,nft_masq_ipv6,nft_masq_ipv4,nft_masq,nft_log,nft_limit,nft_flow_offload,nft_exthdr,nft_ct,nft_counter,nft_chain_route_ipv6,nft_chain_route_ipv4,nft_chain_nat_ipv6,nft_chain_nat_ipv4,nf_tables_ipv6,nf_tables_ipv4,nf_tables_inet,nf_tables_bridge,nf_tables_arp
nf_tables_arp            480  0 
nf_tables_bridge         992  0 
nf_tables_inet           640  0 
nf_tables_ipv4           544  3 
nf_tables_ipv6           576  3 
nfnetlink               3936  2 nf_tables,nf_conntrack_netlink
nft_chain_nat_ipv4       576  0 
nft_chain_nat_ipv6       608  0 
nft_chain_route_ipv4     736  0 
nft_chain_route_ipv6     864  0 
nft_counter             1696  1 
nft_ct                  5376  8 
nft_exthdr              3168  2 
nft_flow_offload        1440  0 
nft_limit               3392  0 
nft_log                 1504  0 
nft_masq                 928  2 nft_masq_ipv6,nft_masq_ipv4
nft_masq_ipv4            672  0 
nft_masq_ipv6            672  0 
nft_meta                3664 19 nft_meta_bridge
nft_meta_bridge          864  0 
nft_nat                 1824  0 
nft_numgen              1616  0 
nft_quota               1696  0 
nft_redir                928  2 nft_redir_ipv6,nft_redir_ipv4
nft_redir_ipv4           608  0 
nft_redir_ipv6           672  0 
nft_reject               864  4 nft_reject_ipv6,nft_reject_ipv4,nft_reject_inet,nft_reject_bridge
nft_reject_bridge       3872  0 
nft_reject_inet         1056  0 
nft_reject_ipv4          576  0 
nft_reject_ipv6          576  0 
nft_set_hash           13056 11 
nft_set_rbtree          2336  0 
Почему вылезает эта ошибка? Заранее спасибо.

 ,

Sorcus
()

Настройка MTU для Wireguard.

Форум — Admin

На клиенте и сервере установлен Wireguard.
И там и там был выставлен MTU в 1412, т.к. все значения выше не пропускают нормально трафик.
Выглядит это так, что сайты вообще не открываются. Никакие.
1. Почему работает только со значением 1412 (по дефолту WG ставит 1420, но оно не работает).
2. Если eth0 с MTU 1500, то wg0 должен быть со значением меньшим, чем eth0?
И на сколько меньшим? 1500 минус дополнительный размер заголовка от Wireguard?

[root@localhost ~]# ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1412 qdisc noqueue state UNKNOWN group default qlen 1000

3. В схеме ISP провайдер <-> Router with PPPoE <-> OpenWRT with Wireguard <-> Client почему-то некоторые сайты не открываются.
Трафик зависает на этапе инициализации TLS.
Вот пример трафика, пойманного TCPdump-ом в момент открытия сайта.
11:17:38.080131 IP (tos 0x0, ttl 64, id 43434, offset 0, flags [DF], proto TCP (6), length 60)
    10.0.1.177.40572 > 52.71.38.59.443: Flags [S], cksum 0x5899 (correct), seq 2150728512, win 64240, options [mss 1460,sackOK,TS val 999534342 ecr 0,nop,wscale 7], length 0
11:17:38.214844 IP (tos 0x0, ttl 238, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    52.71.38.59.443 > 10.0.1.177.40572: Flags [S.], cksum 0xb1a6 (correct), seq 2270306161, ack 2150728513, win 28960, options [mss 1460,sackOK,TS val 768039974 ecr 999534342,nop,wscale 8], length 0
11:17:38.214884 IP (tos 0x0, ttl 64, id 43435, offset 0, flags [DF], proto TCP (6), length 52)
    10.0.1.177.40572 > 52.71.38.59.443: Flags [.], cksum 0x4f17 (correct), seq 1, ack 1, win 502, options [nop,nop,TS val 999534477 ecr 768039974], length 0
11:17:38.224076 IP (tos 0x0, ttl 64, id 43436, offset 0, flags [DF], proto TCP (6), length 569)
    10.0.1.177.40572 > 52.71.38.59.443: Flags [P.], cksum 0xed75 (correct), seq 1:518, ack 1, win 502, options [nop,nop,TS val 999534486 ecr 768039974], length 517
11:17:38.358734 IP (tos 0x0, ttl 238, id 17205, offset 0, flags [DF], proto TCP (6), length 52)
    52.71.38.59.443 > 10.0.1.177.40572: Flags [.], cksum 0x4e65 (correct), seq 1, ack 518, win 118, options [nop,nop,TS val 768040010 ecr 999534486], length 0
11:17:38.638119 IP (tos 0x0, ttl 238, id 17210, offset 0, flags [DF], proto TCP (6), length 1310)
    52.71.38.59.443 > 10.0.1.177.40572: Flags [P.], cksum 0x5b4a (correct), seq 4345:5603, ack 518, win 118, options [nop,nop,TS val 768040080 ecr 999534486], length 1258
11:17:38.638189 IP (tos 0x0, ttl 64, id 43437, offset 0, flags [DF], proto TCP (6), length 64)
    10.0.1.177.40572 > 52.71.38.59.443: Flags [.], cksum 0xa0cc (correct), seq 518, ack 1, win 502, options [nop,nop,TS val 999534900 ecr 768040010,nop,nop,sack 1 {4345:5603}], length 0
А вот пример того, как это выглядит в Curl
archlinux% curl --verbose --head https://appcrawler.com --raw
*   Trying 2606:4700:30::6812:3e42...
* TCP_NODELAY set
* Connected to appcrawler.com (2606:4700:30::6812:3e42) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to appcrawler.com:443 
* Closing connection 0
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to appcrawler.com:443 
Доступ к некоторым сайтам удаётся «пофиксить» правкой MTU, но некоторые не открываются даже после правки MTU.
Может кто-нибудь сталкивался с подобным? И как это починить?
Если это MTU, то каким должно быть значение на каждом узле? Спасибо.

 , ,

Sorcus
()

Настройка Wireguard + OpenWRT с IPv6 из /56 префикса с VPS.

Форум — Admin

Есть VPS с префиксом /56 (Linode). Есть роутер с OpenWRT.
На сервере установлен Wireguard.
Так же есть провайдер дом.ру, предоставляющий IPv6 через DHCPv6-PD (если не ошибаюсь).
Сделать хочется следующее:
1. Роутер должен получать IPv6 от провайдера (но не должен раздавать его клиентам).
Т.е. на интерфейсе br-lan должен быть один адрес, через который можно будет выходить в сеть по IPv6. Например

25: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 12:c3:7b:43:4d:05 brd ff:ff:ff:ff:ff:ff
    inet6 2a02:2698:1234:abcd::1/64 scope global dynamic noprefixroute 
       valid_lft 86342sec preferred_lft 3542sec
2.Клиентам роутер должен раздавать IPv4 и IPv6 адреса из пулов, прописанных вручную (для IPv6 это /64 префикс из /56 префикса с сервера).
3.Весь исходящий трафик должен заворачиваться в wg0 интерфейс.
А IPv6 адреса клиентов из /64 префикса с сервера должны быть доступны извне (сейчас такое сделано только в штучных экземплярах на каждом клиенте).
Вопрос пока что такой. Как запретить выдачу IPv6 адресов из /64 префикса провайдера, но чтобы IPv6 доступ был (см. п. 1).
Из предыдущего вопроса вытекает следующий. Как выдавать IPv6 адреса из /64 префикса с сервера, если запретить выдавать адреса из /64 префикса провайдера?
Выхлоп ip a
root@OpenWrt:~# ip a
8: pppoe-wan: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc fq_codel state UNKNOWN group default qlen 3
    link/ppp 
    inet 176.213.xx.xx peer 10.77.xx.xx/32 scope global pppoe-wan
       valid_lft forever preferred_lft forever
    inet6 fe80::4013:111f:9xxx:xxxc/10 scope link 
       valid_lft forever preferred_lft forever
12: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 12:c3:7b:xx:xx:x5 brd ff:ff:ff:ff:ff:ff
    inet6 2a02:2698:xxxx:xxx9:10c3:7bff:fexx:xxx5/64 scope global deprecated dynamic noprefixroute 
       valid_lft 76050sec preferred_lft 0sec
    inet6 2a01:7e01:xxxx:xxxd:10c3:7bff:fexx:xxx5/64 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::10c3:7bff:fe43:4d05/64 scope link 
       valid_lft forever preferred_lft forever
13: eth0.1@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP group default qlen 1000
    link/ether 12:c3:7b:43:4d:05 brd ff:ff:ff:ff:ff:ff
Здесь 2a02:2698:xxxx:xxx9 префикс, выданный провайдером.
А 2a01:7e01:xxxx:xxxd /64 префикс из /56 префикса с сервера.
Конфиг /etc/config/network
config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fdba:6666:f1d9::/48'

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0.1'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option ip6prefix '2a01:7e01:xxxx:xxxd::/64'
        option ip6ifaceid 'eui64'

config device 'lan_dev'
        option name 'eth0.1'
        option macaddr '12:c3:7b:xx:xx:x5'

config interface 'wan'
        option ifname 'eth0.2'
        option proto 'pppoe'
        option username 'SECURE'
        option password 'SECURE'
        option ipv6 'auto'
        option keepalive '0'

config device 'wan_dev'
        option name 'eth0.2'
        option macaddr '10:c3:7b:xx:xx:x4'

config interface 'wan6'
        option proto 'dhcpv6'
        option reqaddress 'try'
        option reqprefix 'auto'
        option ifname 'eth0.2'

config switch
        option name 'switch0'
        option reset '1'
        option enable_vlan '1'

config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '0 1 2 3 8t'

config switch_vlan
        option device 'switch0'
        option vlan '2'
        option ports '4 8t'

 , ,

Sorcus
()

Systemd с condition failed.

Форум — Admin

Проблема с тем, что у многих сервисов есть condition failed.
Например

● systemd-sysusers.service - Create System Users
   Loaded: loaded (/usr/lib/systemd/system/systemd-sysusers.service; static; vendor preset: disabled)
   Active: inactive (dead)
Condition: start condition failed at Mon 2018-11-26 07:55:08 UTC; 1min 28s ago
           └─ ConditionNeedsUpdate=/etc was not met
     Docs: man:sysusers.d(5)
           man:systemd-sysusers.service(8)

У одних /etc требует обновления.
У другого /var/lib/machines.raw.
Вот еще например.
● systemd-binfmt.service - Set Up Additional Binary Formats
   Loaded: loaded (/usr/lib/systemd/system/systemd-binfmt.service; static; vendor preset: disabled)
   Active: inactive (dead)
Condition: start condition failed at Mon 2018-11-26 07:55:08 UTC; 6min ago
           ├─ ConditionDirectoryNotEmpty=|/lib/binfmt.d was not met
           ├─ ConditionDirectoryNotEmpty=|/usr/lib/binfmt.d was not met
           ├─ ConditionDirectoryNotEmpty=|/usr/local/lib/binfmt.d was not met
           ├─ ConditionDirectoryNotEmpty=|/etc/binfmt.d was not met
           └─ ConditionDirectoryNotEmpty=|/run/binfmt.d was not met
     Docs: man:systemd-binfmt.service(8)
           man:binfmt.d(5)
           https://www.kernel.org/doc/html/latest/admin-guide/binfmt-misc.html
           https://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
Как эти ошибки исправить? Поиск не помогает. Даже чтение man не помогло.
И почему это вообще вылезает?

 

Sorcus
()

Rspamd. Настроить обучение при перемещении писем.

Форум — Admin

Установлена связка Postfix + Dovecot + Rspamd.
Тестовое письмо со спамом сразу отклоняет.
Остальные письма сканирует и одобряет.
Но при перемещении писем в/из Junk/Spam, Rspamd не хочет их сканировать.
Т.е. если письмо для меня является спамом и я отправляю его в спам, то по-идее Rspamd должен его просканировать и последующие отправлять в спам.
Но этого не происходит. Это так задумано или я что-то не так настроил?
Ведь без обучения смысла от Rspamd не очень много.
В логах dovecot виден вызов rspamc, но в /var/log/rspamd/rspamd.log пусто.

# main.cf
smtpd_milters = inet:localhost:11332
milter_default_action = accept
milter_protocol = 6
# dovecot.conf
protocols = imap lmtp
mail_location = mdbox:/home/vmail/mailboxes/%d/%n

namespace inbox {
	type = private
	inbox = yes
	first_valid_uid = 76
	mail_attachment_dir = /home/vmail/mailboxes/%d/%n/attachments
	mail_attachment_hash = %{sha256}
}

namespace inbox {
	mailbox Drafts {
		auto = subscribe
		special_use = \Drafts
	}
	mailbox Spam {
		auto = subscribe
		special_use = \Junk
	}
	mailbox Trash {
		auto = subscribe
		special_use = \Trash
	}
	mailbox Sent {
		auto = subscribe
		special_use = \Sent
	}
	mailbox Archive {
		auto = subscribe
		special_use = \Archive
	}
}

protocols = $protocols sieve

protocol lmtp {
	mail_plugins = $mail_plugins sieve
}

protocol imap {
	mail_plugins = $mail_plugins imap_sieve
}

plugin {
	sieve = file:/home/vmail/sieve/%d/%n/scripts;active=/home/vmail/sieve/%d/%n/active.sieve
	sieve_before = /home/vmail/sieve/global/spam.sieve
	sieve_trace_debug = yes
	sieve_plugins = sieve_imapsieve sieve_extprograms

	# From elsewhere to Spam folder
	imapsieve_mailbox1_name = Junk
	imapsieve_mailbox1_causes = COPY
	imapsieve_mailbox1_before = file:/home/vmail/sieve/global/learn-spam.sieve

	# From Spam folder to elsewhere
	imapsieve_mailbox2_name = *
	imapsieve_mailbox2_from = Junk
	imapsieve_mailbox2_causes = COPY
	imapsieve_mailbox2_before = file:/home/vmail/sieve/global/learn-ham.sieve

	sieve_pipe_bin_dir = /usr/bin
	sieve_global_extensions = +vnd.dovecot.pipe imapsieve
}
# learn-spam.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe :copy "rspamc" ["learn_spam"];
# learn-ham.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe :copy "rspamc" ["learn_ham"];
Debug: Loading modules from directory: /usr/lib/dovecot/modules
Debug: Module loaded: /usr/lib/dovecot/modules/lib95_imap_sieve_plugin.so
Debug: Effective uid=76, gid=76, home=/home/vmail/mailboxes/example.com/mail
Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=mdbox:/home/vmail/mailboxes/example.com/mail
Debug: fs: root=/home/vmail/mailboxes/example.com/mail, index=, indexpvt=, control=, inbox=, alt=
Debug: Mailbox INBOX: Mailbox opened because: SELECT
Debug: Mailbox Junk: Mailbox opened because: UID COPY
Debug: Namespace : Using permissions from /home/vmail/mailboxes/example.com/mail: mode=0700 gid=default
Debug: imapsieve: mailbox Junk: COPY event
Debug: sieve: Pigeonhole version 0.5.3 (f018bbab) initializing
Debug: sieve: include: sieve_global is not set; it is currently not possible to include `:global' scripts.
Debug: sieve: Sieve imapsieve plugin for Pigeonhole version 0.5.3 (f018bbab) loaded
Debug: sieve: Sieve Extprograms plugin for Pigeonhole version 0.5.3 (f018bbab) loaded
Debug: imapsieve: Static mailbox rule [1]: mailbox=`Junk' from=`*' causes=(COPY) => before=`file:/home/vmail/sieve/global/learn-spam.sieve' after=(none)
Debug: imapsieve: Static mailbox rule [2]: mailbox=`*' from=`Junk' causes=(COPY) => before=`file:/home/vmail/sieve/global/learn-ham.sieve' after=(none)
Debug: imapsieve: Matched static mailbox rule [1]
Debug: sieve: file storage: Using Sieve script path: /home/vmail/sieve/global/learn-spam.sieve
Debug: sieve: file script: Opened script `learn-spam' from `/home/vmail/sieve/global/learn-spam.sieve'
Debug: sieve: Opening script 1 of 1 from `/home/vmail/sieve/global/learn-spam.sieve'
Debug: sieve: Loading script /home/vmail/sieve/global/learn-spam.sieve
Debug: sieve: Script binary /home/vmail/sieve/global/learn-spam.svbin successfully loaded
Debug: sieve: binary save: not saving binary /home/vmail/sieve/global/learn-spam.svbin, because it is already stored
Debug: sieve: Executing script from `/home/vmail/sieve/global/learn-spam.svbin'
Debug: sieve: action pipe: running program: rspamc
Debug: Mailbox Junk: UID 4: Opened mail because: mail stream
Debug: waiting for program `/usr/bin/rspamc' to finish after 0 msecs
sieve: pipe action: piped message to program `rspamc'
sieve: left message in mailbox 'Junk'
Debug: imapsieve: mailbox INBOX: FLAG event (changed flags: \Deleted)
Debug: Mailbox INBOX: Mailbox opened because: STATUS

 ,

Sorcus
()

Сохранять в кеш сжатую статику.

Форум — Admin

Есть ли такая возможность в nginx-е (я не нашёл) или только вариант с двумя nginx-ами, когда один проксирует запросы к другому и получает в ответ уже сжатую статику, которую и сохраняет в кеш?
P.S. Оставил как есть.

 

Sorcus
()

Создание bridge через systemd-networkd.

Форум — Admin

Как преобразовать это

ip link add dev br0 type bridge
ip link set br0 up
ip -6 route add 2a01:7e01:e001:a3::/64 dev br0

В systemd.networkd сервис?

С созданием netdev если еще понятно,

# cat /etc/systemd/network/10-br0.netdev 
[NetDev]
Name=br0
Kind=bridge
то дальше не совсем понятно.

Т.к. создание 20-br0.network с таким содержимым

# cat /etc/systemd/network/20-br0.network 
[Match]
Name=br0

[Route]
Destination = 2a01:7e01:e001:a3:a4::/112
результата не даёт.

networkctl и ip a выдают следующее

# networkctl
IDX LINK             TYPE               OPERATIONAL SETUP     
  1 lo               loopback           carrier     unmanaged 
  2 eth0             ether              routable    configured
  3 br0              bridge             no-carrier  configuring

3 links listed.

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether f2:3c:91:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet6 2a01:7e01::f03c:xx:xx:xx/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 2591993sec preferred_lft 604793sec
    inet6 fe80::f03c:xx:xx:xx/64 scope link 
       valid_lft forever preferred_lft forever

3: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 36:28:25:xx:xx:xx brd ff:ff:ff:ff:ff:ff

 , ,

Sorcus
()

Восстановление раздела XFS.

Форум — General

Собственно в ДЦ отключилось электричество, резервное питание не завелось и VPS-ка благополучно скончалась.
На разделе /dev/vda2 была файловая система XFS.
При попытке сделать xfs_repair пишет:

Sorry, could not find valid secondary superblock
Exiting now.
xfs_repair /dev/vda2 205.61s user 40.81s system 22% cpu 17:52.18 total

Вопрос, можно ли как-то восстановить раздел? В какую сторону копать?

 

Sorcus
()

VPS с KVM в пределах 5-10$ со след. требованиями.

Форум — General
  • Не требуют номер телефона
  • Не требуют подтверждения адреса
  • Наличие IPv6 (/64 префикс (опционально можно /56 или /48)).
  • Возможность загрузить / установить свой образ
  • Возможность создать виртуалку без IPv4 (виртуалка только с IPv6)
  • Добавление IPv4 адресов
  • Оперативы от 1GB
  • Диск SSD от 10GB
  • Объём трафика от 1TB

Никакой рассылки спама / ботнета / и т.д.
Чисто под VPN (не публичный, чисто для себя), почту, несколько белых сайтов, DNS, пара-тройка мессенджеров и LXC контейнеры.
В общем мелочь всякая.

Заранее спасибо за советы.

 , ,

Sorcus
()

Хостеры предоставляющие /56 префикс IPv6.

Форум — General

Собственно кто-нибудь знает (использует) хостеров, у которых выдается /56 префикс IPv6 для сервера?
P.S. у Linode можно получить /56 префикс.

 ,

Sorcus
()

Настроить Wireguard на OpenWRT с IPv6.

Форум — Admin

Не могу понять, как правильно организовать сеть на OpenWRT, чтобы клиенты получали адреса из подсети сервера (если я правильно выразился).
Сейчас сеть сделана следующим образом - на сервере есть подсеть /64 IPv6, из которой клиенту выделена подсеть /112.
А так же 10.4.0.0/24, которая используется внутри туннеля Wireguard для IPv4, который потом SNAT-ится в белый IPv4.
Туннель между клиентом и сервером работает только по IPv6. Т.е. IPv4 организован только внутри туннеля.

А вот как настроить сеть на OpenWRT, чтобы клиент получал эту же IPv4/IPv6 подсеть и трафик заворачивался в интерфейс Wireguard на OpenWRT, я понять не могу пока что.
Схема по-идее должна выглядеть примерно так:
Server eno1 < Encrypted IPv6 > OpenWRT wan < Encrypted IPv6 > OpenWRT wg0 < Plain IPv4 / IPv6 > OpenWRT lan < Plain IPv4 / IPv6 > Client enp60s0
Верна ли такая схема организации сети?
И нужно ли настраивать на роутере VLAN-ы, если не планируется никакого разграничения сети?
Ведь если я правильно понял, то VLAN-ы нужны только для отделения каких-то частей сети друг от друга.
А у меня к роутеру подключены по LAN-у только 2 ноутбука и еще 2-3 девайса по Wi-Fi.
В целом может понимание и пришло бы, но не понятно, нужны ли VLAN-ы и если нужны, то как их правильно настроить.
Роутер Asus RT-N56U если нужно.

 , , , ,

Sorcus
()

Как и для чего использовать mail модуль в Nginx.

Форум — Admin

В Nginx-е есть директивы ngx_mail_* (https://nginx.org/en/docs/).
Не могу понять, в чем их предназначение.
Это вроде как модуль проксирования IMAP/SMTP запросов, но нигде не описано (плохо искал скорее всего), как это работает.
Например кусок конфига ниже:

mail {
    server_name       mail.example.com;
    auth_http         localhost:9000/cgi-bin/nginxauth.cgi;

    server {
        listen   25;
        protocol smtp;
    }
    server {
        listen   143;
        protocol imap;
    }
    server {
        listen   587;
        protocol smtp;
    }
}

Если server_name, listen и protocol здесь указаны для того, чтобы Nginx обрабатывал входящий SMTP и IMAP трафик, то куда эти запросы проксируются?
Т.е. я не вижу здесь к примеру директиву proxy_pass (ведь сам Nginx не работает как SMTP/IMAP сервер).
Вписать не сложно, но почему об этом нигде не сказано?
И зачем нужна здесь директива auth_http (без неё не запускается nginx)?
Ведь авторизация должна выполняться SMTP/IMAP сервером.
Вообще я думал использовать Nginx как прокси для SMTP/IMAP, чтобы создавать TLS подключение с помощью Nginx-а, а не средствами MTA/MDA/etc.
А всё остальное уже просто проксировать, но походу модуль mail в Nginx-е не для этого предназначен...
Либо я что-то не так понимаю.

 , , ,

Sorcus
()

Operation not permitted в git hooks.

Форум — Admin

Не получается корректно настроить работу post-receive.

После выполнения push, не удается выполнить chmod / chown.

remote: chown: changing ownership of '/home/site/test': Operation not permitted

Команда в hooks/post-receive:

chown -R username:nginx /home/site/test

На файл пытался выставить права root:root с suid флагом, но все-равно пишет Operation not permitted

И еще не совсем понятно, на какие каталоги какие права должны быть выставлены.

Т.е. сейчас на директорию test и её содержимое выставляются следующие права:

chown -R username:nginx /home/site/test

find /home/site/test -type f -exec chmod 644 {} \;

find /home/site/test -type d -exec chmod 755 {} \;

Но я не совсем уверен, что это корректно.

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

Но я могу и ошибаться.

Работа с git-репозиторием осуществляется с помощью SSH.

GIT_SSH_COMMAND=«ssh -i ~/ssh_keys/private» git clone «username@[2a01:4f8:xx:xx::xx]»:/~/test.git

Репозиторий находится в директории /home/repository/test.git

Домашний каталог пользователя /home/repository

Итого:

1. Почему не работает post-receive и как сделать правильно.

2. После команды git --work-tree права на файлы в директории /home/site/test будут принадлежать тому пользователю, из под которого происходит push на сервер?

А группа? Если пользователь состоит только в группе nginx, значит и группа будет nginx?

3. Если в предыдущем вопросе пользователь/группа в /home/site/test равны username:nginx, то смысла в chown в post-receive нет? Но тогда как быть с chmod? Ведь он тоже не выполняется.

4. Ни chmod, ни chown нет при выставлении пользователю username shell-а git-shell. Как в таком случае выполнять команды в post-receive, если данных команд нет при использовании git-shell.

5. Корректно ли сейчас выставляются права на каталоги/файлы.

6. Может где можно почитать обо всем этом более развернуто?

От ссылки не отказался бы (не на поисковик).

На git-scm.com уже был, но на тему прав там инфы не нашел.

 

Sorcus
()

Cannot assign requested address.

Форум — Admin

После ребута openvpn юнит не стартует.
Не может прицепиться к ipv6 адресу, хотя вручную после загрузки системы запускается без проблем.
Я так понимаю, юнит ovpn-а запускается до того, как на интерфейсе появятся ipv6 адреса.
Можно ли как-то это исправить? Всякие After, Before, Requires, с привязкой к network.target, network-online.target, network.service не помогли.

root@nixos_root_server> systemctl status openvpn.service                                                                                                                                                                                                                       ~
● openvpn.service - OpenVPN tunnel
   Loaded: loaded (/nix/store/prpmdsyics288fbmhh6l616dgm485953-unit-openvpn.service/openvpn.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sat 2017-12-30 17:07:07 UTC; 1min 36s ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
  Process: 702 ExecStart=/nix/store/zyp85cz95k93zr27sw463qav6spmls6i-openvpn-2.4.4/bin/openvpn --config /nix/store/cs43jgww8lrzn74465ddkxznjc23qxqv-openvpn_server.conf (code=exited, status=1/FAILURE)
 Main PID: 702 (code=exited, status=1/FAILURE)
   Status: "Pre-connection initialization successful"

Dec 30 17:07:07 nixos_root_server systemd[1]: Starting OpenVPN tunnel...
Dec 30 17:07:07 nixos_root_server openvpn[702]: Sat Dec 30 17:07:07 2017 do_ifconfig, tt->did_ifconfig_ipv6_setup=1
Dec 30 17:07:07 nixos_root_server openvpn[702]: Sat Dec 30 17:07:07 2017 TCP/UDP: Socket bind failed on local address [AF_INET6]2a01:4f8:xx:xx::xx:1194: Cannot assign requested address (errno=99)
Dec 30 17:07:07 nixos_root_server systemd[1]: Started OpenVPN tunnel.
Dec 30 17:07:07 nixos_root_server systemd[1]: openvpn.service: Main process exited, code=exited, status=1/FAILURE
Dec 30 17:07:07 nixos_root_server systemd[1]: openvpn.service: Unit entered failed state.
Dec 30 17:07:07 nixos_root_server systemd[1]: openvpn.service: Failed with result 'exit-code'.

Часть выхлопа journalctl --system

Dec 30 17:20:12 nixos_root_server systemd[1]: Starting Network...
Dec 30 17:20:12 nixos_root_server systemd[1]: Reached target Network is Online.
Dec 30 17:20:12 nixos_root_server systemd[1]: Started Permit User Sessions.
Dec 30 17:20:12 nixos_root_server systemd[1]: Started Getty on tty1.
Dec 30 17:20:12 nixos_root_server systemd[1]: Reached target Login Prompts.
Dec 30 17:20:12 nixos_root_server systemd[1]: Started Name Service Cache Daemon.
Dec 30 17:20:13 nixos_root_server kernel: IPv6: ADDRCONF(NETDEV_UP): eno1: link is not ready
Dec 30 17:20:13 nixos_root_server systemd[1]: Started Network.
Dec 30 17:20:13 nixos_root_server systemd[1]: Starting WireGuard Server...
Dec 30 17:20:13 nixos_root_server systemd[1]: Starting OpenVPN tunnel...
Dec 30 17:20:13 nixos_root_server kernel: wireguard: loading out-of-tree module taints kernel.
Dec 30 17:20:13 nixos_root_server kernel: wireguard: WireGuard 0.0.20171101 loaded. See www.wireguard.com for information.
Dec 30 17:20:13 nixos_root_server kernel: wireguard: Copyright (C) 2015-2017 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
Dec 30 17:20:13 nixos_root_server systemd[1]: Started OpenVPN tunnel.
Dec 30 17:20:13 nixos_root_server openvpn[839]: Sat Dec 30 17:20:13 2017 do_ifconfig, tt->did_ifconfig_ipv6_setup=1
Dec 30 17:20:13 nixos_root_server openvpn[839]: Sat Dec 30 17:20:13 2017 TCP/UDP: Socket bind failed on local address [AF_INET6]2a01:4f8:xx:xx::xx:1194: Cannot assign requested address (errno=99)
Dec 30 17:20:13 nixos_root_server systemd[1]: Started WireGuard Server.
Dec 30 17:20:13 nixos_root_server systemd[1]: Reached target Multi-User System.
Dec 30 17:20:13 nixos_root_server systemd[1]: Startup finished in 1.529s (kernel) + 1.557s (userspace) = 19.659s.
Dec 30 17:20:13 nixos_root_server systemd[1]: openvpn.service: Main process exited, code=exited, status=1/FAILURE
Dec 30 17:20:13 nixos_root_server systemd[1]: openvpn.service: Unit entered failed state.
Dec 30 17:20:13 nixos_root_server systemd[1]: openvpn.service: Failed with result 'exit-code'.
Dec 30 17:20:18 nixos_root_server kernel: e1000e: eno1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
Dec 30 17:20:18 nixos_root_server kernel: IPv6: ADDRCONF(NETDEV_CHANGE): eno1: link becomes ready
Dec 30 17:20:35 nixos_root_server sshd[872]: Accepted publickey for root from 2a01:4f8:xx:xx::10 port 57148 ssh2: XXXXXXX
Dec 30 17:20:35 nixos_root_server sshd[872]: pam_unix(sshd:session): session opened for user root by (uid=0)
Dec 30 17:20:35 nixos_root_server systemd[1]: Created slice User Slice of root.
Dec 30 17:20:35 nixos_root_server systemd[1]: Starting User Manager for UID 0...
Dec 30 17:20:35 nixos_root_server systemd-logind[731]: New session 1 of user root.
Dec 30 17:20:35 nixos_root_server systemd[874]: pam_unix(systemd-user:session): session opened for user root by (uid=0)
Dec 30 17:20:35 nixos_root_server systemd[1]: Started Session 1 of user root.
Dec 30 17:20:35 nixos_root_server systemd[874]: Reached target Sockets.
Dec 30 17:20:35 nixos_root_server systemd[874]: Reached target Timers.
Dec 30 17:20:35 nixos_root_server systemd[874]: Reached target Paths.
Dec 30 17:20:35 nixos_root_server systemd[874]: Reached target Basic System.
Dec 30 17:20:35 nixos_root_server systemd[874]: Reached target Default.
Dec 30 17:20:35 nixos_root_server systemd[874]: Startup finished in 11ms.
Dec 30 17:20:35 nixos_root_server systemd[1]: Started User Manager for UID 0.
Dec 30 17:20:42 nixos_root_server systemd[1]: Started dnscrypt-proxy daemon.

OpenVPN Unit

root@nixos_root_server> systemctl cat openvpn.service                                                                                                                                                                                                                          ~
# /nix/store/gln77p06ww8brsl3rap9j14q8w83bd0w-unit-openvpn.service/openvpn.service
[Unit]
After=network.service
Description=OpenVPN tunnel
Documentation=man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO

[Service]
Environment="LOCALE_ARCHIVE=/nix/store/xhmzzbq06fbzhvjamnb1192iwqb4wl0i-glibc-locales-2.25-49/lib/locale/locale-archive"
Environment="PATH=/nix/store/r90xqqmd36fv3s53bf92s3vxhdnbwfn7-coreutils-8.28/bin:/nix/store/02xjvflg03d9wlzdw1ig54rgwa32jwxq-findutils-4.6.0/bin:/nix/store/wia9b594w2ghzhpcjdi9mnlf8j24nm3i-gnugrep-3.1/bin:/nix/store/j4rqdjgf0im2dv7gycg80hplnjrnawxx-gnused-4.4/bin:/nix/stor
Environment="TZDIR=/nix/store/1sa5cpnrbdab2463bzbi3xfl3hck3aqk-tzdata-2017c/share/zoneinfo"

DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw
ExecStart=/nix/store/zyp85cz95k93zr27sw463qav6spmls6i-openvpn-2.4.4/bin/openvpn --config /nix/store/cs43jgww8lrzn74465ddkxznjc23qxqv-openvpn_server.conf
Type=notify

Network.service

root@nixos_root_server> systemctl cat network.service                                                                                                                                                                                                                          ~
# /nix/store/7rvawbh376csb39fd3mzjmx5dppriif5-unit-network.service/network.service
[Unit]
After=network.target
Description=Network

[Service]
Environment="LOCALE_ARCHIVE=/nix/store/xhmzzbq06fbzhvjamnb1192iwqb4wl0i-glibc-locales-2.25-49/lib/locale/locale-archive"
Environment="PATH=/nix/store/r90xqqmd36fv3s53bf92s3vxhdnbwfn7-coreutils-8.28/bin:/nix/store/02xjvflg03d9wlzdw1ig54rgwa32jwxq-findutils-4.6.0/bin:/nix/store/wia9b594w2ghzhpcjdi9mnlf8j24nm3i-gnugrep-3.1/bin:/nix/store/j4rqdjgf0im2dv7gycg80hplnjrnawxx-gnused-4.4/bin:/nix/stor
Environment="TZDIR=/nix/store/1sa5cpnrbdab2463bzbi3xfl3hck3aqk-tzdata-2017c/share/zoneinfo"



ExecStart=/nix/store/0yw15iqi9gbay355fswn4nsdkaxg56v8-iproute2-4.13.0/bin/ip link set eno1 down
ExecStart=/nix/store/0yw15iqi9gbay355fswn4nsdkaxg56v8-iproute2-4.13.0/bin/ip -4 address add 85.xx.xx.2/27 broadcast 85.xx.xx.31 dev eno1
ExecStart=/nix/store/0yw15iqi9gbay355fswn4nsdkaxg56v8-iproute2-4.13.0/bin/ip -6 address add 2a01:4f8:xx:xx::2/64 dev eno1
ExecStart=/nix/store/0yw15iqi9gbay355fswn4nsdkaxg56v8-iproute2-4.13.0/bin/ip -6 address add 2a01:4f8:xx:xx::50/128 dev eno1
ExecStart=/nix/store/0yw15iqi9gbay355fswn4nsdkaxg56v8-iproute2-4.13.0/bin/ip link set eno1 up
ExecStart=/nix/store/0yw15iqi9gbay355fswn4nsdkaxg56v8-iproute2-4.13.0/bin/ip -4 route add default via 85.xx.xx.1 dev eno1
ExecStart=/nix/store/0yw15iqi9gbay355fswn4nsdkaxg56v8-iproute2-4.13.0/bin/ip -6 route add default via fe80::1 dev eno1
ExecStop=/nix/store/0yw15iqi9gbay355fswn4nsdkaxg56v8-iproute2-4.13.0/bin/ip link set eno1 down
RemainAfterExit=true
Type=oneshot

 , ,

Sorcus
()

Установка NixOS на выделенный root сервер в Hetzner.

Форум — Linux-install

Собственно возникла необходимость установить NixOS на выделенный сервер (не виртуалка).
Из доступа есть только SSH.
Из требований - загрузчик UEFI, файловая система F2FS (SSD).
И вот тут возникает вопрос, как собственно установить.
Загрузка с PXE не доступна.
https://gist.github.com/cstrahan/15668500a2b78d3c11cb - установка по этому скрипту не получается, т.к. debian образ (rescue режим) не умеет в F2FS.

# CONFIG_F2FS_FS is not set

mount: unknown filesystem type 'f2fs'

NixOps тоже не вариант, т.к. доступа к robot-панели нет.

Может кто подскажет способ установки? Ибо у меня мыслей больше нет.

 ,

Sorcus
()

CentOS. Legacy.

Форум — Talks

Package libzip-0.10.1-8.el7.x86_64 already installed and latest version
Linux 3.10.0-514.21.2.el7.x86_64 #1 SMP Tue Jun 20 12:24:47 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Это вообще нормально? Уже не первый раз замечаю, что в этом CentOS-е кроме говна мамонта больше ничего нету.
Ах да, к чему я это - Roundcube добавляет файлы с русскими названиями в zip архив, который при распаковке показывает крякозябры.
Названия в UTF-8... Да вот только поддержку UTF-8 в libzip завезли только в 2013 году, а в CentOS версия libzip 2012 года.
https://nih.at/libzip/NEWS.html - changelog, если кому интересно.
already installed and latest version - latest, такой latest...
Ужас в общем. Откуда только такая тяга к легаси в ущерб функционалу?

 

Sorcus
()

NixOS. Не работает SNAT.

Форум — General

Имеется 2 конфигурации: на Аrchlinux и на NixOS.
Обе конфигурации выступают в роли VPN сервера с WireGuard.
Суть в том, что при подключении клиентов к Archlinux серверу, клиенты могут пропинговать любой IPv6 в интернете.
К примеру гугловский IPv6.
Но если подключаться к NixOS серверу, то ICMP Request уходит с клиента через сервер на удаленный IPv6 адрес (гугловский к примеру) и возвращает ICMP Reply, который приходит на enp0s3 интерфейс сервера (который смотрит в интернет) и все.
Дальше enp0s3 интерфейса пакет не уходит, хотя должен уходить на интерфейс wg0, через который клиенты с сервером обмениваются шифрованными пакетами.
Т.е. tshark -i wg0 показывает только ICMP Request пакеты. ICMP Reply почему-то просто не попадают в wg0.
Хотя выхлоп ip a, ip -6 route, route -6, nft list ruleset идентичен.
Возможно это что-то NixOS-специфичное, поэтому вопрос - в какую сторону копать и на что обратить внимание.
Может какие-нибудь опции в ядре NixOS-а не включены?
https://git.archlinux.org/svntogit/packages.git/tree/trunk/config.x86_64?h=pa... - опции ядра Archlinux.
https://github.com/NixOS/nixpkgs/blob/master/pkgs/os-specific/linux/kernel/co... - опции ядра NixOS.
Заранее спасибо.

 , , , ,

Sorcus
()

Не работает роутинг пакетов через Wireguard.

Форум — Admin

Подскажите, куда копать.
Создано 3 виртуалки: Wireguard Server, Client A и Client B.
Wireguard Server:

[root@nixos:~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:50:56:00:xx:xx brd ff:ff:ff:ff:ff:ff
    inet6 2a01:4f8:xx:xx::5/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:xx:xx/64 scope link 
       valid_lft forever preferred_lft forever
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 1
    link/none 
    inet6 fc00::5/128 scope global 
       valid_lft forever preferred_lft forever
[root@nixos:~]# ip -6 route
2a01:4f8:xx:xx::/64 dev enp0s3 proto kernel metric 256 pref medium
fc00::5 dev wg0 proto kernel metric 256 pref medium
fe80::/64 dev enp0s3 proto kernel metric 256 pref medium
default via fe80::1 dev enp0s3 metric 1024 pref medium
[root@nixos:~]# wg
interface: wg0
  public key: AAA
  private key: (hidden)
  listening port: 50005

peer: BBB
  allowed ips: fc00::10/128

peer: CCC
  allowed ips: fc00::15/128
Client A:
[root@nixos:~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:81:xx:xx brd ff:ff:ff:ff:ff:ff
    inet6 2a01:4f8:xx:xx::10/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:xx:xx/64 scope link 
       valid_lft forever preferred_lft forever
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 1
    link/none 
    inet6 fc00::10/128 scope global 
       valid_lft forever preferred_lft forever

[root@nixos:~]# ip -6 route
2a01:4f8:xx:xx::/64 dev enp0s3 proto kernel metric 256 pref medium
fc00::10 dev wg0 proto kernel metric 256 pref medium
fe80::/64 dev enp0s3 proto kernel metric 256 pref medium
default dev wg0 metric 1024 pref medium
[root@nixos:~]# wg
interface: wg0
  public key: BBB
  private key: (hidden)
  listening port: 50010

peer: AAA
  endpoint: [2a01:4f8:xx:xx::5]:50005
  allowed ips: ::/0
  transfer: 0 B received, 5.78 KiB sent

Client B:

[root@nixos:~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:b1:xx:xx brd ff:ff:ff:ff:ff:ff
    inet6 2a01:4f8:xx:xx::15/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:xx:xx/64 scope link 
       valid_lft forever preferred_lft forever
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 1
    link/none 
    inet6 fc00::15/128 scope global 
       valid_lft forever preferred_lft forever

[root@nixos:~]# ip -6 route
2a01:4f8:xx:xx::/64 dev enp0s3 proto kernel metric 256 pref medium
fc00::15 dev wg0 proto kernel metric 256 pref medium
fe80::/64 dev enp0s3 proto kernel metric 256 pref medium
default dev wg0 metric 1024 pref medium
[root@nixos:~]# wg
interface: wg0
  public key: CCC
  private key: (hidden)
  listening port: 50015

peer: AAA
  endpoint: [2a01:4f8:xx:xx::5]:50005
  allowed ips: ::/0
  transfer: 0 B received, 2.89 KiB sent

Привила nftables у всех идентичные.

table ip6 filter {
        chain input {
                type filter hook input priority 0;
                icmpv6 type { echo-reply, echo-request, nd-neighbor-solicit, nd-neighbor-advert} nftrace set 1 accept
                tcp dport ssh nftrace set 1 accept
                tcp sport ssh nftrace set 1 accept
                nftrace set 1 drop
        }

        chain output {
                type filter hook output priority 0;
                icmpv6 type { echo-reply, nd-neighbor-advert, echo-request, nd-neighbor-solicit} nftrace set 1 accept
                tcp sport ssh nftrace set 1 accept
                tcp dport ssh nftrace set 1 accept
                nftrace set 1 drop
        }

        chain forward {
                type filter hook forward priority 0;
                nftrace set 1 drop
        }
}
Форвардинг IPv6 пакетов включен - "net.ipv6.conf.all.forwarding" = 1

По IPv6 все 3 виртуалки пингуются между собой и подключаются по SSH.
Но вот заставить Client A и Client B пинговать друг друга и сервер по fc00:: никак не получается.
Оба клиента пытаются подключиться к серверу, что видно в выхлопе wg, но пакеты не уходят за пределы виртуалок.
Нужно правильно прописать роуты, но я уже запутался.
Если я правильно понимаю, то с помощью ip -6 route add default dev wg пакеты направляем в wireguard интерфейс (wg0), где пакеты шифруются.
Дальше нужно отправить зашифрованные пакеты на wireguard server. Т.е. нужен роут, который будет направлять пакеты из wg0 в 2a01:4f8:xx:xx::5 который у нас ходит в интернет через шлюз fe80::1?.
Максимум, чего получилось добиться - получение пакетов.
Т.е. ping -c 1 fc00::10 с fc00::5 приводил к тому, что пакеты icmp приходили на fc00::10, но icmp reply не было. Только входящий icmp request.
Что опять же говорит о том, что не хватает роутов. Верно?
В общем прошу объяснить. Заранее спасибо.

 , , , ,

Sorcus
()

Systemd-networkd в Network Namespace.

Форум — Admin

Никак не могу сообразить, как запускать networkd-unit-ы в network namespace-ах?
Т.е. весь трафик должен идти в созданный ns vpn0, внутри которого должен быть интерфейс enp3s0 с выходом в сеть.
Можно конечно сделать без networkd с помощью говна и палок, но не очень хочется.
Файлы unit-ов.
cat /etc/systemd/network/wired.network

[Match]
Name=enp3s0

[Network]
# IPv6
Address=2a01:***:***::55/64
Gateway=fe80::1


cat /etc/systemd/system/wireguard.service

[Unit]
Description=WireGuard Client

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/ip netns add vpn0
ExecStart=/bin/ip link set enp3s0 down
ExecStart=/bin/ip link set enp3s0 netns vpn0
ExecStart=/bin/ip -n vpn0 link add wg0 type wireguard
ExecStart=/bin/ip -n vpn0 link set wg0 netns 1

# Здесь нужно как-то запустить networkd-unit внутри network namespace, чтобы был выход в интернет.

ExecStart=/bin/ip address add fc00::10/64  dev wg0
ExecStart=/bin/ip address add 192.168.***.5/24 dev wg0
ExecStart=/bin/wg setconf wg0 /etc/wireguard/client.conf
ExecStart=/bin/ip link set mtu 1400 dev wg0
ExecStart=/bin/ip link set wg0 up 
ExecStart=/bin/ip route add default dev wg0
ExecStart=/bin/ip -6 route add default dev wg0

ExecStart=/bin/dnscrypt-proxy /etc/dnscrypt-proxy.conf

ExecStop=/bin/ip -n vpn0 link set enp3s0 down
ExecStop=/bin/ip -n vpn0 link set enp3s0 netns 1
ExecStop=/bin/ip link del wg0
ExecStop=/bin/ip netns del vpn0
ExecStop=/bin/killall dnscrypt-proxy

[Install]
WantedBy=multi-user.target

Я тут пока что прикинул, а что если запускать как-то так?
ExecStart=/bin/ip netns exec systemctl start systemd-networkd
Или есть более лучшее решение?
А я пока что пожалуй проверю вариант с запуском networkd через ExecStart...

 , ,

Sorcus
()

NixOS. Несколько вопросов по установке.

Форум — Admin

1. Каким образом указать в configuration.nix в качестве загрузчика Syslinux?
В списке опций нашел только Gummiboot и Grub.
2. Обновление на новую версию дистрибутива происходит с помощью смены канала?
Хотя я не совсем пока понял, NixOS - rolling дистрибутив или нет?
Т.е. смена https://nixos.org/channels/nixos-16.09 на https://nixos.org/channels/nixos-17.03 носит чисто формальный характер и в целом изменения между регулярно обновляемым 16.09 и 17.03 не слишком большие?

 ,

Sorcus
()

RSS подписка на новые темы