CentOS下開啟IPv6


CentOS新版本均正常開啟了IPv6,如果沒有開啟,可以按以下方式開啟:

開啟服務器的IPV6服務
# 打開配置文件
[root@CentOS ~]# vi /etc/sysctl.conf
# 修改為下面的狀態
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
 
#生效IPv6配置
[root@CentOS ~]# sysctl -p
 
 
 
配置網卡
[root@CentOS ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
#設置IPv6地址
IPV6INIT="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy" 見附1《IPV6詳解:Stable Privacy Address》
IPV6ADDR=2001:250:4000:2000::53
IPV6_DEFAULTGW=2001:250:4000:2000::1
 
 
[root@CentOS7-1 ~]# ip a
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:55:f1:11 brd ff:ff:ff:ff:ff:ff
inet 192.168.8.200/24 brd 192.168.8.255 scope global noprefixroute enp0s3
valid_lft forever preferred_lft forever
inet6 2003:250:4000:2000::53/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe55:f111/64 scope link noprefixroute
valid_lft forever preferred_lft forever
 
網卡配置文件參數描述
DEVICE:網卡名稱
HWADDR:物理mac地址
TYPE:網絡類型
UUID:網卡唯一標識
ONBOOT:開機或者重啟是否重啟網卡
NM_CONTROLLED:是否受network程序管理
BOOTPROTO:網卡獲取ip地址方式:none dhcp static
IPADDR:設置ip
DATEWAY:設置網關
NETMASK:子網掩碼
USERCTL:普通用戶是否可以控制網卡
DNS:域名解析服務
 
附1:IPV6詳解 Stable Privacy Address
 
參考資料:RFC7217
本文主要介紹下Stable Privacy Address,目前在kernel-4.4版本已經引入並且可以使用,默認情況下是關閉的。但是這種類型的地址有一些好處。
兩種常用地址類型
1.全球單播地址Global Unicast Address
    這個地址類似IPV4的公網地址,和全球網絡上的IPV6服務器進行通信就會使用該類型的地址,全球獨一無二。地址格式主要包括以下幾部分:48bit的Global Routing prefix 和16 bit 的subnet ID 還有64 bits的Interface ID,一般情況下對於無狀態地址分配來講,48+16的subnet id 合稱為prefix。
2.鏈路本地地址
這個地址主要是使用在本地鏈路進行通信,一個比較小的范圍,類似於局域網內,這些地址發的包是不可以被路由器轉發的,通常會是一些ICMPv6的封包,這個地址前16bit都是FE80接下來48位設置為全0,后面跟一個interface id(64bit), 也可以按照如下格式進行理解
以上兩種地址是IPV6系統中最常用的兩類地址,可以看到一個比較重要的共同部分那就是64bit的Interface ID, 本文着重來說明一種Interface ID的生成方法
 
Stable Privacy Address 引入
一般情況下,比較常用的生成interface id的方法有EUI-64,以及在Privacy Extensions for Stateless Address Autoconfiguration in IPv6" [RFC4941]中提及的隨機生成的。
對於EUI-64的方法,比較傳統,不過有一下缺點:
 
1. 由於所得的接口標識符是恆定的,產生的IPV6地址可以在多個網絡中被追蹤從而影響用戶的隱私
2. 由於在接口中嵌入底層的鏈路層地址 標識符將導致特定的地址模式,這種模式可能被攻擊者利用,以減少搜索空間時執行地址掃描攻擊[ ipv6-recon ]。
3. 在接口中嵌入底層硬件地址,標識符泄漏可能引入攻擊
4. 硬件地址的改變將導致地址的改變
既然目前的傳統的方案有弊端,也會有一些新的方法會出現,這種就是要介紹的更加stable的地址,重點是interface id的生成方法,那設計這種方法的目標:
 
1. 在相同的子網中,分配得到一樣的prefix,interface id 保持穩定不變 , 可以說一個prefix 一個interface id, 在相同的子網,相同的prefix下,會生成相同的interface id
2. 配置為不同的prefix , interface id 必須改變, 這意味着,給出兩個由本文檔中指定的方法產生的地址必須很難讓攻擊者知道地址是否已由同一主機產生。
3. 對外面的設備或者攻擊者來說,預測生成什么樣的標示符是非常困難的
4. 依賴於具體的實現方法,interface id 與 HW mac沒什么關系.
5. 這種方法僅是基於硬件產生inteface id 方法的一種替代方法,也就是,這個文檔沒有反對或者淘汰過其他的interface id生成方法,他可以適用於所有的SLAAC配置的穩定(即非臨時)IPv6地址 ,包括全局,鏈路本地,和獨特的本地IPv6地址。
如何計算Interface id
在RFC7217中提供了一個算法 :RID = F(Prefix, Net_Iface, Network_ID, DAD_Counter, secret_key)
 
從公式來看這個interface id的輸出與 prefix,net_iface, network_id, dad_counter, secret_key有關系,先來介紹下這個變量的意義
1. prefix : 地址前綴,RA 攜帶的prefix 或者link-local單播的prefix
2. net_iface: 一般情況下使用MAC地址表示net_iface
3. network_id: 一些網絡特定的數據,確定接口依附於這個子網,在Linux kernel系統中並沒有使用這個選項
4. dad_counter:用來解決DAD沖突的計數器,它必須被初始化為0,新地址沖突就會遞增
5. secret_key: 一個攻擊者不知道的秘鑰 ,秘密密鑰應該至少有128位 它必須被初始化為一個偽隨機數
6. F偽隨機函數,必須不能被外面計算出來,也必須非常難逆轉,拒絕獲取secret_key, 及時給予output的樣板和輸入的參數,F()應該產生一個至少64bit的輸出,也就是說F是計算interface id的算法,在Linux kernel中使用的是基於SHA-1算法,這個算法的詳細信息可以參考文章:IPv6詳解:SHA1算法實現及詳解
 
解決DAD沖突檢查
如果因執行DAD[ rfc4862 ],主機發現生成的地址是一個重復的地址,它應該嘗試使用新的地址來解決沖突:
1.dad_counter遞增1
2.使用新的dad_counter作為參數,產生新的interface id, 繼續進行DAD驗證
 
主機在嘗試新地址之前應該引入0-idgen_delay的延遲,避免多個主機同時進行同步更新,此過程可能會重復多次,直到解決沖突的解決。主機應該至少嘗試idgen_retries次,主機必須限制嘗試(而不是無限期地嘗試一個新的暫定地址,直到沖突解決)暫定地址的數量。
RFC也規定了2個常量:
idgen_retries:默認為3。
idgen_delay:默認為1秒。
 
安全性
這種方法 與其他方法相比 有如下優點:
1 .能夠避免基於IPV6 地址的 主機追蹤 ,當主機從一個網絡移動的另外一個網絡中,prefix或者network id 發生了變化,interface id 也會發生變化
2. 因為接口標識符是比較難預測的,所以會大大削弱 利用推測標識符的地址掃描技術的攻擊
3. 產生的IPv6地址,獨立於底層硬件(如果網卡被換,IPV6地址不變)需要使用一個合適net_iface
4. 防止通過嵌入硬件地址的接口標識符所產生的信息泄漏
5.不會相互影響,不會影響使用其他prefix配置的地址的安全性和私有性
 
 
附2:IPv6網卡配置選項
# Uses following information from "/etc/sysconfig/network":
#  IPV6_DEFAULTDEV=<device>: controls default route (optional)
#  IPV6_DEFAULTGW=<address>: controls default route (optional)
#
# Uses following information from "/etc/sysconfig/network-scripts/ifcfg-$1":
#  IPV6INIT=yes|no: controls IPv6 configuration for this interface
#  IPV6ADDR=<IPv6 address>[/<prefix length>]: specify primary static IPv6 address
#  IPV6ADDR_SECONDARIES="<IPv6 address>[/<prefix length>] ..." (optional)
#  IPV6_ROUTER=yes|no: controls IPv6 autoconfiguration (no: multi-homed interface without routing)
#  IPV6_AUTOCONF=yes|no: controls IPv6 autoconfiguration
#   defaults:
#    IPV6FORWARDING=yes: IPV6_AUTOCONF=no, IPV6_ROUTER=yes
#    IPV6FORWARDING=no: IPV6_AUTOCONF=yes
#  IPV6_MTU=<MTU for IPv6>: controls IPv6 MTU for this link (optional)
#  IPV6_PRIVACY="rfc3041": control IPv6 privacy (optional)
#    This script only supports "rfc3041" (if kernel supports it)
#
# Optional for 6to4 tunneling (hardwired name of tunnel device is "tun6to4"):
#  IPV6TO4INIT=yes|no: controls 6to4 tunneling setup
#  IPV6TO4_RELAY=<IPv4 address>: IPv4 address of the remote 6to4 relay (default: 192.88.99.1)
#  IPV6TO4_MTU=<MTU for IPv6>: controls IPv6 MTU for the 6to4 link (optional, default is MTU of interface - 20)
#  IPV6TO4_IPV4ADDR=<IPv4 address>: overwrite local IPv4 address (optional)
#  IPV6TO4_ROUTING="<device>-<suffix>/<prefix length> ...": information to setup additional interfaces
#    Example: IPV6TO4_ROUTING="eth0-:f101::1/64 eth1-:f102::1/64"
#
# Optional for 6to4 tunneling to trigger radvd:
#  IPV6_CONTROL_RADVD=yes|no: controls radvd triggering (optional)
#  IPV6_RADVD_PIDFILE=<file>: PID file of radvd for sending signals, default is "/var/run/radvd/radvd.pid" (optional)
#  IPV6_RADVD_TRIGGER_ACTION=startstop|reload|restart|SIGHUP: how to trigger radvd (optional, default is SIGHUP)
#
#  Required version of radvd to use 6to4 prefix recalculation
#   0.6.2p3 or newer supporting option "Base6to4Interface"
#  Required version of radvd to use dynamic ppp links
#   0.7.0 + fixes or newer
 
PEERDNS="yes" #是否指定DNS。如果使用DHCP協議,默認為yes。
PEERROUTES="yes" #是否把這個eth設置為默認路由。如果使用DHCP協議,默認為yes。
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM