
WiFiネットワークカードはありますが、物理イーサネットネットワークカード(wlan0はありますがeth0はありません)を持たないDell XPS 13ウルトラブックがあります。 NFSでVagrantを使用するには、仮想アダプタを作成する必要があり、一般的なアダプタがifup eth0:1...
失敗することがわかりましたignoring unknown interface eth0:1=eth0:1
。仮想インターフェイスも作成しましたが、wlan0
同じ結果が得られました。
物理インターフェイスなしでマシンに仮想インターフェイスを作成するには?
答え1
仮想インターフェイスの設定
ネットワークインターフェイスを作成したいが、物理ネットワークカードのサポートがない場合は、仮想リンクタイプを使用できます。これについての詳細はこちらでご覧いただけます。iproute2 ウィキペディアページ。
eth10の作成
このインターフェイスを作成する前に、仮想カーネルモジュールがロードされていることを確認する必要があります。次のことができます。
$ sudo lsmod | grep dummy
$ sudo modprobe dummy
$ sudo lsmod | grep dummy
dummy 12960 0
これでドライバがロードされたので、必要な仮想ネットワークインターフェイスを作成できます。
$ sudo ip link add eth10 type dummy
メモ:以前のバージョンではip
上記のように行いましたが、その過程で状況が変わったようです。参考のためだけにここに保管しましたが、コメントのフィードバックに基づいて上記の内容が機能します。
$ sudo ip link set name eth10 dev dummy0
そして確認してください:
$ ip link show eth10
6: eth10: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default
link/ether c6:ad:af:42:80:45 brd ff:ff:ff:ff:ff:ff
MACアドレスの変更
必要に応じてMACアドレスを変更できます。
$ sudo ifconfig eth10 hw ether 00:22:22:ff:ff:ff
$ ip link show eth10
6: eth10: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default
link/ether 00:22:22:ff:ff:ff brd ff:ff:ff:ff:ff:ff
エイリアスの作成
その後、eth10の上にエイリアスを作成できます。
$ sudo ip addr add 192.168.100.199/24 brd + dev eth10 label eth10:0
次のように確認してください。
$ ifconfig -a eth10
eth10: flags=130<BROADCAST,NOARP> mtu 1500
ether 00:22:22:ff:ff:ff txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
$ ifconfig -a eth10:0
eth10:0: flags=130<BROADCAST,NOARP> mtu 1500
inet 192.168.100.199 netmask 255.255.255.0 broadcast 192.168.100.255
ether 00:22:22:ff:ff:ff txqueuelen 0 (Ethernet)
または以下を使用してくださいip
。
$ ip a | grep -w inet
inet 127.0.0.1/8 scope host lo
inet 192.168.1.20/24 brd 192.168.1.255 scope global wlp3s0
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
inet 192.168.100.199/24 brd 192.168.100.255 scope global eth10:0
すべて削除しますか?
これらすべてのブロックを解除するには、次のコマンドを実行します。
$ sudo ip addr del 192.168.100.199/24 brd + dev eth10 label eth10:0
$ sudo ip link delete eth10 type dummy
$ sudo rmmod dummy
引用する
答え2
次のコマンドを使用して仮想インターフェイスを作成できます。IP ルート 2ツールキット。
ip link add veth0 type veth peer name veth1
これにより、2つのインタフェースが作成され、veth0
それをveth1
パイプの2つの端として扱います。送信されたトラフィックはすべてveth0
出てveth1
、その逆も同様です。
トラフィックをルーティングするには、次の手順を実行できます。
sysctl -w net.ipv4.conf.veth0.forwarding=1
これは、カーネルにveth0
(従ってveth1
使用されるエンドポイントに対して)着信トラフィックを転送するように指示します。
veth0
別のオプションは、他のインターフェイスのブリッジを設定することです。仮想インターフェイスを通過するすべてのトラフィックは、まるでコンピュータがスイッチとして機能するかのようにネットワークにルーティングされます。
このトラフィックで行うことができる他のタスク(仮面舞踏会、リダイレクト、DNATなど)がたくさんありますが、実行したいタスクによって異なります。
解体してください:
ip link del veth0
答え3
Linuxへの仮想(仮想)インターフェースデバイスの追加
...そして、コマンドの紹介ip address
とIPアドレスとネットマスクの追加と削除について説明します。
Ubuntu 18.04と22.04でテストされました。
クイックサマリー
簡潔なバージョン:
# create a virtual `eth_dummy` interface
sudo ip link add eth_dummy type dummy
# Add some required IPs and netmasks to it
sudo ip address add 10.0.0.1/24 dev eth_dummy
sudo ip address add 192.168.2.1/24 dev eth_dummy
sudo ip address add 200.201.202.203/24 dev eth_dummy
# view it
ip a
# delete it when all done using the interface and running your tests
sudo ip link delete eth_dummy
もう少し詳細なバージョンは次のとおりです。
# See all network interface devices and their IPs and netmasks
ip address
ip a # Or (same thing) short version
# Create a virtual (dummy) interface named `eth_dummy`.
sudo ip link add eth_dummy type dummy
# see that it exists now
ip a
# Give it 3 IP addresses with netmask `/24` (255.255.255.0)
sudo ip address add 10.0.0.1/24 dev eth_dummy
sudo ip address add 192.168.2.1/24 dev eth_dummy
sudo ip address add 200.201.202.203/24 dev eth_dummy
# See that it has these 3 IP addresses with netmask `/24` now
ip a
# Delete `200.201.202.203/24` on the `eth_dummy` virtual (dummy) interface
sudo ip address del 200.201.202.203/24 dev eth_dummy
# See that the above IP is gone now
ip a
# Delete the whole `eth_dummy` interface
sudo ip link delete eth_dummy
# See that it is gone now
ip a
詳細
1. 基本知識
仮想(仮想)アダプタ/インタフェースデバイスの作成
# 1. Install the "dummy" socket interface Linux kernel module. sudo modprobe dummy # 2. Ensure the "dummy" Linux kernel module is installed. sudo lsmod | grep dummy # 3. View all existing socket interfaces/adapters, whether WiFi, Ethernet, # or virtual (dummy) ip address ip a # or (short version of the command above) # 4. Create a virtual (dummy) interface named `eth_dummy`. sudo ip link add eth_dummy type dummy # 5. View it. You'll now see "eth_dummy" as one of your attached interfaces. ip address # 6. Add an IP address and netmask to this new dummy interface. Use any IP # address and netmask you like. Ex: `10.0.0.1/24` in this case. # - Note that the `/24` means that the first (most-significant, or # left-most) 24 bits of the 32-bit netmask will be set to 1's. This # (`/24`) is the same as `255.255.255.0`. See below for details and a # full list of possible netmasks. # - See `ip address help` for command syntax help. sudo ip address add 10.0.0.1/24 dev eth_dummy # 7. See the newly-created device and the IP address you just # assigned to it. ip address
それだけです!
インターフェイスにIPアドレスを追加します。
ネットワークインターフェイスにIPアドレスを任意の数だけ追加できます。
ソケットを使用して複数の異なるIPアドレスを同時に受信(バインドおよび受信)する場合は、そのアドレスをすべてこの仮想インターフェイスに簡単に追加できます。
ここに適切と思われるIPアドレスとネットマスクを2つ追加しました。
sudo ip address add 192.168.2.1/24 dev eth_dummy sudo ip address add 10.5.4.1/8 dev eth_dummy
ip address
eth_dummy
私のvirtual()インターフェースの次の内容が表示されますtype dummy
。したがって、C、C++、PythonなどのソケットをこのインタフェースのIPアドレス、、、および10.0.0.1
に192.168.2.1
バインドできます。10.5.4.1
これは、実際のネットワークスイッチをコンピュータに接続せずにネットワークをテストし、発信パケットをシミュレートする必要がある場合の飛行機旅行に適しています。 (私はこの記事を書いている間飛行機にいます。確かにこれは私を「マイルの高さ」に置きます。」コーディングクラブ)。10: eth_dummy: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 4a:e7:bc:8f:2e:2d brd ff:ff:ff:ff:ff:ff inet 10.0.0.1/24 scope global eth_dummy valid_lft forever preferred_lft forever inet 192.168.2.1/24 scope global eth_dummy valid_lft forever preferred_lft forever inet 10.5.4.1/8 scope global eth_dummy valid_lft forever preferred_lft forever
インターフェイスから既存のIPアドレスを削除または更新します。
インターフェイスの既存のIPアドレスを変更するには、そのアドレスを削除して再度追加する必要があります。コマンドは
ip address change
まったく異なる問題です。既存のIPアドレスのフラグ/設定パラメータを変更します。。したがって、次のようにインターフェイスから IP アドレスを削除して再度追加します。# general form sudo ip address del <current_ip_address> dev <interface_device_name> sudo ip address add <new_ip_address> dev <interface_device_name> # Example: change `10.5.4.1/8` above to `32.42.52.62/28` sudo ip address del 10.5.4.1/8 dev eth_dummy sudo ip address add 32.42.52.62/28 dev eth_dummy # verify the change ip address
仮想インターフェイスデバイス全体を削除します。
# 1. Delete this `eth_dummy` dummy device you created. sudo ip link delete eth_dummy # 2. Ensure 'eth_dummy' is deleted and doesn't show up here now. ip address
完璧!
ip address add
and type コマンドの詳細については、ip address change
次を参照してください。
ip address help
、また:- この答えは次のとおりです。サーバーエラー:「ip addrchange」および「ipaddrreplace」コマンドの理解。
2. 非標準フォーム
私は観察した、@MartinがServerFaultでやったように、それ:
私はそうするか、または
ip addr change 10.11.12.6/24 dev eth0
に追加しますip addr replace 10.11.12.6/24 dev eth0
。10.11.12.6
eth0
もそうですip addr add 10.11.12.6/24 dev eth0
。
だからあなたもできます次へ追加ip address change
ip address replace
インターフェイスに新しいIPアドレスを使用するか、代わりに追加してくださいip address add
。しかし、これをしないでください。本当に混乱しています。このadd
コマンドの目的は次へ追加新しいIPアドレス、change
このコマンドの目的は次のとおりです。変化既存のIPアドレスの設定フラグです。実際にもchange
そうです。いいえIP アドレス自体を更新または変更します。これを行うには、まずdel
既存のIPアドレスを削除してから、add
新しいIPアドレスを追加します。実際にそれが何のreplace
ために使われるのか、何と関連があるのか知っている人は誰もいないようですchange
。ソースコードは私が考える答えを提供します。
技術的には、すべて同じことを行います。
# add IP address 10.11.12.6/24
sudo ip address add 10.11.12.6/24 dev eth_dummy # standard way to add this IP (recommended)
sudo ip address change 10.11.12.6/24 dev eth_dummy # non-standard way to add this IP
sudo ip address replace 10.11.12.6/24 dev eth_dummy # non-standard way to add this IP
コマンドの末尾にIPアドレスを入れることもできますが、これも非標準形式です。ip address help
ディスプレイIP(例IFADDR
:「インターフェースアドレス」)の発売予定今後この言葉dev
。したがって、以下は代替形式です。
sudo ip address add 10.11.12.6/24 dev eth_dummy # standard way to add this IP (recommended)
sudo ip address add dev eth_dummy 10.11.12.6/24 # non-standard way to add this IP
そして単語全体を入力する必要もありませんaddress
。このコマンドは、特定のパラメーターip
を確認した後にこの場所から始まる他のパラメーターがないため、そのパラメーターを受け入れるのに十分スマートです。したがって、これらはすべて機能します。address
ip
a
sudo ip address add 10.11.12.6/24 dev eth_dummy # standard form
# "short", non-standard forms:
sudo ip addres add 10.11.12.6/24 dev eth_dummy
sudo ip addre add 10.11.12.6/24 dev eth_dummy
sudo ip addr add 10.11.12.6/24 dev eth_dummy
sudo ip add add 10.11.12.6/24 dev eth_dummy # yeah that's confusing: `add add...`
sudo ip ad add 10.11.12.6/24 dev eth_dummy
sudo ip a add 10.11.12.6/24 dev eth_dummy
/number
最後に、ネットワークマスクを指定する最後の部分を忘れないでください。以下を考慮してください。
# This:
sudo ip address add 10.11.12.6 dev eth_dummy
# Defaults to this, which isn't very useful
sudo ip address add 10.11.12.6/32 dev eth_dummy
# So, remember to specify your own useful netmask, such as
# `/24` (255.255.255.0), instead, like this:
sudo ip address add 10.11.12.6/24 dev eth_dummy
3. ネットマスク
以下は、IPアドレスとネットワークマスクがに設定されている場合の可能なネットワークマスクの完全なリストip/netmask
です10.0.0.1/24
。これが意味するのは、32ビットネットマスクの最初の(最も重要な、または最も左の)24ビットがs/24
に設定されていることです。1
ネットマスクは/24
と同じです255.255.255.0
。
可能なネットマスクの完全なリストは次のとおりです。
フルバイトネットマスク:
/32 = 255.255.255.255
/24 = 255.255.255.0 # <== most common
/16 = 255.255.0.0
/8 = 255.0.0.0
/0 = 0.0.0.0 # (I don't even know if this is a valid option)
すべてのネットマスク:
/32 = 255.255.255.255
/31 = 255.255.255.254
/30 = 255.255.255.252
/29 = 255.255.255.248
/28 = 255.255.255.240
/27 = 255.255.255.224
/26 = 255.255.255.192
/25 = 255.255.255.128
/24 = 255.255.255.0 # <== most common
/23 = 255.255.254.0
/22 = 255.255.252.0
/21 = 255.255.248.0
/20 = 255.255.240.0
/19 = 255.255.224.0
/18 = 255.255.192.0
/17 = 255.255.128.0
/16 = 255.255.0.0
/15 = 255.254.0.0
/14 = 255.252.0.0
/13 = 255.248.0.0
/12 = 255.240.0.0
/11 = 255.224.0.0
/10 = 255.192.0.0
/9 = 255.128.0.0
/8 = 255.0.0.0
/7 = 254.0.0.0
/6 = 252.0.0.0
/5 = 248.0.0.0
/4 = 240.0.0.0
/3 = 224.0.0.0
/2 = 192.0.0.0
/1 = 128.0.0.0
/0 = 0.0.0.0 # (I don't even know if this is a valid option)
4. 詳細
lsmod
「Linuxカーネルのモジュールステータス」を表示します(参考資料を参照man lsmod
)。試してみてください!ただ入力してください
lsmod
モジュールの1つdummy
があるかどうかを見てみましょう。
$ lsmod | grep dummy
dummy 16384 0
はい、そこにいます。いいね Linux カーネルモジュール〜しなければならない上記のコマンドを実行して、sudo ip link add eth_dummy type dummy
カーネルモジュールを使用して仮想インターフェイスを作成できますdummy
。ない場合は参照してください@slmの答え。
新しい仮想インターフェイスを作成する前に、次のコマンドを実行して既存のIPアドレスとインターフェイスを確認してください。
ip address
以下を見ることもできます。
ifconfig
新しい仮想インターフェイスが作成されると、上記のコマンドのip address
出力に表示されます。注:ifconfig
作成した仮想仮想デバイスは表示されない場合がありますが、表示されますip address
。
ちょっと待ってください。しかし、私の同僚は代わりsudo ip addr change 10.0.0.1 dev eth_dummy
に実行しましたsudo ip address change 10.0.0.1 dev eth_dummy
(addr
代わりに通知を受け取りましたaddress
)。または逃げた可能性がありますsudo ip a change 10.0.0.1 dev eth_dummy
(a
代わりに通知address
)。それが問題です! ?
さて、この特定のコマンドには、ユーザーが何を意味するのかを確実に知るのに十分な文字しか必要ありません。つまり、他のコマンドを意味できないことがわかるほど、コマンドに十分な文字がある場合は、そのコマンドを受け入れます。ip
文字で始まるので、それa
以降の他のサブコマンドではip a
十分ではありません。したがって、次のコマンドはすべて同じです。
ip address
ip addres
ip addre
ip addr
ip add
ip ad
ip a
help
情報を共有してメニューとページを表示するときは、この奇妙な点に注意してくださいman
(下記参照)。そうでなければ、あなたは私と同じように混乱しているかもしれませんが、どんなに一生懸命検索しても、このページのどこにもリストされているa
(のようなip a
)または(のような)コマンドが見つかりませんaddr
。ip addr
両方の略語であることだけを知っておいてくださいaddress
。あ…今まさにそこヘルプページから!
$ ip help
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
where OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |
tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila |
vrf | sr }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
-h[uman-readable] | -iec |
-f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link } |
-4 | -6 | -I | -D | -B | -0 |
-l[oops] { maximum-addr-flush-attempts } | -br[ief] |
-o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |
-rc[vbuf] [size] | -n[etns] name | -a[ll] | -c[olor]}
```
And you can run `ip address help` (or `man ip address`), _to see the existence of the `ip address add` and `ip address change` commands!_:
```bash
$ ip address help
Usage: ip address {add|change|replace} IFADDR dev IFNAME [ LIFETIME ]
[ CONFFLAG-LIST ]
ip address del IFADDR dev IFNAME [mngtmpaddr]
ip address {save|flush} [ dev IFNAME ] [ scope SCOPE-ID ]
[ to PREFIX ] [ FLAG-LIST ] [ label LABEL ] [up]
ip address [ show [ dev IFNAME ] [ scope SCOPE-ID ] [ master DEVICE ]
[ type TYPE ] [ to PREFIX ] [ FLAG-LIST ]
[ label LABEL ] [up] [ vrf NAME ] ]
ip address {showdump|restore}
IFADDR := PREFIX | ADDR peer PREFIX
[ broadcast ADDR ] [ anycast ADDR ]
[ label IFNAME ] [ scope SCOPE-ID ]
SCOPE-ID := [ host | link | global | NUMBER ]
FLAG-LIST := [ FLAG-LIST ] FLAG
FLAG := [ permanent | dynamic | secondary | primary |
[-]tentative | [-]deprecated | [-]dadfailed | temporary |
CONFFLAG-LIST ]
CONFFLAG-LIST := [ CONFFLAG-LIST ] CONFFLAG
CONFFLAG := [ home | nodad | mngtmpaddr | noprefixroute | autojoin ]
LIFETIME := [ valid_lft LFT ] [ preferred_lft LFT ]
LFT := forever | SECONDS
TYPE := { vlan | veth | vcan | vxcan | dummy | ifb | macvlan | macvtap |
bridge | bond | ipoib | ip6tnl | ipip | sit | vxlan | lowpan |
gre | gretap | erspan | ip6gre | ip6gretap | ip6erspan | vti |
nlmon | can | bond_slave | ipvlan | geneve | bridge_slave |
hsr | macsec
引用する
- @slmの答えはここにあります
ip help
man ip
ip link help
man ip link
ip address help
man ip address
- サーバーエラー:「ip addrchange」および「ipaddrreplace」コマンドの理解
ip address add
ip address change
- 、、、、、ip address replace
の違いを理解するのに非常に便利ですip address del
。