linux配置禁用啟用IPv6


IPv6被認為是IPv4的替代產品,它用來解決現有IPv4地址空間即將耗盡的問題。
但目前,開啟IPv6可能會導致一些問題。因此有時我們需要關閉IPv6。
下面是IPv6的關閉方法應該適用於所有主流的Linux發行版包括Ubuntu、Debian、CentOS。

 

IPv6在CentOS6.5系統中默認是啟用狀態,通過以下方式可以確認IPv6的狀態

1.1.查看系統IPv6的啟用狀態

以下命令返回值為0表示IPv6啟用,1表示禁用

cat /proc/sys/net/ipv6/conf/all/disable_ipv6
cat /proc/sys/net/ipv6/conf/default/disable_ipv6
ifconfig 
ip address list
netstat -anptl

1.2.查看內核模塊調用

# 有返回結果,說明IPv6模塊已啟用,可以看出那些程序進行了調用,反之沒有啟用

lsmod | grep ipv6

2.禁用IPv6

2.1.臨時禁用IPv6

# 命令行調整內核參數,臨時禁用IPv6

echo 1 >/proc/sys/net/ipv6/conf/all/disable_ipv6
echo 1 >/proc/sys/net/ipv6/conf/default/disable_ipv6
# 或着
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

2.2.永久禁用IPv6

echo " ">>/etc/sysctl.conf
echo "# made for disabled IPv6 in $(date +%F)">>/etc/sysctl.conf
echo 'net.ipv6.conf.all.disable_ipv6 = 1'>>/etc/sysctl.conf
echo 'net.ipv6.conf.default.disable_ipv6 = 1'>>/etc/sysctl.conf
echo 'net.ipv6.conf.lo.disable_ipv6 = 1'>>/etc/sysctl.conf
tail -5 /etc/sysctl.conf
sysctl -p
netstat -anptl

也可以直接編輯系統內核配置文件

vim /etc/sysctl.conf
------------------------------------------------------
# Made for disabled IPv6 .
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
-------------------------------------------------------

# 如果想要為特定的網卡禁止IPv6,比如eth1,改為添加下面的行。

net.ipv6.conf.eth1.disable_ipv6 = 1

# 注意檢查修改network配置文件中的IPv6配置

vim /etc/sysconfig/network
--------------------------------------
NETWORKING_IPV6=no
--------------------------------------

# 注意修改ifcfg-eth0

vim /etc/sysconfig/network-scripts/ifcfg-eth0
----------------------------------
IPV6INIT=no
----------------------------------

2.3.拓展:禁用IPV6后,可能會導致某些服務無法啟動

1)修改ssh配置,只監聽IPv4地址

vim /etc/ssh/sshd_config
----------------------------------------
# 在第15行的前面去掉注釋(#):
ListenAddress 0.0.0.0
AddressFamily inet
----------------------------------------
service sshd restart
netstat -anptl

# 注意:inet為僅IPv4,inet6為僅IPv6,any為都支持

2)mysql配置問題

mysql安裝后默認會監聽IPv6地址,關閉IPv6后,需要編輯,在[mysqld]中添加

vim /etc/my.cnf
----------------------------------------
bind-address=0.0.0.0
----------------------------------------

修改完重啟mysql即可

3)配置redis,監聽IPv4地址

vim  /usr/local/redis/conf/redis.conf
----------------------------------------
bind 127.0.0.1
----------------------------------------

4)配置memcached,監聽IPv4地址

# 配置memcached,監聽地址需要使用IP,使用localhost無法啟動memcached

# memcached
/usr/local/memcached/bin/memcached -u root -p 12001 -l 127.0.0.1 -d -P /tmp/memcached1.pid

5)配置VSFTP

vim /etc/vsftpd/vsftpd.conf
----------------------------------------
listen=YES
listen_ipv6=NO
----------------------------------------

6)配置postfix監聽IPv4地址

vim /etc/postfix/main.cf
----------------------------------------
inet_interfaces = 127.0.0.1
----------------------------------------

7)配置dovecot監聽IPv4地址

vim /etc/dovecot/dovecot.conf
----------------
listen *
----------------

8)配置xinetd

# xinetd.conf第32行修改為:
vim /etc/xinetd.conf 
------------------------
bind            = 0.0.0.0
------------------------
# 重新載入配置文件
service xinetd reload

以上是禁用IPv6之后可能會受到影響的程序,可以根據自己的實際情況進行配置

3.配置啟用IPv6

3.1.查看linux系統的IPv6狀態

cat /proc/sys/net/ipv6/conf/all/disable_ipv6
cat /proc/sys/net/ipv6/conf/default/disable_ipv6

3.2.調整內核參數立即啟用IPv6

echo 0 >/proc/sys/net/ipv6/conf/all/disable_ipv6
echo 0 >/proc/sys/net/ipv6/conf/default/disable_ipv6
# 或着
sysctl -w net.ipv6.conf.all.disable_ipv6=0
sysctl -w net.ipv6.conf.default.disable_ipv6=0

修改完是臨時的,重啟失效

3.3. 修改內核參數,啟用IPv6配置

vim /etc/sysctl.conf
----------------------------------------------
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
----------------------------------------------
sysctl -p

3.4.手動調用系統ipv6內核

modprobe ipv6

3.5.報錯處理

[root@zstest ~]# modprobe ipv6
FATAL: Module off not found.

失敗原因:未啟用IPv6模塊

解決方法:
需要編輯配置文件,啟用IPv6內核模塊,在禁用狀態下無法調用ipv6模塊
該處理需要重啟系統,啟動后ipv6模塊自動調用

vim /etc/modprobe.d/disable_ipv6.conf 
--------------------------------
#alias net-pf-10 off
#alias ipv6 off
options ipv6 disable=0
---------------------------------
[root@zstest ~]# lsmod |grep ipv6                      
ipv6                  335781  14 

 

完畢,呵呵呵呵


免責聲明!

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



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