| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「TCP/IP」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
116行目: 116行目:
 
4: ns1-veth0@if3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
 
4: ns1-veth0@if3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
 
     link/ether ca:f0:3b:a9:2a:eb brd ff:ff:ff:ff:ff:ff link-netns ns2
 
     link/ether ca:f0:3b:a9:2a:eb brd ff:ff:ff:ff:ff:ff link-netns ns2
 +
</pre>
 +
*IPアドレスを付与
 +
<pre>
 +
$ sudo ip netns exec ns1 ip address add 192.0.2.1/24 dev ns1-veth0
 +
$ sudo ip netns exec ns2 ip address add 192.0.2.2/24 dev ns2-veth0
 
</pre>
 
</pre>

2022年2月15日 (火) 15:18時点における版

TCP/IP

ip address show


  • inet の後がIPアドレス
  • lo,ens3 はネットワークインターフェース(NICや無線LANアダプタなどを抽象化)
  • IPアドレスはネットワークインターフェースに付与される
  • 127.0.0.1はループバックアドレスで、自分自身を表す
  • ループバックアドレスが付与されているインターフェースはループバックインターフェース
$ ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:97:68:97 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.243/24 brd 192.168.122.255 scope global dynamic ens3
       valid_lft 3189sec preferred_lft 3189sec
    inet6 fe80::5054:ff:fe97:6897/64 scope link 
       valid_lft forever preferred_lft forever

tcpdump パケットキャプチャ


  • -t : 時刻情報出力抑制
  • -n : IP逆引きしない
  • -i : 対象インターフェースを指定 anyで全て
  • icmp : icmp プロトコルに限定
$ sudo tcpdump -tn -i any icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes
IP 192.168.122.243 > 8.8.8.8: ICMP echo request, id 2, seq 1, length 64
IP 8.8.8.8 > 192.168.122.243: ICMP echo reply, id 2, seq 1, length 64
IP 192.168.122.243 > 8.8.8.8: ICMP echo request, id 2, seq 2, length 64
IP 8.8.8.8 > 192.168.122.243: ICMP echo reply, id 2, seq 2, length 64

traceroute


  • パケット通過ルーター
  • TTL : 0-255と解釈される値が入りパケット送出時にノードが初期値を設定、ルーター追加ごとに1つづつ値が減る。経路で値が0になるとルーターにより破棄されるが、この時ルーターは、ICMPで時間切れメッセージを送信元に送る
  •  TTLにあえて小さな値を設定し、TTLを1つづつ増やしたパケットを送信、時間切れをおこした通知を組み立てる
  •  時間切れを通知しないルーター設定は、* となる
$ traceroute typea.info
traceroute to typea.info (160.16.110.88), 64 hops max
  1   192.168.122.1  0.343ms  0.288ms  0.301ms 
  2   192.168.0.1  0.694ms  0.492ms  0.487ms 
  3   210.173.146.32  4.710ms  4.013ms  3.784ms 
  4   210.173.145.69  3.968ms  4.044ms  4.072ms 
  5   210.173.150.97  3.557ms  4.091ms  3.896ms 
  6   210.171.224.113  9.550ms  7.866ms  8.150ms 
  7   *  *  * 
  8   *  *  * 
  9   *  *  * 
 10   *  *  * 
 11   160.16.110.88  11.148ms  12.124ms  12.150ms 

ip route show ルーティングテーブル


  • 複数のルーティングエントリから構成(それぞれの行)
  •  先頭に宛先のIPアドレス
  •  宛先に続くのがネクストホップ(パケットを次に渡す相手)
$ ip route show
default via 192.168.122.1 dev ens3 proto dhcp src 192.168.122.243 metric 100 
192.168.122.0/24 dev ens3 proto kernel scope link src 192.168.122.243 
192.168.122.1 dev ens3 proto dhcp scope link src 192.168.122.243 metric 100 

Network Namespace


$ sudo ip netns add helloworld
$ ip netns list
helloworld
  • ip nets exec
    • 指定したNetwork Namespace環境でコマンドを実行
$ sudo ip netns exec helloworld ip address show
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  • Network Namespaceでシェルも起動できる
$ sudo ip netns exec helloworld bash

ネットワークを作成して接続

  • 2つのNetwork Namespaceを作成
$ sudo ip netns add ns1
$ sudo ip netns add ns2
  • 接続するには、veth(Virtual Ethernet Device)を作成
  • Nework Namespaceに所属させる
$ sudo ip link add ns1-veth0 type veth peer name ns2-veth0
$ sudo ip link set ns1-veth0 netns ns1
$ sudo ip link set ns2-veth0 netns ns2
  • 確認
$ sudo ip netns exec ns1 ip link show
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
4: ns1-veth0@if3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether ca:f0:3b:a9:2a:eb brd ff:ff:ff:ff:ff:ff link-netns ns2
  • IPアドレスを付与
$ sudo ip netns exec ns1 ip address add 192.0.2.1/24 dev ns1-veth0
$ sudo ip netns exec ns2 ip address add 192.0.2.2/24 dev ns2-veth0