新聞中心
在Linux系統(tǒng)下,網(wǎng)卡TCP是一個非常重要的網(wǎng)絡(luò)協(xié)議。它可以使計算機(jī)與網(wǎng)絡(luò)中其他設(shè)備進(jìn)行通信,從而實現(xiàn)傳輸數(shù)據(jù)。然而,在一些情況下,禁用網(wǎng)卡TCP是必要的。本文將介紹如何禁用網(wǎng)卡TCP,以及一些禁用網(wǎng)卡TCP的常見原因。

什么是網(wǎng)卡TCP?
網(wǎng)卡TCP是一種協(xié)議(傳輸控制協(xié)議)。它位于網(wǎng)絡(luò)層和應(yīng)用層之間,并負(fù)責(zé)在計算機(jī)之間傳輸數(shù)據(jù)。TCP是一種可靠的協(xié)議,它能夠保證數(shù)據(jù)傳輸?shù)耐暾院蜏?zhǔn)確性。此外,TCP還具有流控制和擁塞控制等功能。
為什么需要禁用網(wǎng)卡TCP?
通常情況下,禁用網(wǎng)卡TCP是不推薦的。然而,在一些情況下,禁用網(wǎng)卡TCP是必要的。以下是一些禁用網(wǎng)卡TCP的常見原因:
1. 攻擊防御:某些惡意軟件可能利用TCP協(xié)議進(jìn)行攻擊。禁用網(wǎng)卡TCP可以防止此類攻擊。
2. 性能優(yōu)化:在一些高性能計算機(jī)集群中,禁用網(wǎng)卡TCP可以提高網(wǎng)絡(luò)吞吐量和響應(yīng)速度。
3. 網(wǎng)絡(luò)管理:在特殊網(wǎng)絡(luò)環(huán)境下,禁用網(wǎng)卡TCP可以更好地管理網(wǎng)絡(luò)流量和資源分配。
如何禁用網(wǎng)卡TCP?
禁用網(wǎng)卡TCP可以通過修改Linux系統(tǒng)內(nèi)核參數(shù)來實現(xiàn)。以下是具體步驟:
1. 打開終端窗口。
2. 輸入以下命令來編輯內(nèi)核參數(shù)文件:
sudo nano /etc/sysctl.conf
3. 找到以下行:
net.ipv4.tcp_enabled = 1
將其改為:
net.ipv4.tcp_enabled = 0
4. 保存并退出文件。
5. 輸入以下命令來使修改立即生效:
sudo sysctl -p
6. 檢查是否成功禁用網(wǎng)卡TCP:
cat /proc/sys/net/ipv4/tcp_enabled
如果輸出為0,則說明成功禁用了網(wǎng)卡TCP。
需要注意的是,禁用網(wǎng)卡TCP可能會對系統(tǒng)的穩(wěn)定性和性能產(chǎn)生影響。因此,在禁用網(wǎng)卡TCP之前,請確保已經(jīng)了解相關(guān)風(fēng)險,并做好必要的備份和恢復(fù)措施。
結(jié)論
禁用網(wǎng)卡TCP是一項非常特殊的操作,需要在特殊情況下使用。在正常情況下,網(wǎng)卡TCP是非常重要的網(wǎng)絡(luò)協(xié)議,它保障了計算機(jī)與網(wǎng)絡(luò)設(shè)備的通信。如果您需要禁用網(wǎng)卡TCP,請確保已經(jīng)了解相關(guān)風(fēng)險,并根據(jù)需要進(jìn)行操作。
相關(guān)問題拓展閱讀:
- 如何在Linux下禁用IPv6
- 暢談linux下TCP(上)
如何在Linux下禁用IPv6
確認(rèn)IPV6是否開啟
在Linux下確認(rèn)IPv6是否已經(jīng)被啟用,可以從三個方面確定。
1. 使用ifconfig查看自己的IP地址是否含有IPv6地址。
eth0 Link encap:Ethernet HWaddr 00:13:D4:05:B2:ED
inet addr:119.119.xxx.xx Bcast:119.119.115.255 Mask:255.255.255.0
inet6 addr: fe80::213:d4ff:fe05:b2ed/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:errors:0 dropped:0 overruns:0 frame:0
TX packets:errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:(330.1 MiB) TX bytes:(235.4 MiB)
Interrupt:209 Base address:0xd800
2.查看服務(wù)監(jiān)聽的IP中是否有IPv6格式的地址。(netstat -tuln)
tcp 0 0 0.0.0.0:8100 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:843 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 :::8080 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 :::443 :::* LISTEN 拿迅
udp 0 0 0.0.0.0:68 戚橘0.0.0.0:*
udp 0 0 0.0.0.0:111 0.0.0.0:*
udp 0 0 0.0.0.0:631 0.0.0.0:*
3.使用lod查看ipv6的模塊是否被加載。
# lod |grep ip
ipt_MASQUERADE 3
iptable_nat
ip_natipt_MASQUERADE,iptable_nat
ip_conntrack_netbios_ns
ipt_REJECT
ip_conntrack81 5 ipt_MASQUERADE,iptable_nat,ip_nat,ip_conntrack_netbios_ns,xt_state
nfnetlinkip_nat,ip_conntrack
iptable_filter 1
ip_tablesiptable_nat,iptable_filter
ip6t_REJECT
ip6table_filter 1
ip6_tablesip6table_filter
x_tablesipt_MASQUERADE,iptable_nat,ipt_REJECT,xt_state,ip_tables,ip6t_REJECT,xt_tcpudp,ip6_tables
ipv8 ip6t_REJECT,cnic
如果出現(xiàn)以上粗消仔此體顯示的部分,代表您的機(jī)器上IPV6已經(jīng)開啟。
關(guān)閉IPV6
使用vi編輯器,打開/etc/modprobe.conf,在文檔中加入如下的兩條:
alias net-pf-10 off
alias ipv6 off
保存退出,并且重新啟動系統(tǒng)。
重啟之后可以使用上面的三種方法去驗證IPv6支持是否已經(jīng)被關(guān)閉。
開啟IPV6
IPv6是默認(rèn)支持的,所以當(dāng)你要重新開起IPv6支持時,將/etc/modprobe.conf中的兩條指令注釋掉就可以了。
IPv6被認(rèn)為是IPv4——互聯(lián)網(wǎng)上的傳統(tǒng)32位地址空間——的替代產(chǎn)品,它用來解決現(xiàn)有IPv4地址空間即將耗盡的問題。然而,由于已經(jīng)有大量主
機(jī)、設(shè)備用IPv4連接到了互聯(lián)網(wǎng)上,所以想在一夜之間將它們?nèi)壳袚Q到IPv6幾乎是不可能的。許多IPv4到IPv6的轉(zhuǎn)換機(jī)制(例如:雙協(xié)議棧、網(wǎng)
絡(luò)隧道、代理)
已經(jīng)被提出來用來促進(jìn)IPv6能被采用,并且很多應(yīng)用也正在進(jìn)行重寫,如我們所提倡的,來增加對IPv6的支持。有一件歷襪事情可以確定,就是在可預(yù)見的未來
里IPv4和IPv6勢必將共存。
理想情況下,向IPv6過渡的進(jìn)程不應(yīng)該被最終的用戶所看見,但是IPv4/IPv6混合環(huán)境有時會讓你碰到各種源于IPv4和IPv6之間不經(jīng)意間
的相互碰撞的問題。舉個例子,你會碰到應(yīng)用程序超時的問題,比如apt-get或ssh嘗試通過IPv6連接失敗、DNS服務(wù)器意外清空了IPv6的
AAAA記錄、或者你支持IPv6的設(shè)備不兼容你的互聯(lián)網(wǎng)服務(wù)提供商遺留下的IPv4網(wǎng)絡(luò),等等等等。
當(dāng)然這不意味著你應(yīng)該盲目地在你的Linux機(jī)器上禁用IPv6。鑒于IPv6許諾的種種好處,作為社會的一份子我們最終還是要充分擁抱它的,但是作為給最終用戶進(jìn)行故障排除過程的一部分,如果IPv6確實是罪魁禍?zhǔn)?,那你可以嘗試去關(guān)閉它。
這里有一些讓你在Linux中部分(例如:對于某個特定的網(wǎng)絡(luò)接口)或全部禁用IPv6的小技巧。這些小貼士應(yīng)該適用于所有主流的Linux發(fā)行版包
括Ubuntu、Debian、Linux Mint、CentOS、Fedora、RHEL以及Arch Linux。
查看IPv6在Linux中是否被啟用
所有現(xiàn)代Linux發(fā)行版默認(rèn)都自動啟用IPv6。為了能看到IPv6在你的Linux中是否被激活,可以使用ifconfig或ip命令。如果你在輸入這些命令巧枯之后看到“inet6”字樣的輸出,那就意味著你的Linux系統(tǒng)啟用了IPv6。
$ ifconfig
$ ip addr
臨時禁用IPv6
如果你想要在你的Linux系統(tǒng)上臨時關(guān)閉IPv6,你可以用 /proc 文件系統(tǒng)?!芭R時”的意思是我們所做的禁用IPv6的更改在系統(tǒng)重啟后將不被保存。IPv6會在你的Linux機(jī)器重啟后再次被啟用。
要將一個特定的網(wǎng)絡(luò)接口禁用IPv6,使用以下命令:
$ sudo sh -c ‘echo 1 》 /proc/sys/net/ipv6/conf/《interface-name》/disable_ipv6’
舉個例子,將eth0接口禁用IPv6:
$ sudo sh -c ‘echo 1 》 /proc/sys/net/ipv6/conf/eth0/disable_ipv6’
重新啟用eth0接口的IPv6:
$ sudo sh -c ‘echo 0 》 /proc/sys/net/ipv6/conf/eth0/disable_ipv6’
如果你想要將整個系統(tǒng)所有接口包括回環(huán)接口禁用IPv6,使用以下命令:
$ sudo sh -c ‘echo 1 》 /proc/sys/net/ipv6/conf/all/disable_ipv6’
永久禁用IPv6
以上方法是不能永久禁用IPv6的,你一旦重啟系統(tǒng)IPv6還是會被啟用。如果你想要永久關(guān)閉它,有幾個方法你可以試試。
方法一
之一種方法是通過 /etc/sysctl.conf 文件對 /proc 進(jìn)行永久修改。
換句話說,就是用文本編輯器打開 /etc/sysctl.conf 然后添加以下內(nèi)容:
# 禁用整個系統(tǒng)所有接口的IPv6
net.ipv6.conf.all.disable_ipv6 = 1
# 禁用某一個指定接口的IPv6(例如:eth0, lo)
net.ipv6.conf.lo.disable_ipv6 = 1
孝爛洞 net.ipv6.conf.eth0.disable_ipv6 = 1
在 /etc/sysctl.conf 使這些更改生效,運行以下命令:
$ sudo sysctl -p /etc/sysctl.conf
或者直接重啟。
方法二
另一個永久禁用IPv6的方法是在開機(jī)的時候傳遞一個必要的內(nèi)核參數(shù)。
用文本編輯器打開 /etc/default/grub 并給GRUBCMDLINELINUX變量添加“ipv6.disable=1”。
$ sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX=“xxxxx ipv6.disable=1”
上面的“xxxxx”代表任何已有的內(nèi)核參數(shù),在它后面添加“ipv6.disable=1”。
最后,不要忘記用以下方法保存對GRUB/GRUB2的修改:
Debian、Ubuntu或Linux Mint系統(tǒng):
$ sudo update-grub
Fedora、CentOS/RHEL系統(tǒng):
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
現(xiàn)在只要你重啟你的Linux系統(tǒng),IPv6就會完全被禁用。
禁用IPv6之后的其它可選步驟
這里有一些在你禁用IPv6后需要考慮的可選步驟,這是因為當(dāng)你在內(nèi)核里禁用IPv6后,其它程序也許仍然會嘗試使用IPv6。在大多數(shù)情況下,應(yīng)用程序的這種行為不太會影響到什么,但是出于效率或安全方面的原因,你可以為他們禁用IPv6。
/etc/hosts
根據(jù)你的設(shè)置, /etc/hosts 會包含一條或多條IPv6的hosts和它們的地址。用文本編輯器打開 /etc/hosts 并注釋掉包含IPv6 hosts的腳本行。
$ sudo vi /etc/hosts
# comment these IPv6 hosts# ::1 ip6-localhost ip6-loopback# fe00::0
ip6-localnet# ff00::0 ip6-mcastprefix# ff02::1 ip6-allnodes# ff02::2
ip6-allrouters
Network Manager
如果你在用NetworkManager來管理你的網(wǎng)絡(luò)設(shè)置,你可以在NetworkManager里禁用IPv6。在NetworkManager
打開wired connection,點擊“IPv6 Settings”選項并在“Method”一欄選擇“Ignore”,保存退出。
SSH服務(wù)
默認(rèn)情況下,OpenSSH服務(wù)(sshd)會去嘗試?yán)塈Pv4和IPv6的地址。
要強(qiáng)制sshd只捆綁IPv4地址,用文本編輯器打開 /etc/ssh/sshd_config 并添加以下行。inet只適用于IPv4,而inet6是適用于IPv6的。
$ sudo vi /etc/ssh/sshd_config
AddressFamily inet
然后重啟sshd服務(wù)。
上面就是Linux禁用IPv6的方法介紹了,你可選擇臨時禁用IPv6或永久禁用IPv6,臨時禁用在系統(tǒng)重啟后IPv6還會被啟用,而永久禁用IPv6則不會出現(xiàn)這個問題。
在配置網(wǎng)卡的配置文件中加入一行參數(shù)就可以了:
暢談linux下TCP(上)
tcp 協(xié)議 是互聯(lián)網(wǎng)中最常用的協(xié)議 , 開發(fā)人員基本上天天和它打交道,對它進(jìn)行深入了解。 可以幫助我們排查定位bug和進(jìn)行程序優(yōu)化。下面我將就TCP幾個點做深入的探討
客戶端:收到 ack 后 分配連接資源。 發(fā)送數(shù)據(jù)
服務(wù)器 : 收到 syn 后立即 分配連接資源
客戶端:收到ACK, 立即分配資源
服務(wù)器:收到ACK, 立即分配資源
既然三次握手也液銀顫不是100%可靠, 那四次,五次,六次。。。呢? 其實都一樣,不管多少次都有丟包問題。
client 只發(fā)送一個 SYN, server 分配一個tcb, 放入syn隊列中。 這時候連接叫
半連接
狀態(tài);如果server 收不到 client 的ACK, 會不停重試 發(fā)送 ACK-SYN 給client 。重試間隔 為 2 的 N 次方 疊加(2^0 , 2^1, 2^2 ….);直至超時才釋放syn隊列中的這個 TCB;
在半連接狀態(tài)下, 一方面會占用隊列配額資源,另一方面占用內(nèi)存資源。我們應(yīng)該讓半連接狀態(tài)存在時間盡可能的小
當(dāng)client 向一個未打開的端口發(fā)起連接請求時,會收到一個RST回復(fù)包
當(dāng)listen 的 backlog 和 somaxconn 都設(shè)置了得時候, 取兩者min值
Recv-Q 是accept 隊列當(dāng)前個數(shù), Send-Q 設(shè)置更大值
這種SYN洪水攻擊是一種常見攻擊方式,就是利用半連接隊列特性,占滿syn 隊列的 資源,導(dǎo)致 client無法連接上。
解決方案:
為什么不像握手那樣合并成三次揮手? 因為和剛開始連接情況,連接是大家都從0開始, 關(guān)閉時有歷史包袱的。server(被動關(guān)閉方) 收到 client(主動關(guān)閉方) 的關(guān)閉請求FIN包。 這時候可能還有未發(fā)送完的數(shù)據(jù),不能丟棄。 所以需要分開。事實可能是這樣
當(dāng)然,在沒有待發(fā)數(shù)據(jù),并且允許 Delay ACK 情況下, FIN-ACK合并還是非常常見的事情,這是三次揮手是可以的。
同上
CLOSE_WAIT 是被動關(guān)閉方才有的狀態(tài)
。
被動關(guān)閉方 到 期間的狀態(tài)為 CLOSE_WAIT, 這個狀態(tài)仍然能發(fā)鬧敗送數(shù)據(jù)。 我們叫做
半關(guān)閉
, 下面用個例子來分析:
這個是我實際生產(chǎn)環(huán)境碰到的一個問題,長連接會話場景,server端收到client的rpc call 請求1,處理發(fā)現(xiàn)請求包有問題,就強(qiáng)制關(guān)閉結(jié)束這次會話, 但是 因為client 發(fā)送 第二次請求之前,并沒有去調(diào)用recv,所以并不知道 這個連接被server關(guān)閉, 繼續(xù)發(fā)送 請求2 , 此時是半連接,能夠成功發(fā)送到對端機(jī)器,但是recv結(jié)果后,搏兆遇到連接已經(jīng)關(guān)閉錯誤。
如果 client 和 server 恰好同時發(fā)起關(guān)閉連接。這種情況下,兩邊都是主動連接,都會進(jìn)入 TIME_WAIT狀態(tài)
1、
被動關(guān)閉方在LAST_ACK狀態(tài)(已經(jīng)發(fā)送FIN),等待主動關(guān)閉方的ACK應(yīng)答,但是 ACK丟掉, 主動方并不知道,以為成功關(guān)閉。因為沒有TIME_WAIT等待時間,可以立即創(chuàng)建新的連接, 新的連接發(fā)送SYN到前面那個未關(guān)閉的被動方,被動方認(rèn)為是收到錯誤指令,會發(fā)送RST。導(dǎo)致創(chuàng)建連接失敗。
2、
主動關(guān)閉方斷開連接,如果沒有TIME_WAIT等待時間,可以馬上建立一個新的連接,但是前一個已經(jīng)斷開連接的,延遲到達(dá)的數(shù)據(jù)包。 被新建的連接接收,如果剛好seq 和 ack字段 都正確, seq在滑動窗口范圍內(nèi)(只能說機(jī)率非常小,但是還是有可能會發(fā)生),會被當(dāng)成正確數(shù)據(jù)包接收,導(dǎo)致數(shù)據(jù)串包。 如果不在window范圍內(nèi),則沒有影響( 發(fā)送一個確認(rèn)報文(ack 字段為期望ack的序列號,seq為當(dāng)前發(fā)送序列號),狀態(tài)變保持原樣)
TIME_WAIT 問題比較比較常見,特別是CGI機(jī)器,并發(fā)量高,大量連接后段服務(wù)的tcp短連接。因此也衍生出了多種手段解決。雖然每種方法解決不是那么完美,但是帶來的好處一般多于壞處。還是在日常工作中會使用。
1、改短TIME_WAIT 等待時間
這個是之一個想到的解決辦法,既然等待時間太長,就改成時間短,快速回收端口。但是實際情況往往不樂觀,對于并發(fā)的機(jī)器,你改多短才能保證回收速度呢,有時候幾秒鐘就幾萬個連接。太短的話,就會有前面兩種問題小概率發(fā)生。
2、禁止Socket lingering
這種情況下關(guān)閉連接,會直接拋棄緩沖區(qū)中待發(fā)送的數(shù)據(jù),會發(fā)送一個RST給對端,相當(dāng)于直接拋棄TIME_WAIT, 進(jìn)入CLOSE狀態(tài)。同樣因為取消了 TIME_WAIT 狀態(tài),會有前面兩種問題小概率發(fā)生。
3、tcp_tw_reuse
net.ipv4.tcp_tw_reuse選項是 從 TIME_WAIT 狀態(tài)的隊列中,選取條件:1、remote 的 ip 和端口相同, 2、選取一個時間戳小于當(dāng)前時間戳; 用來解決端口不足的尷尬。
現(xiàn)在端口可以復(fù)用了,看看如何面對前面TIME_WAIT 那兩種問題。 我們仔細(xì)回顧用一下前面兩種問題。
都是在新建連接中收到老連接的包導(dǎo)致的問題
, 那么如果我能在新連接中識別出此包為非法包,是不是就可以丟掉這些無用包,解決問題呢。
需要實現(xiàn)這些功能,需要擴(kuò)展一下tcp 包頭。 增加 時間戳字段。 發(fā)送者 在每次發(fā)送的時候。 在tcp包頭里面帶上發(fā)送時候的時間戳。 當(dāng)接收者接收的時候,在ACK應(yīng)答中除了TCP包頭中帶自己此時發(fā)送的時間戳,并且把收到的時間戳附加在后面。也就是說ACK包中有兩個時間戳字段。結(jié)構(gòu)如下:
那我們接下來一個個分析tcp_tw_reuse是如何解決TIME_WAIT的兩個問題的
4、tcp_tw_recycle
tcp_tw_recycle 也是借助 timestamp機(jī)制。顧名思義, tcp_tw_reuse 是復(fù)用 端口,并不會減少 TIME-WAIT 數(shù)量。你去查詢機(jī)器上TIME-WAIT 數(shù)量,還是 幾千幾萬個,這點對有強(qiáng)迫癥的同學(xué)感覺很不舒服。tcp_tw_recycle 是 提前 回收 TIME-WAIT資源。會減少 機(jī)器上 TIME-WAIT 數(shù)量。
linux 網(wǎng)卡tcp禁用的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux 網(wǎng)卡tcp禁用,Linux系統(tǒng)中如何禁用網(wǎng)卡TCP?,如何在Linux下禁用IPv6,暢談linux下TCP(上)的信息別忘了在本站進(jìn)行查找喔。
成都服務(wù)器托管選創(chuàng)新互聯(lián),先上架開通再付費。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網(wǎng)站建設(shè),軟件開發(fā)老牌服務(wù)商!微信小程序開發(fā),APP開發(fā),網(wǎng)站制作,網(wǎng)站營銷推廣服務(wù)眾多企業(yè)。電話:028-86922220
新聞名稱:Linux系統(tǒng)中如何禁用網(wǎng)卡TCP? (linux 網(wǎng)卡tcp禁用)
當(dāng)前網(wǎng)址:http://www.dlmjj.cn/article/cdshddh.html


咨詢
建站咨詢
