ネットワーク概要

Linux ネットワーク設定(せってい)管理(かんり)

Network Interface Configuration

ネットワークインターフェース確認(かくにん)

# ip コマンドを使用(推奨)
ip addr show
ip a

# ifconfig を使用(従来)
ifconfig
ifconfig eth0

インターフェースの有効化(ゆうこうか) /無効化(むこうか)

# ip を使用
ip link set eth0 up
ip link set eth0 down

# ifconfig を使用
ifconfig eth0 up
ifconfig eth0 down

IP アドレス設定(せってい)

# 一時的に IP を設定
ip addr add 192.168.1.100/24 dev eth0

# IP を削除
ip addr del 192.168.1.100/24 dev eth0

# ifconfig を使用
ifconfig eth0 192.168.1.100 netmask 255.255.255.0

Routing Table(ルーティングテーブル)

ルート確認(かくにん)

# ip を使用
ip route show
ip r

# route を使用
route -n

# 特定のルートを確認
ip route get 8.8.8.8

ルート設定(せってい)

# デフォルトゲートウェイを追加
ip route add default via 192.168.1.1

# 特定のルートを追加
ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0

# ルートを削除
ip route del 10.0.0.0/8

Linux ホストをルーターとして設定(せってい)

Linux ホストをルーターとして設定(せってい) し、パケットを転送(てんそう) します。

IP Forwarding の有効化(ゆうこうか)

# 一時的に有効化
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1

# 永続的に有効化
# /etc/sysctl.conf を編集
net.ipv4.ip_forward=1

# 設定を適用
sysctl -p

NAT (Network Address Translation)

iptables で NAT を設定(せってい)

# NAT を有効化 (MASQUERADE)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# 転送を許可
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

# ルールを保存
iptables-save > /etc/iptables/rules.v4

DNS Configuration

/etc/resolv.conf

DNS 解決(かいけつ) 設定(せってい) ファイル:

# DNS サーバーを編集
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 1.1.1.1

# 検索ドメイン
search example.com

DNS 照会(しょうかい) ツール

# nslookup
nslookup google.com
nslookup google.com 8.8.8.8

# dig(より詳細)
dig google.com
dig @8.8.8.8 google.com
dig +short google.com

# host
host google.com

Firewall(ファイアウォール)

iptables

Linux カーネルファイアウォールツール。

基本(きほん) 概念(がいねん)

Tables(テーブル)
├── filter(パケットフィルタリング)- デフォルトテーブル
│   ├── INPUT(受信)
│   ├── FORWARD(転送)
│   └── OUTPUT(送信)
├── nat(ネットワークアドレス変換)
│   ├── PREROUTING
│   ├── POSTROUTING
│   └── OUTPUT
└── mangle(パケット修正)

常用(じょうよう) ルール

# ルールを確認
iptables -L -n -v
iptables -t nat -L -n -v

# SSH を許可 (port 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# HTTP/HTTPS を許可
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 確立された接続を許可
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# loopback を許可
iptables -A INPUT -i lo -j ACCEPT

# デフォルトで拒否
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

ufw (Uncomplicated Firewall)

Ubuntu 簡易(かんい) ファイアウォール:

# ファイアウォールを有効化
ufw enable

# サービスを許可
ufw allow ssh
ufw allow 80/tcp
ufw allow 443/tcp

# 拒否
ufw deny 23/tcp

# 状態を確認
ufw status verbose

Network Namespaces

ネットワーク名前(なまえ) 空間(くうかん) 、ネットワーク分離(ぶんり)使用(しよう)

作成(さくせい)管理(かんり)

# namespace を作成
ip netns add ns1

# namespace を一覧表示
ip netns list

# namespace 内でコマンドを実行
ip netns exec ns1 ip addr

# namespace を削除
ip netns del ns1

Network Monitoring

接続(せつぞく) 監視(かんし)

# すべての接続を確認
netstat -tunlp
ss -tunlp

# リスニングポートを確認
netstat -tlnp
ss -tlnp

# 確立された接続を確認
netstat -tan
ss -tan

# リアルタイムで接続を監視
watch -n 1 'ss -tan'

Network Testing

接続(せつぞく) テスト

# ping - ICMP テスト
ping -c 4 8.8.8.8
ping6 -c 4 2001:4860:4860::8888

# traceroute - ルート追跡
traceroute google.com
traceroute -n google.com          # ホスト名を解決しない

# mtr - 継続的な追跡
mtr google.com

ポートスキャン

# nc (netcat)
nc -zv 192.168.1.100 22           # 単一ポートをテスト
nc -zv 192.168.1.100 20-25        # ポート範囲をスキャン

# telnet
telnet 192.168.1.100 80

# nmap(インストールが必要)
nmap 192.168.1.100
nmap -p 1-1000 192.168.1.100