有線LANと無線LANを両方同じサブネットに接続しようとしてハマったのでメモがてら。
構成
・Archがインストールされているマシンには無線LANと有線LANの2つのNICがある
・有線LANと無線LANの両方を同じネットワークに接続したい
・有線LANが優先的に使われてほしい
・それぞれ固定IPを振る(DHCPは使用しない)
・netctlのみで管理する
やること
余計なサービスを無効化する
sudo systemctl disable dhcpcd
sudo systemctl disable systemd-resolved
sudo systemctl disable NetworkManager
DNSの設定
/etc/resolv.conf
にDNSサーバのIPを追記
nameserver 8.8.8.8
nameserver 192.168.0.1
# ルーター内蔵DNS
netctlの設定
NICごとにプロファイルをつくる
有線LAN
sudo vim /etc/netctl/ethernet
(新規作成)
Interface=enp1s0
Connection=ethernet
IP=static
AutoWired=yes
Address=('192.168.0.122/24')
Routes=("default via 192.168.0.1 dev enp1s0 src 192.168.0.122")
# DNS=('192.168.0.1')
無線LAN
sudo vim /etc/netctl/wlan0
Description='A simple WPA encrypted wireless connection'
Interface=wlan0
Connection=wireless
Security=wpa
IP=static
Address='192.168.0.121/24'
Routes=("default via 192.168.0.1 dev wlan0 src 192.168.0.121 metric 303")
ESSID='XXXxX'
Key='XXXX'
Routes
で有線LANより高いmetricを指定すると、無線LANの優先度が下がる
(必要であれば)IPv6無効化
sudo vim /etc/sysctl.d/40-ipv6.conf
(新規作成)
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.enp1s0.disable_ipv6 = 1
netctlの各プロファイル有効化
sudo systemctl enable netctl@ethernet
sudo systemctl enable netctl@wlan0
再起動
/etc/netctl/example/
配下にコンフィグの例が置いてあるが、そのとおりだとNICが立ち上がらなかった。
netctlのプロファイルからGateway
およびDNS
を削除したらうまくいった。
確認
- ipアドレス
ip a
- ルート
ip route
- ping
ping google.com
ping -I wlan0 google.com