TL;DR Vous pouvez le faire pour environ 15000 yens J'étais accro au problème de Path MTU Discovery
Je fais généralement ce qui suit:
may
Veuillez lire la partie X de sdX en fonction de votre environnement.
#Format de la carte SD
fdisk /dev/sdx
Appuyez sur o pour supprimer la partition
Appuyez sur n pour créer une partition
Appuyez sur p puis sur 1 pour créer la partition principale
Appuyez sur Entrée sans rien saisir, spécifiez le premier secteur,+128 Mo du début 128 Mo à la première partition
Changez la première partition en FAT32 en appuyant sur t puis sur c
Appuyez sur p puis sur 2 pour créer une partition principale
Appuyez sur Entrée sans rien entrer pour spécifier le premier secteur, appuyez sur Entrée sans rien entrer et faites de toute la zone restante la deuxième partition
Appuyez sur w pour écrire vos modifications
#Formatage et montage de partitions
mkfs.vfat /dev/sdx1
mkfs.ext4 /dev/sdx1
mkdir {boot,root}
mount /dev/sdx1 boot
mount /dev/sdx2 root
#Installation du système d'exploitation
wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-4-latest.tar.gz
bsdtar -xpf ArchLinuxARM-rpi-4-latest.tar.gz -C root
sync
#Déplacer les fichiers de démarrage vers la première partition
mv root/boot/* boot
#Retirez la carte SD et démarrez le système d'exploitation
umount boot root
#Initialisation du système d'exploitation
##* "Abonnement" de RHEL-Parce que c'est une commande comme "registre du gestionnaire"
##Je sens que les nuances d'initialisation sont différentes, mais initialiser à de tels moments,peupler
##Veuillez commenter si vous connaissez la traduction japonaise appropriée
pacman-key --init
pacman-key --populate archlinuxarm
Par défaut, less et vim ne sont pas inclus et il est trop peu pratique à installer.
pacman -S vim less
Lorsque vous connectez ppp à partir de Linux, vous pouvez facilement vous connecter en utilisant ppp.
pacman -S ppp
Créez le fichier de configuration dans / etc / ppp / peers / <nom de fichier approprié>. Les paramètres sont les suivants. Voir pppd (8) pour plus de détails.
vim /etc/ppp/peers/hogehoge
plugin rp-pppoe.so
#Spécifiez l'interface côté WAN. eth0 est le port LAN le plus souvent connecté à Raspi.
eth0
#Décrit l'ID de connexion spécifié par le fournisseur.@<domaine>Est également requis.
name "[email protected]"
#Utilisez le serveur DNS fourni par le FAI
usepeerdns
#Connectez-vous toujours. Déconnectez-vous à chaque fois<demand>Vous pouvez le laisser, mais
#Il est plus rapide de couper l'alimentation, donc dans la plupart des cas, il n'y a pas de problème avec persist.
persist
#Ajouté automatiquement à la table de routage lorsqu'une connexion ppp est établie
defaultroute
#Supprime la sortie des mots de passe dans le journal.
hide-password
#N'exigez pas de FAI de certifier. Fondamentalement, cela devrait être auth, mais cela semble être inutile lorsqu'il s'agit de FAI
noauth
#Activer la connexion IPV6
+ipv6
Le mot de passe pour la connexion PPP est "/ etc / ppp / pap-secrets" ou "/ etc / ppp / chap-secrets", et si la méthode de connexion est spécifiée par le FAI, elle est spécifiée. Écrivez le mot de passe côté méthode.
Cela fonctionne bien si vous l'écrivez dans les deux, donc si vous ne le comprenez pas, vous pouvez l'écrire dans les deux.
# /etc/ppp/pap-secrets
<Valeur spécifiée par nom> * <Mot de passe spécifié par le FAI>
(Exemple)
[email protected] * password
Pour vérifier la connexion, essayez de démarrer manuellement la connexion PPP.
pppd call /etc/ppp/peers/hogehoge
S'il fonctionne correctement, ppp0 sera créé.
ip a
...
ppp0:
Configurez le service pour qu'il démarre automatiquement au démarrage du système d'exploitation.
systemctl enable [email protected]
Créez un réseau domestique avec systemd-networkd.
Vérifiez d'abord l'interface réseau qui existe sur le terminal.
ip a
Vous devriez obtenir la sortie suivante.
lo:
eth0:
enp1s0u1:
wlan0:
ppp0:
Puisqu'il est pratique d'avoir une communication sans fil et filaire (Bonjour, etc.), je vais créer un adaptateur de pont et connecter l'interface réseau filaire et l'interface réseau sans fil virtuellement au réseau L2.
Créez le fichier suivant pour créer l'adaptateur de pont.
# /etc/systemd/network/br0.netdev
[NetDev]
Name=br0
Kind=bridge
Après avoir créé le fichier, redémarrez systemd-netwokrd.
systemctl restart systemd-networkd
Lorsque vous affichez à nouveau la liste des interfaces réseau, le périphérique réseau est créé.
Il n'est pas nécessaire de faire brctl ou d'autres choses gênantes car c'est une réconciliation.
ip a
lo:
...
br0: (← augmenter)
Ensuite, connectez l'appareil de votre réseau local au pont. Étant donné que eth0 est utilisé pour la connexion PPP, il ne sera pas modifié.
# /etc/systemd/network/enp1s0u1.network (Créer un nouveau)
[Match]
Name=enp1s0u1
[Network]
Bridge=br0
# /etc/systemd/network/wlan0.network (Créer un nouveau)
[Match]
Name=wlan0
[Network]
Bridge=br0
L'interface réseau est maintenant connectée au pont.
C'est facile parce que c'est un décret.
Ensuite, spécifiez l'adresse IP de manière statique afin qu'elle puisse être reconnue sur le réseau local. Cette fois, je l'ai réglé sur 192.168.0.1/24, mais il n'y a pas de problème si c'est l'adresse spécifiée comme adresse locale (https://tools.ietf.org/html/rfc1918).
Dès la conclusion, c'est l'adresse suivante.
# /etc/systemd/network/br0.network (Créer un nouveau)
[Match]
Name=br0
[Network]
Address=192.168.0.1/24
Gateway=192.168.0.1
Une fois les paramètres définis, redémarrez systemd-networkd.
systemctl restart systemd-networkd
Comme indiqué ci-dessous, br0 commence par 192.168.0.1, et enp1s0u1 et wlan0 n'ont pas d'adresse IP car ils sont connectés par L2. (L'adresse MAC, etc. varie en fonction de l'environnement, veuillez donc la lire comme il convient.)
enp1s0u2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether 04:ab:18:3c:d4:6b brd ff:ff:ff:ff:ff:ff
br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether ae:52:e3:c8:67:ca brd ff:ff:ff:ff:ff:ff
inet 192.168.0.1/24 brd 192.168.0.255 scope global br0
valid_lft forever preferred_lft forever
wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether dc:a6:32:71:0b:9e brd ff:ff:ff:ff:ff:ff
Le réseau local est créé par la procédure jusqu'à présent, et si vous entrez manuellement l'adresse 192.168.0.0/24, cela fonctionnera normalement, mais il est trop difficile de le faire un par un. Par conséquent, créez un serveur DHCP et DNS.
Installez dhcpd.
pacman -S dhcpd
Le fichier de configuration dhcpd est "/etc/dhcpd.conf". Créez un fichier de paramètres comme indiqué ci-dessous.
option domain-name-servers 192.168.0.1;
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.200;
}
En définissant ce paramètre, les paramètres suivants seront automatiquement définis sur le réseau local.
Réglage | valeur |
---|---|
adresse IP | 192.168.0.10〜192.168.0.200 adresses IP gratuites |
passerelle par défaut | 192.168.0.1 |
masque de sous-réseau | 255.255.255.0 |
Serveur dns | 192.168.0.1 |
Après la création, démarrez le serveur DHCP et activez le démarrage automatique.
systemctl enable dhcpd4
systemctl start dhcpd4
L'ensemble ci-dessus peut être le même avec la ligne suivante. (Jabashi)
systemctl enable --now dhcpd4
Il ne résout pas le nom du PC local, mais crée un serveur de cache DNS qui ne contient que les informations DNS d'Internet.
Tout d'abord, installez bind.
pacman -S bind
Le fichier de configuration est "/etc/named.conf". Les paramètres lors de la création en tant que serveur de cache DNS sont les suivants.
options {
//Répertoire pour générer divers fichiers
directory "/var/named";
//Chemin du fichier PID
pid-file "/run/named/named.pid";
//Écoute réseau pour les requêtes DNS
listen-on { 127.0.0.1; 192.168.0.0/24; };
//Réseau qui répond aux requêtes DNS
allow-recursion { 127.0.0.1; 192.168.0.0/24; };
//Réseaux qui autorisent les transferts de zone DNS
allow-transfer { none; };
//Réseau qui permet la réécriture des informations de zone DNS
allow-update { none; };
//Résoudre les noms uniquement des transitaires
forward only;
//DNS parent utilisé par ce serveur DNS(8.8.8.8,8.8.4.4 est le DNS de Google)
forwarders{ 8.8.8.8; 8.8.4.4; };
//Masquer les informations du serveur
version none;
hostname none;
server-id none;
};
Une fois les paramètres définis, démarrez la liaison avec la commande suivante et activez le démarrage automatique.
systemctl enable named
systemctl start named
Comme vous le savez peut-être si vous l'avez essayé jusqu'à présent, vous pouvez vous connecter à Internet à partir de Raspi, mais vous ne pouvez pas vous connecter à Internet à partir de votre réseau local pour le moment. Vous permet de quitter le réseau ppp0 de votre réseau local.
Tout d'abord, autorisez le transfert IP car il est désactivé dans le système d'exploitation.
cat /proc/sys/net/ipv4/ip_forward
0(Invalide)
# /etc/sysctl.d/ipforward.conf (Créer un nouveau)
net.ipv4.ip_forward=1
net.ipv6.conf.default.forwarding=1
net.ipv6.conf.all.forwarding=1
Après avoir créé les paramètres, redémarrez le système d'exploitation.
Si vous vérifiez à nouveau, le transfert IP doit être activé.
cat /proc/sys/net/ipv4/ip_forward
1
Ensuite, installez iptables.
pacman -S iptables
À l'origine, vous devez les ajouter un par un avec la commande iptables, mais éditez "/etc/iptables/iptables.rule" comme suit.
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:MINIUPNPD - [0:0]
-A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o ppp0 -j TCPMSS --clamp-mss-to-pmtu
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -i br0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i br0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i br0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i br0 -p tcp -m tcp --dport 67 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A FORWARD -i br0 -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-unreachable
-A OUTPUT -o ppp0 -d 192.168.0.0/24 -j DROP
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o ppp0 -j MASQUERADE
COMMIT
La signification de chaque paramètre est la suivante.
#Il s'agit d'un tableau de paramètres liés à la qualité du réseau du réseau IP appelé le champ ToS appelé table mangle.
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
#Prenez des mesures contre le problème Path MTU Discovery.
#Dans Qiita, débordement de pile, etc., la taille des paquets envoyés en même temps est"""Pourquoi"""Parce qu'il est grand
#Si la valeur par défaut est 1500, la taille du paquet sera plus grande que prévu par le réseau et les données seront perdues au milieu.
#Il sera détruit. Définissez la taille de paquet du paquet MSS du côté distant avec les paramètres suivants
#Active la fonction tell et empêche l'envoi des paquets non reçus.
-A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o ppp0 -j TCPMSS --clamp-mss-to-pmtu
#Une table qui refuse l'autorisation de connexion.
*filter
#Rejeter les paquets de l'extérieur qui n'entrent dans aucune règle
:INPUT DROP [0:0]
#Refuser les paquets qui passent par un serveur qui n'entre dans aucune des règles
:FORWARD DROP [0:0]
#Les paquets de raspi vers un autre réseau sont autorisés.
:OUTPUT ACCEPT [0:0]
# TCP/Il s'agit d'une table créée pour UDP.
:TCP - [0:0]
:UDP - [0:0]
#Réseau local(br0)Autoriser les requêtes DNS à partir de.
-A INPUT -i br0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i br0 -p tcp -m tcp --dport 53 -j ACCEPT
#Réseau local(br0)Autoriser les demandes DHCP de.
-A INPUT -i br0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i br0 -p tcp -m tcp --dport 67 -j ACCEPT
#Permet toute communication de raspi lui-même.
-A INPUT -i lo -j ACCEPT
#Autorisez les connexions qui ont déjà été établies d'une manière ou d'une autre.
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#Autorise l'écho ICMP.
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
#La connexion UDP est déléguée au traitement de la table UDP
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
#Transférer la connexion TCP vers le traitement de la table TCP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
#Supprime les connexions de statut inconnu.
-A INPUT -m conntrack --ctstate INVALID -j DROP
#Les paquets qui ne correspondent pas à la table UDP sont rejetés avec une erreur indiquant que l'hôte n'existe pas.
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
#TCP RESET rejette les paquets qui ne correspondent pas à la table TCP.
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
#Rejetez les autres connexions avec une erreur qui n'a pas de protocole correspondant.
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
#Permet la communication du réseau local vers Internet.
-A FORWARD -i br0 -j ACCEPT
#Permet aux sessions établies du côté du réseau local de passer par le serveur.
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#Rejetez les communications qui ne font partie ni des deux premiers.
-A FORWARD -j REJECT --reject-with icmp-host-unreachable
# 192.168.0.0/Empêche la communication pendant 24 heures de sortir sur Internet.
-A OUTPUT -o ppp0 -d 192.168.0.0/24 -j DROP
#Autorisez la connexion SSH.
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT
#Ceci est le tableau lorsque le réseau local sort sur Internet
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
#La communication du réseau local vers Internet est attribuée et communiquée de manière dynamique par iptables.
#Lorsqu'il est réglé sur SNAT, une valeur constante est toujours utilisée.
-A POSTROUTING -o ppp0 -j MASQUERADE
Une fois les paramètres définis, démarrez iptables avec la commande suivante et activez le démarrage automatique.
systemctl enable iptables
systemctl restart iptables
Puisqu'il s'agit d'un décret, il y a des moments où je veux que les périphériques réseau ouvrent dynamiquement des ports avec uPNP. Par conséquent, installez miniupnpd afin que le routeur puisse ouvrir dynamiquement les ports en réponse aux demandes du réseau local.
pacman -S miniupnpd
Le fichier de configuration est "/etc/miniupnpd/miniupnpd.conf".
#Spécifie l'interface externe
ext_ifname=ppp0
#Spécifie l'interface interne
listening_ip=br0
#Fichier de socket(Dossier de communication interne)Spécifiez l'emplacement de.
minissdpdsocket=/var/run/minissdpd.sock
secure_mode=no
system_uptime=yes
notify_interval=60
clean_ruleset_interval=600
uuid=00000000-0000-0000-0000-000000000000
#Spécifie le réseau qui autorise upnp
allow 1024-65535 192.168.0.0/24 1024-65535
deny 0-65535 0.0.0.0/0 0-65535
Une fois les paramètres définis, démarrez miniupnpd avec la commande suivante et activez le démarrage automatique.
systemctl enable miniupnpd
systemctl restart miniupnpd