差異處
這裏顯示兩個版本的差異處。
下次修改 | 前次修改 | ||
linux:network:ipv6:ping:problem_on_centos7.3 [2018/01/14 00:58] tony 建立 |
linux:network:ipv6:ping:problem_on_centos7.3 [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
- | {{tag>ipv6 }} | + | {{tag>ipv6 ping6 linux centos7}} |
====== ping ipv6在CentOS7.3上的問題 ====== | ====== ping ipv6在CentOS7.3上的問題 ====== | ||
===== Problem ===== | ===== Problem ===== | ||
行 7: | 行 7: | ||
ping6 fe80::28e8:eeea:c9c2:4f04 -I eno1 | ping6 fe80::28e8:eeea:c9c2:4f04 -I eno1 | ||
</code> | </code> | ||
- | 否則會出現錯誤訊息connect: invalid argument;然而在CentOS/RHEL7.3系統上,卻不需要加上網卡名稱就能夠執行指令。 | + | 否則會出現錯誤訊息connect: invalid argument;然而在CentOS/RHEL7.3系統上,卻不需要加上網卡名稱就能夠執行指令。本篇文章主要分享我針對這問題的實驗結果。 |
===== How to resolve? ===== | ===== How to resolve? ===== | ||
首先我透過ping6 -V指令,查詢不同linux中ping的版本:\\ | 首先我透過ping6 -V指令,查詢不同linux中ping的版本:\\ | ||
{{:linux:network:ipv6:ping:ping_version.png|}}\\ | {{:linux:network:ipv6:ping:ping_version.png|}}\\ | ||
- | 可以發現,RHEL7.3使用了20160308的版本。 | + | 可以發現RHEL7.3使用了20160308的版本,這有可能是新版本支援自動偵測的功能。\\ |
+ | \\ | ||
+ | 後來用yum更新了Centos7.2中的iputils套件到20160308-10,卻一樣需要加上網卡名稱才能ping link-local;最後注意到如果使用RHEL/Centos7.3自帶的iputils rpm,就不需要加網卡名稱。我仔細看發現它的版本是20160308-8。假如是自動偵測的話,為什麼較新的版本卻沒有這樣的功能呢?\\ | ||
+ | \\ | ||
+ | 後來我在測試多網卡的情況時,發現了以下現象:\\ | ||
+ | {{:linux:network:ipv6:ping:ping_i_bug_on_centos7.3.png|}}\\ | ||
+ | -I參數指定網卡名稱沒作用。以我的例子來說,我指定了eno1,但它卻使用eno2去ping目標位置;我改透過以下指令才真的有使用eno1去ping目標位置: | ||
+ | <code bash> | ||
+ | ping6 fe80::1c23:4c59:72c5:f929%eno1 -c 2 | ||
+ | </code> | ||
+ | {{:linux:network:ipv6:ping:ping6_with_interface_by_percentage.png|}}\\ | ||
+ | \\ | ||
+ | 因此我推測在20160308那天,應該build了20160308-8與20160308-10兩個版本,而20160308-8是有問題的。這只是推測,對我們來說,我只需要一個可靠的方法就好;因此,對於ping ipv6比較安全的作法我會使用%而不使用-I: | ||
+ | <code bash> | ||
+ | ping6 [ipv6_addr]%[nic_name] | ||
+ | </code> | ||
+ | 有些人可能會使用ping加上-6取代ping6,但必須注意在比較舊的系統可能不支援這種方式。 | ||
+ | ===== ===== | ||
+ | ---- | ||
+ | \\ | ||
+ | ~~DISQUS~~ |