スキップしてメイン コンテンツに移動

postfix + dovecot で let's encryptを使いipv4/ipv6両対応かつspf/dkim/dmarcレコード対応のimaps/smtpsなメールサーバを構築

独自ドメインを運用するにあたり、メールでの連絡が必要なので、postfix と dovecot で 公開型のimpasサーバだけをipv4/ipv6両対応で構築してみました。
MXレコードが必要なのは昔も今も変わりませんが、今どきのメールサーバはdnsにspfレコードがないとgmailやoutlookではメールを受信できません。メールを送信しても、はじき返されるならまだしも、そのまま破棄されてしまう場合もあります。これに加え、dkimレコードとdmarcレコードも必要になります。作業量はかなり多いので、今回変更部分はなるべくパッチファイルで作業できるようにしてみました。なお環境はDebian 12でメールサーバはmx01.example.com、ドメインはexample.com、サブドメイン運用無しとしています。また、事前にmx01.example.comの正引き・逆引きをIPv4/IPv6ともにできるようにしておいてください。
まず、最初に postfix と dovecot と certbot(let's encrypt)をインストールします。
apt-get install postfix dovecot-imapd certbot
Postfixのコンフィグレーションを聞かれた場合は、No configurationを指定してください。
つづいて、certbotを使ってlet's encryptのssl証明書類を発行してもらいます。
certbot certonly --standalone -d mx01.example.com -m admin@example.com --agree-tos
次に/etc/postfix/main.cfのパッチファイルです。
--- main.cf.proto       2024-07-26 23:12:02.216307005 +0900
+++ main.cf     2024-07-27 00:45:20.765008342 +0900
@@ -96,14 +96,14 @@
 # other configuration parameters.
 #
 #myhostname = host.domain.tld
-#myhostname = virtual.domain.tld
+myhostname = mx01.example.com

 # The mydomain parameter specifies the local internet domain name.
 # The default is to use $myhostname minus the first component.
 # $mydomain is used as a default value for many other configuration
 # parameters.
 #
-#mydomain = domain.tld
+mydomain = example.com

 # SENDING MAIL
 #
@@ -124,7 +124,7 @@
 #
 #myorigin = /etc/mailname
 #myorigin = $myhostname
-#myorigin = $mydomain
+myorigin = $mydomain

 # RECEIVING MAIL

@@ -138,7 +138,7 @@
 #
 # Note: you need to stop/start Postfix when this parameter changes.
 #
-#inet_interfaces = all
+inet_interfaces = all
 #inet_interfaces = $myhostname
 #inet_interfaces = $myhostname, localhost

@@ -186,7 +186,7 @@
 # See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
 #
 #mydestination = $myhostname, localhost.$mydomain, localhost
-#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
+mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
 #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
 #      mail.$mydomain, www.$mydomain, ftp.$mydomain

@@ -413,7 +413,7 @@
 # "postfix reload" to eliminate the delay.
 #
 #alias_maps = dbm:/etc/aliases
-#alias_maps = hash:/etc/aliases
+alias_maps = hash:/etc/aliases
 #alias_maps = hash:/etc/aliases, nis:mail.aliases
 #alias_maps = netinfo:/aliases

@@ -424,7 +424,7 @@
 #
 #alias_database = dbm:/etc/aliases
 #alias_database = dbm:/etc/mail/aliases
-#alias_database = hash:/etc/aliases
+alias_database = hash:/etc/aliases
 #alias_database = hash:/etc/aliases, hash:/opt/majordomo/aliases

 # ADDRESS EXTENSIONS (e.g., user+foo)
@@ -446,7 +446,7 @@
 # "Maildir/" for qmail-style delivery (the / is required).
 #
 #home_mailbox = Mailbox
-#home_mailbox = Maildir/
+home_mailbox = Maildir/

 # The mail_spool_directory parameter specifies the directory where
 # UNIX-style mailboxes are kept. The default setting depends on the
@@ -582,8 +582,8 @@
 #
 #smtpd_banner = $myhostname ESMTP $mail_name
 #smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
-smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
-
+#smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
+smtpd_banner = $myhostname ESMTP

 # PARALLEL DELIVERY TO THE SAME DESTINATION
 #
@@ -656,38 +656,64 @@
 # sendmail_path: The full pathname of the Postfix sendmail command.
 # This is the Sendmail-compatible mail posting interface.
 #
-sendmail_path =
+sendmail_path = /usr/sbin/postfix

 # newaliases_path: The full pathname of the Postfix newaliases command.
 # This is the Sendmail-compatible command to build alias databases.
 #
-newaliases_path =
+newaliases_path = /usr/bin/newaliases

 # mailq_path: The full pathname of the Postfix mailq command.  This
 # is the Sendmail-compatible mail queue listing command.
 #
-mailq_path =
+mailq_path = /usr/bin/mailq

 # setgid_group: The group for mail submission and queue management
 # commands.  This must be a group name with a numerical group ID that
 # is not shared with other accounts, not even with the Postfix account.
 #
-setgid_group =
+setgid_group = postdrop

 # html_directory: The location of the Postfix HTML documentation.
 #
-html_directory =
+#html_directory =

 # manpage_directory: The location of the Postfix on-line manual pages.
 #
-manpage_directory =
+#manpage_directory =

 # sample_directory: The location of the Postfix sample configuration files.
 # This parameter is obsolete as of Postfix 2.1.
 #
-sample_directory =
+#sample_directory =

 # readme_directory: The location of the Postfix README files.
 #
-readme_directory =
-inet_protocols = ipv4
+#readme_directory =
+inet_protocols = all
+
+smtpd_sasl_auth_enable = yes
+smtpd_sasl_type = dovecot
+smtpd_sasl_path = private/auth
+broken_sasl_auth_clients = yes
+
+smtpd_relay_restrictions =
+    permit_mynetworks
+    permit_sasl_authenticated
+    reject_unauth_destination
+
+smtpd_sasl_security_options = noanonymous
+smtpd_sasl_local_domain = $myhostname
+
+smtpd_tls_security_level = may
+smtpd_tls_auth_only = yes
+smtpd_tls_loglevel = 1
+smtpd_tls_cert_file = /etc/letsencrypt/live/mx01.example.com/fullchain.pem
+smtpd_tls_key_file = /etc/letsencrypt/live/mx01.example.com/privkey.pem
+smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
+
+milter_default_action = accept
+milter_protocol = 6
+smtpd_milters = local:opendkim/opendkim.sock,local:opendmarc/opendmarc.sock
+non_smtpd_milters = $smtpd_milters
+
パッチを編集するには、エディタを使いmx01.example.com/example.comの順で置換してください。以下同様です。
パッチの編集が済んだら、このパッチを、/tmp/postfix-main.cf.diffとして保存します。
続いてパッチを当てるには次の様にします。
apt-get install patch
cd /etc/postfix
cp main.cf.proto main.cf
patch -p0 < /tmp/postfix-main.cf.diff
次は、/etc/postfix/master.cfです。
--- master.cf.proto     2024-07-26 23:12:02.220306985 +0900
+++ master.cf   2024-07-26 23:47:42.930313831 +0900
@@ -16,10 +16,10 @@
 #tlsproxy  unix  -       -       y       -       0       tlsproxy
 # Choose one: enable submission for loopback clients only, or for any client.
 #127.0.0.1:submission inet n -   y       -       -       smtpd
-#submission inet n       -       y       -       -       smtpd
+submission inet n       -       y       -       -       smtpd
 #  -o syslog_name=postfix/submission
-#  -o smtpd_tls_security_level=encrypt
-#  -o smtpd_sasl_auth_enable=yes
+  -o smtpd_tls_security_level=encrypt
+  -o smtpd_sasl_auth_enable=yes
 #  -o smtpd_tls_auth_only=yes
 #  -o smtpd_reject_unlisted_recipient=no
 #     Instead of specifying complex smtpd__restrictions here,
@@ -30,7 +30,7 @@
 #  -o smtpd_helo_restrictions=
 #  -o smtpd_sender_restrictions=
 #  -o smtpd_relay_restrictions=
-#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
+  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
 #  -o milter_macro_daemon_name=ORIGINATING
 # Choose one: enable submissions for loopback clients only, or for any client.
 #127.0.0.1:submissions inet n  -       y       -       -       smtpd
/tmp/postfix-master.cf.diffとして保存し、パッチを当てます。
cd /etc/postfix
cp master.cf.proto master.cf
patch -p0 < /tmp/postfix-master.cf.diff
続いいて dovecotの設定です。 /etc/dovecot/conf.dの内、いくつか編集しますので、先にコピーをしておきます。
cd /etc/dovecot/conf.d
cp -a 10-auth.conf 10-auth.conf.orig
cp -a 10-mail.conf 10-mail.conf.orig
cp -a 10-master.conf 10-master.conf.orig
cp -a 10-ssl.conf 10-ssl.conf.orig
パッチは以下の通りです。
--- 10-auth.conf.orig   2024-07-27 02:06:37.207648287 +0900
+++ 10-auth.conf        2024-07-26 23:34:37.223611218 +0900
@@ -48,7 +48,7 @@
 # the standard variables here, eg. %Lu would lowercase the username, %n would
 # drop away the domain if it was given, or "%n-AT-%d" would change the '@' into
 # "-AT-". This translation is done after auth_username_translation changes.
-#auth_username_format = %Lu
+auth_username_format = %n

 # If you want to allow master users to log in by specifying the master
 # username within the normal username string (ie. not using SASL mechanism's
@@ -97,7 +97,7 @@
 #   plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp
 #   gss-spnego
 # NOTE: See also disable_plaintext_auth setting.
-auth_mechanisms = plain
+auth_mechanisms = plain login

 ##
 ## Password and user databases
--- 10-mail.conf.orig   2024-07-27 02:06:37.283647408 +0900
+++ 10-mail.conf        2024-07-26 23:35:07.999247538 +0900
@@ -27,7 +27,8 @@
 #
 # <doc/wiki/MailLocation.txt>
 #
-mail_location = mbox:~/mail:INBOX=/var/mail/%u
+#mail_location = mbox:~/mail:INBOX=/var/mail/%u
+mail_location = maildir:~/Maildir

 # If you need to set multiple mailbox locations or want to change default
 # namespace settings, you can do it by defining namespace sections.
--- 10-master.conf.orig 2024-07-27 02:06:37.307647130 +0900
+++ 10-master.conf      2024-07-26 21:39:40.687479947 +0900
@@ -16,11 +16,11 @@

 service imap-login {
   inet_listener imap {
-    #port = 143
+    port = 0
   }
   inet_listener imaps {
-    #port = 993
-    #ssl = yes
+    port = 993
+    ssl = yes
   }

   # Number of connections to handle before starting a new process. Typically
@@ -104,9 +104,11 @@
   }

   # Postfix smtp-auth
-  #unix_listener /var/spool/postfix/private/auth {
-  #  mode = 0666
-  #}
+  unix_listener /var/spool/postfix/private/auth {
+    mode = 0666
+    user = postfix
+    user = postfix
+  }

   # Auth process is run as this user.
   #user = $default_internal_user
--- 10-ssl.conf.orig    2024-07-27 02:06:37.335646806 +0900
+++ 10-ssl.conf 2024-07-26 21:34:59.100585304 +0900
@@ -3,14 +3,14 @@
 ##

 # SSL/TLS support: yes, no, required. 
-ssl = yes
+ssl = required

 # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
 # dropping root privileges, so keep the key file unreadable by anyone but
 # root. Included doc/mkcert.sh can be used to easily generate self-signed
 # certificate, just make sure to update the domains in dovecot-openssl.cnf
-ssl_cert = </etc/dovecot/private/dovecot.pem
-ssl_key = </etc/dovecot/private/dovecot.key
+ssl_cert = </etc/letsencrypt/live/mx01.example.com/fullchain.pem
+ssl_key = </etc/letsencrypt/live/mx01.example.com/privkey.pem

 # If key file is password protected, give the password here. Alternatively
 # give it when starting dovecot with -p parameter. Since this file is often
このパッチを、/tmp/dovecot-conf.d.diffとして保存し、以下の様にしてパッチを当てます。
cd /etc/dovecot/conf.d
patch -p0 < /tmp/dovecot-conf.d.diff
次に、/etc/dovecot/dovecot.confファイルにパッチを当てます。パッチは以下の通りです。
--- dovecot.conf.orig   2023-01-20 15:01:26.000000000 +0900
+++ dovecot.conf        2024-07-25 19:58:34.588232434 +0900
@@ -27,7 +27,7 @@
 # "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces.
 # If you want to specify non-default ports or anything more complex,
 # edit conf.d/master.conf.
-#listen = *, ::
+listen = *, ::

 # Base directory where to store runtime data.
 #base_dir = /var/run/dovecot/
このパッチを、/tmp/dovecot.conf.diffとして保存し、以下の様にしてパッチを当てます。
cd /etc/dovecot
patch -p0 < /tmp/dovecot.conf.diff
次に、let's encryptが更新された後、postfixとdovecotが再起動されるようにしておきます。
cat <<EOF > /etc/letsencrypt/renewal-hooks/deploy/restart_postfix.sh
#!/bin/bash
systemctl restart postfix
EOF

chmod 755 /etc/letsencrypt/renewal-hooks/deploy/restart_postfix.sh

cat <<EOF > /etc/letsencrypt/renewal-hooks/deploy/restart_dovecot.sh
#!/bin/bash
systemctl restart dovecot
EOF

chmod 755 /etc/letsencrypt/renewal-hooks/deploy/restart_dovecot.sh
次に、dnsのmxレコードとspfレコードを更新しておきます。
                IN      MX 10   mx01.example.com.
                IN      TXT     "v=spf1 +ip4:10.10.10.25 +ip6:2001:0db8:111:2222:10:10:10:25 -all"
参考までに、独自dnsを立てている場合は作業が終わるまでは$TTLは600(10分)程度にしておくといいと思います。
また、以下のコマンドでaliasデータベースを作成します。
newaliases
続いて受信時のspfチェックを行うために、パッケージをインストールし、設定します。
apt-get install postfix-policyd-spf-python
次に、/etc/postfix/master.cfに以下を追加します。
#
# policy-spf
#
policyd-spf  unix  -    n       n       -       0       spawn
  user=policyd-spf argv=/usr/bin/policyd-spf
次に、/etc/postfix/main.cfの最後の方を以下の様にします。
smtpd_relay_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination
    check_policy_service unix:private/policyd-spf ##追加

policyd-spf_time_limit = 3600
設定が済んだら、systemctl reload postfixとして下さい。
次はdkimの設定です。まずパッケージをインストールします。
apt-get install opendkim opendkim-tools
続いて /etc/opendkim.confを編集します。パッチは以下の通りです。
--- opendkim.conf.orig  2024-07-27 15:07:29.978648331 +0900
+++ opendkim.conf       2024-07-27 00:27:52.800540869 +0900
@@ -11,8 +11,8 @@
 # oversigned, because it is often the identity key used by reputation systems
 # and thus somewhat security sensitive.
 Canonicalization       relaxed/simple
-#Mode                  sv
-#SubDomains            no
+Mode                   sv
+SubDomains             no
 OversignHeaders                From

 # Signing domain, selector, and key (required). For example, perform signing
@@ -34,10 +34,10 @@
 # it must be ensured that the socket is accessible. In Debian, Postfix runs in
 # a chroot in /var/spool/postfix, therefore a Unix socket would have to be
 # configured as shown on the last line below.
-Socket                 local:/run/opendkim/opendkim.sock
+#Socket                        local:/run/opendkim/opendkim.sock
 #Socket                        inet:8891@localhost
 #Socket                        inet:8891
-#Socket                        local:/var/spool/postfix/opendkim/opendkim.sock
+Socket                 local:/var/spool/postfix/opendkim/opendkim.sock

 PidFile                        /run/opendkim/opendkim.pid

@@ -49,3 +49,8 @@
 # by the package dns-root-data.
 TrustAnchorFile                /usr/share/dns/root.key
 #Nameservers           127.0.0.1
+
+KeyTable               file:/etc/opendkim/key.table
+SigningTable           refile:/etc/opendkim/signing.table
+ExternalIgnoreList     refile:/etc/opendkim/trusted.hosts
+InternalHosts          refile:/etc/opendkim/trusted.hosts
パッチを/tmp/opendkim.conf.diffとして保存してください。パッチを当てるには以下の様にします。
cd /etc
cp -a opendkim.conf opendkim.conf.orig
patch -p0 < /tmp/opendkim.conf.diff
続いてopendkimで使用する鍵を保存する場所などを作成します。
sudo mkdir -p /etc/opendkim/keys/example.com
sudo chown -R opendkim:opendkim /etc/opendkim
sudo chmod 700 /etc/opendkim/keys
sudo mkdir /var/spool/postfix/opendkim
sudo chown opendkim:postfix /var/spool/postfix/opendkim
次は/etc/default/opendkimでpostfixを使うようにしておきます。
RUNDIR=/var/spool/postfix/run/opendkim
続いて /etc/opendkim/signing.table を作成します。
*@example.com default._domainkey.example.com
続いて /etc/opendkim/trusted.hosts を作成します。
127.0.0.1
::1
localhost
続いて鍵を生成し、ファイルオーナーの変更を行います。
sudo opendkim-genkey -b 2048 -d example.com -D /etc/opendkim/keys/example.com -s default -v
sudo chown opendkim:opendkim /etc/opendkim/keys/example.com/default.txt /etc/opendkim/keys/example.com/default.private
続いて、dnsサーバにdkimレコードを追加します。内容は/etc/opendkim/keys/example.com/default.txtをそのまま貼り付ければOKですが、サーバによってはレコードの長さに制限がある場合があるので、その場合は鍵の長さを 2048から変更する必要があり注意してください。bind9で独自dnsを立てている場合は、dkimレコードを追加したら、dnsサーバをrestartしてください。 なお当方の設定では以下のレコードも追加しています。
_domainkey              IN      TXT     "o=-"
dkimレコードの追加が済んだら、以下の様にテストします。
# opendkim-testkey -d example.com -s default -vvv
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key 'default._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK
key not secureはdnssecの設定をしていない場合このように表示されますが、dkimの設定としてはこれでOKです。 続いてopendmarcをインストール・設定します。
apt-get install opendmarc
dbconfig-commでopendmarc用のdatabaseを設定する旨を聞いてきたら、今回は小規模環境での運用なので、いいえを選択してください。
続いて /etc/opendmarc.confを編集します。パッチは以下の通りです。
--- opendmarc.conf.orig 2024-07-27 15:46:22.406651483 +0900
+++ opendmarc.conf      2024-07-27 00:43:07.105524941 +0900
@@ -10,7 +10,7 @@
 ##  provided, the name of the host running the filter (as returned by the
 ##  gethostname(3) function) will be used.
 #
-# AuthservID name
+AuthservID OpenDMARC

 ##  FailureReports { true | false }
 ##     default "false"
@@ -49,7 +49,7 @@
 ##  evaluation of the message.  Instead, an Authentication-Results header
 ##  field will be added.
 #
-# RejectFailures false
+RejectFailures true

 ##  Socket socketspec
 ##     default (none)
@@ -64,7 +64,8 @@
 ##  either in the configuration file or on the command line.  If an IP
 ##  address is used, it must be enclosed in square brackets.
 #
-Socket local:/run/opendmarc/opendmarc.sock
+#Socket local:/run/opendmarc/opendmarc.sock
+Socket local:/var/spool/postfix/opendmarc/opendmarc.sock

 ##  Syslog { true | false }
 ##     default "false"
@@ -90,7 +91,7 @@
 ##  with a comma.  The key word "HOSTNAME" will be replaced by the name of
 ##  the host running the filter as reported by the gethostname(3) function.
 #
-# TrustedAuthservIDs HOSTNAME
+TrustedAuthservIDs mx01.example.com

 ##  UMask mask
 ##     default (none)
@@ -112,3 +113,9 @@
 ##  the named userid unless an alternate group is specified.
 #
 UserID opendmarc
+
+IgnoreHosts /etc/opendmarc/ignore.hosts
+SPFSelfValidate true
+IgnoreAuthenticatedClients true
+RequiredHeaders    true
+
パッチを、/tmp/opendmarc.conf.diffとして保存し、以下の様にしてパッチを当てます。
cd /etc
cp -a opendmarc.conf opendmarc.conf.orig
patch -p0 < /tmp/opendmarc.conf.diff
/etc/opendmarcフォルダを作成し、そこにignore.hostsを以下の内容で作成します。
127.0.0.1
::1
続いてpostfixとのやり取りなどを準備します。
mkdir /var/spool/postfix/opendmarc
chown -R opendmarc:opendmarc /var/spool/postfix/opendmarc
chmod 750 /var/spool/postfix/opendmarc
adduser postfix opendmarc
最後に dmarcレコードをdnsに追加します。
_dmarc                  IN      TXT     "v=DMARC1; p=reject; adkim=s; aspf=s;"
これで設定は完了です。systemctl restart postfix dovecotとしてメールの送受信をテストしてみてください。
お疲れさまでした。今回は以上です。それでは。

コメント

このブログの人気の投稿

wsdd を使ってSamba サーバをネットワークに表示

Windows 10のアップデートで、セキュリティー対応のため、smbv1がデフォルトではインストールされなくなり、Samba serverがエクスプローラーのネットワークに表示されなくなってしまいました。そこで、いくつか方法を調べたのですが、linuxでwsdの実装がないか探したところ、 https://github.com/christgau/wsdd が、見つかりましたので、さっそくインストールしてみました。まだパッケージにはないようですが、インストール自身は簡単です。wsdd自体は以下のように取得し、linkを張っておきます。 cd /usr/local/bin/ sudo wget https://raw.githubusercontent.com/christgau/wsdd/master/src/wsdd.py sudo chmod 755 wsdd.py sudo ln -sf wsdd.py wsdd こちらのsambaサーバはDebianなので、/etc/systemd/system/wsdd.serviceは以下のようにしました。 [Unit] Description=Web Services Dynamic Discovery host daemon Requires=network-online.target After=network.target network-online.target multi-user.target [Service] Type=simple ExecStart=/usr/local/bin/wsdd -d MYDOMAIN [Install] WantedBy=multi-user.target wsdd -d MYDOMAINのところを、環境にあわせて書き換えてください。 次に、systemdに登録・起動テストを行います。 systemctl enable wsdd systemctl start wsdd 起動に成功すると、エクスプローラーのネットワークに表示されます。  なおこのwsddはpython3が必要です。一度試してみてください。SMBv1/CIFSを停止していても、大丈夫です。 cで書かれたほかのwsddの実装もあるようなので、いずれパッケージになるかもしれませ

Windows デバイス暗号化 のサポートで "許可されていない dma 対応バス/デバイスが検出されました"の対処

Windows でセキュリティー関係を見ているのですが、とあるPCでmsinfo32で確認すると"デバイス暗号化のサポート"で"許可されていない dma 対応バス/デバイスが検出されました"と出ていました。このPCの場合、それ以外はOK(なにも表示されない)だったのですが、ネットでしらべるとMSのドキュメントではハードウェアベンダーに問い合わせるなどと敷居が高く具体的にどこが引っかかっているかわかりません。そこでほかに方法はないかとしらべやってみたところ、"前提条件をみたしています"まで持って行けたので、本稿を挙げた次第です。 具体的には、以下のようにします。 1-a. 許可するDMA対応バス・デバイスを指定するレジストリの所有権と書き込み設定をおこなう。 以下のレジストリキーの所有者を自分自身(管理ユーザ)のものにし、フルコントロール権を付与する。 HKLM\SYSTEM\CurrentControlSet\Control\DmaSecurity\AllowedBuses もしくは 1-b. MicrosoftよりPsExecをダウンロードし、System権限でRegeditを立ち上げ編集する。 Microsoftより、https://docs.microsoft.com/en-us/sysinternals/downloads/psexec にある こちら をダウンロードし、解凍する。解凍すると、x64の場合、PsExec64.exeがあるので、管理者権限で以下を実行し、システム権限でregeditを立ち上げることが出来るようになる。 cd Downloads\PSTools .\PsExec64.exe -sid C:\Windows\regedit.exe 2-a. パワーシェルスクリプトを実行し、PnPデバイスのうちインスタンスがPCIで始まるものを"AllowedBuses"に追加する。 以下のパワーシェルスクリプトを作成する。たとえばDocuments\allow-dma-bus-device.ps1として作成する。( こちらの記事のものを使用させていただきました: Thank you! ) $tmpfile = "$($env:T

フレッツ光クロス:MAP-E ROUTER by Debian Box (iptables)

フレッツ光クロスがようやく開通したので、Debianにてrouterを構成し接続してみました。なお、プロバイダーを選ぶにあたっては、IPoE方式がそれぞれ異なるため検討したところ、IPoEでは、MAP-Eでもv6plusとocnバーチャルコネクトがあり、前者がポート数240なのに対し、後者は約4倍のポート数が使えるようなネットの情報をみて、OCNバーチャルコネクトを選択しました。(プロバイダーとしてはぷららです。なおDS-LiteはCE側でのNATではないので今回は見送りました。)そこで、OCN バーチャルコネクトをDebian(iptables)で実現するとどうなるかと思い、ネットの情報を頼りにしつつ、設定した次第です。 実際に試した結果、とりあえず通信できていますが、MAP-Eは本来マッピングルールをマップサーバから取得するはずなので、今回のやり方が正解とはいえませんし、仕様変更されると通信できなくなる可能性があります。あくまでも参考程度ですが、本稿をUPしてみました。 2023/03/16追記: こちら にゲームコンソールNAT越え(Nintendo Switch ナットタイプ A判定)対応版を投稿しました。 2023/03/28追記:※1の記述および3行無効化によりNAT越え(Nintendo Switch ナットタイプ B判定)できるようになりました。 構成は以下の通りです。 ルーターがDebianで回線がOCNバーチャルコネクトであること以外はなにも特別なところはない構成です。 さて、いきなり設定ですが、まず、割り当てられたプレフィックスを確認します。 確認は、 dhclient -6 -d -P enp2s0 とします。出力の中に 前略 RCV: | | X-- IAPREFIX 2400:4050:5c71:af00::/56 後略 このようにプレフィックスが表示されるので、その確認したプレフィックスを書き留めておきます。これを こちらで 入力します。すると、 CE: 2400:4050:5c71:af00:99:f171:c600:2f00 IPv4 アドレス: 153.241.113.198 ポート番号:(1776-1791 2800-2815 3824-3839) 4848-4863 5872-5887 6896-