ネットワーク概要
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 downIP アドレス設定
# 一時的に 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.0Routing 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/8Linux ホストをルーターとして設定
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 -pNAT (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.v4DNS Configuration
/etc/resolv.conf
DNS 解決 設定 ファイル:
# DNS サーバーを編集
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 1.1.1.1
# 検索ドメイン
search example.comDNS 照会 ツール
# 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.comFirewall(ファイアウォール)
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 ACCEPTufw (Uncomplicated Firewall)
Ubuntu 簡易 ファイアウォール:
# ファイアウォールを有効化
ufw enable
# サービスを許可
ufw allow ssh
ufw allow 80/tcp
ufw allow 443/tcp
# 拒否
ufw deny 23/tcp
# 状態を確認
ufw status verboseNetwork Namespaces
ネットワーク名前 空間 、ネットワーク分離 に使用 。
作成 と管理
# namespace を作成
ip netns add ns1
# namespace を一覧表示
ip netns list
# namespace 内でコマンドを実行
ip netns exec ns1 ip addr
# namespace を削除
ip netns del ns1Network 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