1.Proteusçµåçµè·¯è®¾è®¡å仿ççç®å½
2.netfilter/iptables模块编译及应用
3.NodeJS 中 DNS 查询的源码坑 & DNS cache 分析
Proteusçµåçµè·¯è®¾è®¡å仿ççç®å½
第1ç« Proteusæ¦è¿° 11.1 Proteusåå² 1
1.2 Proteusåºç¨é¢å 1
1.3 Proteus VSMç»ä»¶ 2
1.4 Proteusçå¯å¨åéåº 3
1.5 Proteus设计æµç¨ 5
1.5.1 èªé¡¶åä¸è®¾è®¡ 5
1.5.2 èªä¸èä¸è®¾è®¡ 5
1.6 Proteuså®è£ æ¹æ³ 6
第2ç« Proteus ISISåºæ¬æä½ 9
2.1 Proteus ISISå·¥ä½çé¢ 9
2.1.1 ç¼è¾çªå£ 9
2.1.2 é¢è§çªå£
2.1.3 对象éæ©å¨
2.1.4 èåæ ä¸ä¸»å·¥å ·æ
2.1.5 ç¶ææ
2.1.6 å·¥å ·ç®±
2.1.7 æ¹åå·¥å ·æ å仿çæé®
2.2 ç¼è¾ç¯å¢è®¾ç½®
2.2.1 模æ¿è®¾ç½®
2.2.2 å¾è¡¨è®¾ç½®
2.2.3 å¾å½¢è®¾ç½®
2.2.4 ææ¬è®¾ç½®
2.2.5 å¾å½¢ææ¬è®¾ç½®
2.2.6 交ç¹è®¾ç½®
2.3 ç³»ç»åæ°è®¾ç½®
2.3.1 å ä»¶æ¸ å设置
2.3.2 ç¯å¢è®¾ç½®
2.3.3 è·¯å¾è®¾ç½®
2.3.4 å±æ§å®ä¹è®¾ç½®
2.3.5 å¾çº¸å¤§å°è®¾ç½®
2.3.6 ææ¬ç¼è¾é项设置
2.3.7 å¿«æ·é®è®¾ç½®
2.3.8 å¨ç»é项设置
2.3.9 仿çé项设置
å®ä¾2-1 åçå¾ç»å¶å®ä¾
第3ç« Proteus ISISçµè·¯ç»å¶
3.1 ç»å¾æ¨¡å¼åå½ä»¤
3.1.1 Componentï¼å 件ï¼æ¨¡å¼
3.1.2 Junction dotï¼èç¹ï¼æ¨¡å¼
3.1.3 Wire labelï¼è¿çº¿æ å·ï¼æ¨¡å¼
3.1.4 Text scriptsï¼æåèæ¬ï¼æ¨¡å¼
3.1.5 æ»çº¿ï¼Busesï¼æ¨¡å¼
3.1.6 Subcircuitï¼åçµè·¯ï¼æ¨¡å¼
3.1.7 Terminalsï¼ç»ç«¯ï¼æ¨¡å¼
3.1.8 Device Pinsï¼å¨ä»¶å¼èï¼æ¨¡å¼
3.1.9 2Då¾å½¢å·¥å ·
3.2 导线çæä½
3.2.1 两对象è¿çº¿
3.2.2 è¿æ¥ç¹
3.2.3 éå¤å¸çº¿
3.2.4 æå¨è¿çº¿
3.2.5 移走èç¹
3.3 对象çæä½
3.3.1 éä¸å¯¹è±¡
3.3.2 æ¾ç½®å¯¹è±¡
3.3.3 å é¤å¯¹è±¡
3.3.4 å¤å¶å¯¹è±¡
3.3.5 æå¨å¯¹è±¡
3.3.6 è°æ´å¯¹è±¡
3.3.7 è°æ´æå
3.3.8 ç¼è¾å¯¹è±¡
3.4 ç»å¶çµè·¯å¾è¿é¶
3.4.1 æ¿æ¢å 件
3.4.2 éèå¼è
3.4.3 设置头æ¡
3.4.4 设置è¿çº¿å¤è§
3.5 å ¸åå®ä¾
å®ä¾3-1 ç»å¶å ±åå°ææ¾å¤§çµè·¯
å®ä¾3-2 JK触åå¨ç»æçä¸ä½äºè¿å¶å
æ¥è®¡æ°å¨çç»å¶ä¸æµè¯
å®ä¾3-3 KEYPADçç»å¶å仿ç
å®ä¾3-4 åçæºæ§ä¸²è¡è¾å ¥å¹¶è¡è¾åº
移ä½å¯åå¨ç»å¶ç»ä¹
第4ç« ProteusISISåæå仿çå·¥å ·
4.1 èæ仪å¨
4.2 æ¢é
4.3 å¾è¡¨
4.4 æ¿å±æº
4.4.1 ç´æµä¿¡å·åçå¨DC设置
4.4.2 å¹ åº¦ãé¢çãç¸ä½å¯æ§çæ£å¼¦
æ³¢åçå¨SINE设置
4.4.3 模æèå²åçå¨PULSE设置
4.4.4 ææ°èå²åçå¨EXP设置
4.4.5 åé¢çè°é¢æ³¢ä¿¡å·åçå¨SFFM
设置
4.4.6 PWLINå段线æ§èå²ä¿¡å·åç
å¨è®¾ç½®
4.4.7 FILEä¿¡å·åçå¨è®¾ç½®
4.4.8 é³é¢ä¿¡å·åçå¨AUDIO设置
4.4.9 åå¨ææ°åèå²åçå¨DPULSE
设置
4.4. æ°åå边沿信å·åçå¨DEDGE
设置
4.4. æ°åå稳æé»è¾çµå¹³åçå¨
DSTATE设置
4.4. æ°åæ¶éä¿¡å·åçå¨DCLOCK
设置
4.4. æ°å模å¼ä¿¡å·åçå¨DPATTERN
设置
4.5 å ¸åå®ä¾
å®ä¾4-1 å ±åå°ææ¾å¤§çµè·¯åæ
å®ä¾4-2 ADCçµè·¯æ¶åºåæ
å®ä¾4-3 å ±åå°æåºç¨ä½é滤波çµè·¯
åæ
第5ç« æ¨¡æçµè·¯è®¾è®¡å仿ç
5.1 è¿ç®æ¾å¤§å¨åºæ¬åºç¨çµè·¯
5.1.1 åç¸æ¾å¤§çµè·¯
5.1.2 åç¸æ¾å¤§çµè·¯
5.1.3 å·®å¨æ¾å¤§çµè·¯
5.1.4 å æ³è¿ç®çµè·¯
5.1.5 åæ³è¿ç®çµè·¯
5.1.6 å¾®åè¿ç®çµè·¯
5.1.7 积åè¿ç®çµè·¯
å®ä¾5-1 PIDæ§å¶çµè·¯åæ
5.2 æµéæ¾å¤§çµè·¯ä¸é离çµè·¯
5.2.1 æµéæ¾å¤§å¨
å®ä¾5-2 æµéæ¾å¤§å¨æµæ¸©çµè·¯åæ
5.2.2 é离æ¾å¤§å¨
å®ä¾5-3 模æä¿¡å·é离æ¾å¤§çµè·¯
åæ
5.3 ä¿¡å·è½¬æ¢çµè·¯
5.3.1 çµåæ¯è¾çµè·¯
5.3.2 çµå/é¢ç转æ¢çµè·¯
5.3.3 é¢ç/çµå转æ¢çµè·¯
5.3.4 çµåâçµæµè½¬æ¢çµè·¯
5.3.5 çµæµâçµå转æ¢çµè·¯
5.4 移ç¸çµè·¯ä¸ç¸ææ£æ³¢çµè·¯
5.4.1 移ç¸çµè·¯
5.4.2 ç¸ææ£æ³¢çµè·¯
å®ä¾5-4 ç¸ææ£æ³¢å¨é´ç¸ç¹æ§åæ
5.5 ä¿¡å·ç»åçµè·¯
å®ä¾5-5 çµé»é¾äºåé¢ç»åçµè·¯
åæ
5.6 ææºæ»¤æ³¢çµè·¯
5.6.1 ä½é滤波çµè·¯
5.6.2 é«é滤波çµè·¯
5.6.3 带é滤波çµè·¯
5.6.4 带é»æ»¤æ³¢çµè·¯
5.7 ä¿¡å·è°å¶/解è°
5.7.1 è°å¹ çµè·¯
5.7.2 è°é¢çµè·¯
5.7.3 è°ç¸çµè·¯
5.8 å½æ°åççµè·¯
5.8.1 æ£å¼¦æ³¢ä¿¡å·åççµè·¯
å®ä¾5-6 çµå®¹ä¸ç¹å¼æ¯è¡çµè·¯åæ
5.8.2 ç©å½¢æ³¢ä¿¡å·åççµè·¯
5.8.3 å 空æ¯å¯è°çç©å½¢æ³¢åç
çµè·¯
5.8.4 ä¸è§æ³¢ä¿¡å·åççµè·¯
5.8.5 é¯é½¿æ³¢ä¿¡å·åççµè·¯
å®ä¾5-7 éæå½æ°åçå¨ICL
çµè·¯åæ
第6ç« æ°åçµè·¯è®¾è®¡å仿ç
6.1 åºæ¬åºç¨çµè·¯
6.1.1 å稳æ触åå¨
6.1.2 å¯åå¨/移ä½å¯åå¨
å®ä¾6-1 LS 8ä½åå移ä½å¯åå¨
åæ
6.1.3 ç¼ç çµè·¯
6.1.4 è¯ç çµè·¯
å®ä¾6-2 CDè¯ç æ¾ç¤ºçµè·¯
åæ
6.1.5 ç®æ¯é»è¾çµè·¯
6.1.6 å¤è·¯éæ©å¨
6.1.7 æ°æ®åé å¨
6.1.8 å /å计æ°å¨
6.2 èå²çµè·¯
6.2.1 å®æ¶å¨ææçå¤è°æ¯è¡å¨
å®ä¾6-3 å 空æ¯ä¸é¢çåå¯è°çå¤
è°æ¯è¡å¨åæ
6.2.2 ç©å½¢èå²çæ´å½¢
6.3 çµå®¹æµé仪
6.3.1 çµå®¹æµé仪设计åç
6.3.2 çµå®¹æµé仪çµè·¯è®¾è®¡
6.4 å¤è·¯çµåæ¢çå¨
6.4.1 ç®å8è·¯çµåæ¢çå¨
6.4.2 8路带æ°åæ¾ç¤ºçµåæ¢çå¨
第7ç« åçæºä»¿ç
7.1 Proteusä¸åçæºä»¿ç
7.1.1 å建æºä»£ç æ件
7.1.2 ç¼è¾æºä»£ç ç¨åº
7.1.3 çæç®æ 代ç
7.1.4 代ç çæå·¥å ·
7.1.5 å®ä¹ç¬¬ä¸æ¹æºä»£ç ç¼è¾å¨
7.1.6 使ç¨ç¬¬ä¸æ¹IDE
7.1.7 åæ¥è°è¯
7.1.8 æç¹è°è¯
7.1.9 MULTI-CPUè°è¯
7.1. å¼¹åºå¼çªå£
7.2 WinAVRç¼è¯å¨
7.2.1 WinAVRç¼è¯å¨ç®ä»
7.2.2 å®è£ WinAVRç¼è¯å¨
7.2.3 WinAVRç使ç¨
7.3 ATMEGAåçæºæ¦è¿°
7.3.1 AVRç³»ååçæºç¹ç¹
7.3.2 ATmegaæ»ä½ç»æ
7.4 I/O端å£åå ¶ç¬¬äºåè½
7.4.1 端å£Aç第äºåè½
7.4.2 端å£Bç第äºåè½
7.4.3 端å£Cç第äºåè½
7.4.4 端å£Dç第äºåè½
å®ä¾7-1 使ç¨Proteus仿çé®çæ§
LED
7.5 ä¸æå¤ç
7.5.1 ATmegaä¸ææº
7.5.2 ç¸å ³I/Oå¯åå¨
7.5.3 æå¤ç
å®ä¾7-2 使ç¨Proteus仿çä¸æå¤éç
é®ç
7.6 ADC模æè¾å ¥æ¥å£
7.6.1 ADCç¹ç¹
7.6.2 ADCçå·¥ä½æ¹å¼
7.6.3 ADCé¢åé¢å¨
7.6.4 ADCçåªå£°æå¶
7.6.5 ä¸ADCæå ³çI/Oå¯åå¨
7.6.6 ADCåªå£°æ¶é¤ææ¯
å®ä¾7-3 使ç¨Proteus仿çç®æçµ
é计
7.7 éç¨ä¸²è¡æ¥å£UART
7.7.1 æ°æ®ä¼ é
7.7.2 æ°æ®æ¥æ¶
7.7.3 ä¸UARTç¸å ³çå¯åå¨
å®ä¾7-4 使ç¨Proteus仿ç以æ¥è¯¢æ¹å¼
ä¸èæç»ç«¯ååçæºä¹é´äºç¸
éä¿¡
å®ä¾7-5 使ç¨Proteus仿çå©ç¨æ åI/O
æµä¸èæç»ç«¯éä¿¡è°è¯
7.8 å®æ¶å¨/计æ°å¨
7.8.1 T/C0
7.8.2 T/C1
7.8.3 T/C2
7.8.4 å®æ¶å¨/计æ°å¨çé¢åé¢å¨
å®ä¾7-6 使ç¨Proteus仿çT/C0å®æ¶
éªçLEDç¯
å®ä¾7-7 使ç¨Proteus仿çT/C2产ç
ä¿¡å·T/C1è¿è¡æè·
å®ä¾7-8 使ç¨Proteus仿çT/C1产ç
PWMä¿¡å·æ§çµæº
å®ä¾7-9 使ç¨Proteus仿ççé¨ç
å®æ¶å¨
7.9 åæ¥ä¸²è¡æ¥å£SPI
7.9.1 SPIç¹æ§
7.9.2 SPIå·¥ä½æ¨¡å¼
7.9.3 SPIæ°æ®æ¨¡å¼
7.9.4 ä¸SPIç¸å ³çå¯åå¨
å®ä¾7- 使ç¨Proteus仿ç端å£
æ©å±
7. 两线串è¡æ¥å£TWI
7..1 TWIç¹æ§
7..2 TWIçæ»çº¿ä»²è£
7..3 TWIç使ç¨
7..4 ä¸TWIç¸å ³çå¯åå¨
å®ä¾7- 使ç¨Proteus仿çåè¯ç
TWIéä¿¡
7. 综å仿ç
å®ä¾7- 使ç¨Proteus仿çDSB
æµæ¸©è®¡
å®ä¾7- 使ç¨Proteus仿ççµå
ä¸å¹´å
å®ä¾7- 使ç¨Proteus仿çDS
å®æ¶æ¶é
第8ç« PCBå¸æ¿
8.1 PCBæ¦è¿°
8.2 Proteus ARESçå·¥ä½çé¢
8.2.1 ç¼è¾çªå£
8.2.2 é¢è§çªå£
8.2.3 对象éæ©å¨
8.2.4 èåæ ä¸ä¸»å·¥å ·æ
8.2.5 ç¶ææ
8.2.6 å·¥å ·ç®±
8.3 ARESç³»ç»è®¾ç½®
8.3.1 é¢è²è®¾ç½®
8.3.2 é»è®¤è§å设置
8.3.3 ç¯å¢è®¾ç½®
8.3.4 éæ©è¿æ»¤å¨è®¾ç½®
8.3.5 å¿«æ·é®è®¾ç½®
8.3.6 ç½æ ¼è®¾ç½®
8.3.7 使ç¨æ¿å±è®¾ç½®
8.3.8 æ¿å±å¯¹è®¾ç½®
8.3.9 è·¯å¾è®¾ç½®
8.3. 模æ¿è®¾ç½®
8.3. å·¥ä½åºå设置
å®ä¾8-1 PCBå¸æ¿æµç¨
åèæç®
åçå¾ï¼é¡¾åæä¹å°±æ¯è¡¨ç¤ºçµè·¯æ¿ä¸åå¨ä»¶ä¹é´è¿æ¥åççå¾è¡¨ãå¨æ¹æ¡å¼åçæ£åç 究ä¸ï¼åçå¾çä½ç¨æ¯é常éè¦çï¼è对åçå¾çæå ³ä¹å ³ä¹æ´ä¸ªé¡¹ç®çè´¨éçè³çå½ãç±åçå¾å»¶ä¼¸ä¸å»ä¼æ¶åå°PCB layoutï¼ä¹å°±æ¯PCBå¸çº¿ï¼å½ç¶è¿ç§å¸çº¿æ¯åºäºåçå¾æ¥åæçï¼éè¿å¯¹åçå¾çåæ以åçµè·¯æ¿å ¶ä»æ¡ä»¶çéå¶ï¼è®¾è®¡è å¾ä»¥ç¡®å®å¨ä»¶çä½ç½®ä»¥åçµè·¯æ¿çå±æ°çã
åºå°é夫å®å¾Kirchhoff lawsæ¯çµè·¯ä¸çµååçµæµæéµå¾ªçåºæ¬è§å¾ï¼æ¯åæå计ç®è¾ä¸ºå¤æçµè·¯çåºç¡ï¼å¹´ç±å¾·å½ç©çå¦å®¶G.R.åºå°é夫ï¼Gustav Robert Kirchhoffï¼ï½ï¼æåºãå®æ¢å¯ä»¥ç¨äºç´æµçµè·¯çåæï¼ä¹å¯ä»¥ç¨äºäº¤æµçµè·¯çåæï¼è¿å¯ä»¥ç¨äºå«æçµåå 件çé线æ§çµè·¯çåæãè¿ç¨åºå°é夫å®å¾è¿è¡çµè·¯åææ¶ï¼ä» ä¸çµè·¯çè¿æ¥æ¹å¼æå ³ï¼èä¸ææ该çµè·¯çå å¨ä»¶å ·æä»ä¹æ ·çæ§è´¨æ å ³ãåºå°é夫å®å¾å æ¬çµæµå®å¾ï¼KCL)åçµåå®å¾(KVL)ï¼åè åºç¨äºçµè·¯ä¸çèç¹èåè åºç¨äºçµè·¯ä¸çåè·¯ã
å¤ç¨è¡¨
multimeter
ç±ç£çµç³»çµè¡¨çæµéæºæä¸æ´æµå¨ææçå¤åè½ãå¤éç¨çæºæ¢°å¼æ示çµè¡¨ï¼è§çµæµè¡¨ï¼ãå¯ç¨ä»¥æµé交ãç´æµçµåï¼äº¤ãç´æµçµæµï¼çµé»ãå称ä¸ç¨è¡¨æç¹ç¨è¡¨ãæäºå¤ç¨è¡¨è¿å ·ææµéçµå®¹ãçµæçåè½ã
å¤ç¨è¡¨ä¸»è¦ç±ç£çµç³»çµè¡¨çæµéæºæãæµéçµè·¯å转æ¢å¼å ³
ç»æãå ¶ä¸ï¼è½¬æ¢å¼å ³æ¯å¤ç¨è¡¨éæ©ä¸åæµéåè½åä¸åéç¨æ¶çåæ¢å 件ã
满å转çµæµçº¦ä¸º ï½Î¼Aãå¤ç¨è¡¨ç¨ä¸ä¸ªæµéæºææ¥æµéå¤ç§çµå¦éï¼åå ·æå 个éç¨ãå ¶å·¥ä½åçæ¯:éè¿æµéçµè·¯çåæ¢,å°è¢«æµéåæ¢æç£çµç³»æµéæºæè½å¤æ¥åçç´æµçµæµãä¾å¦æµéæºæç»ååæµå¨ï¼è§çµæµè¡¨ï¼åååå¨ï¼å°±å½¢ææµéç´æµçµæµåçµåçå¤éç¨ç´æµçµè¡¨ãç£çµç³»æµéæºæä¸åæ³¢æå ¨æ³¢æ´æµå¨ç»ææ´æµå¼çµè¡¨çæµéæºæï¼åç»ååæµå¨åååå¨ï¼å°±å½¢ææµé交æµçµæµåçµåçå¤éç¨äº¤æµçµè¡¨ãå¤ç¨è¡¨å è¿å¸¦æçµæ± ï¼å½è¢«æµçµé»å¼ä¸åæ¶ï¼çµæ± 使æµéæºæå éè¿ä¸åæ°å¼ççµæµï¼ä»èåæ åºä¸åç被æµçµé»å¼ã转æ¢å¼å ³æ¯å¤ç¨è¡¨éæ©ä¸åæµéåè½åä¸åéç¨æ¶çåæ¢å 件ã
ç¨å¤ç¨è¡¨æµéçµé»çåççµè·¯è§å¾ãå½è¢«æµçµé»Rx=0æ¶,çµè·¯ä¸ççµæµæ大,è°èR使æµéæºææéçå转è§ä¸ºæ»¡å»åº¦å¼ï¼æ¤æ¶çµè·¯ä¸ççµæµå¼I0=E/Rãå½è¢«æµçµé»Rxå¢å¤§æ¶,çµæµI=E/(R+Rx)éæ¸åå°ï¼æéçå转è§ä¹åå°ãå æ¤å¤ç¨è¡¨è¡¨çä¸ççµé»å¼æ å°ºæ¯ååçï¼èä¸å»åº¦ä¸ååãè¥è¢«æµçµé»Rx=Rï¼åçµæµI=I0/2ï¼æéå转è§ä¸ºæ»¡å转è§çä¸åãå æ¤å»åº¦ä¸ç¹å¤ææ ççµé»å¼(称为ä¸å¼çµé»)å³ä¸ºè¯¥éç¨ä¸å¤ç¨è¡¨çå é»å¼ãé常çµé»å¼æ å°ºçææ读æ°èå´ä¸º0.1ï½åä¸å¼çµé»å¼ã
éççµåææ¯çä¸æè¿æ¥ï¼å¤ç¨è¡¨æ£éæ¥åæ°åå¼æ¹ååå±ã
netfilter/iptables模块编译及应用
by KindGeorge # yahoo.com .4.2 at ChinaUnix.net
相信很多人都会用iptables,我也一直用,并且天天用.特别是看完platinum的如何给iptables添加新的模块;;介绍后,觉得有必要深入了解一下它的拓展功能.于是立刻下载,先查看一下它的说明, 其功能很是令人感觉很兴奋,例如:comment (备注匹配) ,string(字符串匹配,可以用做内容过滤),iprang(ip范围匹配),time(时间匹配),ipp2p(点对点匹配),connlimit(同时连接个数匹配),Nth(第n个包匹配),geoip(根据国家地区匹配). ipp2p(点对点匹配), quota(配额匹配),还有很多......之后编译,几经测试,在rh7.3 kernel2.4.-3和rh9.0 kernel2.4.-8下均成功实现添加扩展功能.以下是介绍其部分功能,及编译方法.环境rh9.0 kernel2.4.-8. root身份.
一,准备原码.
1. 内核原码:为了减少复杂性,不编译所有内核和模块,建议找一个跟当前版本一样的内核原码,推荐安装时光盘的
a. [root@kindgeorge] uname -r (查看当前版本)
2.4.-8
可以cd /usr/src 查看是否有这个目录2.4.-8
b. 或者[root@kindgeorge]rpm -qa|grep kernel
kernel-source-2.4.-8 如果有这个说明已安装了.
如果没有安装,可以在RH第二张光盘中拷贝过来或安装 rpm -ivh kernel-source-2.4.-3.i.rpm. 安装后会在/usr/src/出现linux-2.4连接和linux-2.4.-8目录.
c.在下载一个和当前版本的内核原码.
2. 先获取最新的信息,当然要到piled for kernel version 2.4.-8custom
while this kernel is version 2.4.-8.
/lib/modules/2.4.-8/kernel/net/ipv4/netfilter/ipt_iprange.o: insmod /lib/modules/2.4.-8/kernel/net/ipv4/netfilter/ipt_iprange.o failed
/lib/modules/2.4.-8/kernel/net/ipv4/netfilter/ipt_iprange.o: insmod ipt_iprange failed
3. [root@kindgeorge linux-2.4]# make mrproper
4. [root@kindgeorge linux-2.4]# make oldconfig
'make oldconfig' - 采用以前的 .config 文件 (编译时十分有用)
技巧:在make menuconfig时,我们面对众多的源码选项常常不知道该如何选择,此时可以把安装时的源码配置文件copy到/usr/src/linux-2.4中:cp /boot/config-2.4.* /usr/src/linux-2.4/.config,再用make menuconfig编译,它会读取.config中原来的源码配置信息.
(二).给netfilter打补丁
解开tar xjvf patch-o-matic-ng-.tar.bz2 包后,进入该目录,就会发现有很多目录,其实每个目录对应一个模块.
我们可以这样来选择,根据不同贮仓库submitted|pending|base|extra,例如:
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme base .
或:KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme extra
执行后,会测试是否已经应用和提示你是否应用该模块,但这样会遍历所有模块,有很多是用不着的,并且可能和系统版本有冲突,如果不管三七二十一全部选择的话,一般都会在编译和使用时出错.所以推荐用cat /模块目录名/info 和cat /模块目录名/help 看过后,认为适合自己,才选择.
我是针对在上面看过后,有目的的一个一个的应用的,这样做:
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme string
执行后,会测试是否已经应用和提示你是否应用该模块,按"y"应用.然后继续下一个
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme comment
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme connlimit
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme time
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme iprange
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme geoip
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme nth
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme ipp2p
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme quota
上面全部完成后,
cd /usr/src/linux-2.4
make menuconfig,确认
Prompt for development and/or incomplete code/drivers要选中
然后进入Networking options
再进入IP:Netfilter Configuration,源码会看到增加很多模块,源码dxf 源码每个新增的源码后面都会出现"NEW",把其想要的选中为模块"M"
保存、退出,源码至此,源码给netfilter打补丁工作完成
(三).编译netfilter模块
1.这里只需要编译netfilter,源码不需要编译整个内核和模块.这里我只需要ipv4的,ipv6我还没用到,所以不管了
cd /usr/src/linux-2.4
make dep
make modules SUBDIRS=net/ipv4/netfilter
2.建立一个新目录备份原来模块,以防万一:
mkdir /usr/src/netfilter
cp /lib/modules/2.4.-8/kernel/net/ipv4/netfilter/*.o /usr/src/netfilter/
3.应用新的模块
cp -f /usr/src/linux-2.4/net/ipv4/netfilter/*.o /lib/modules/2.4.-8/kernel/net/ipv4/netfilter/
4.更新你的modules.dep
depmod -a
当出现这个时,可以不用理会,因为ipchains, ipfwadm模块都没用,也可以把出错的删除.
depmod: *** Unresolved symbols in /lib/modules/2.4.-8/kernel/net/ipv4/netfilter/ipchains_core.o
depmod: *** Unresolved symbols in /lib/modules/2.4.-8/kernel/net/ipv4/netfilter/ipfwadm_core.o
(四).编译安装新的iptables
解压后有目录iptables-1.3.1
cd /usr/src/iptables-1.3.1
export KERNEL_DIR=/usr/src/linux-2.4
export IPTABLES_DIR=/usr/src/iptables-1.3.1
make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install
三.安装完成,测试及应用
1.内容过滤
iptables -I FORWARD -m string --string "腾讯" -j DROP
iptables -I FORWARD -s ..3. -m string --string "qq.com" -j DROP
iptables -I FORWARD -d ..3.0/ -m string --string "宽频影院" -j DROP
iptables -I FORWARD -s ..3.0/ -m string --string "色情" -j DROP
iptables -I FORWARD -p tcp --sport -m string --string "广告" -j DROP
2.备注应用
iptables -I FORWARD -s ..3. -p tcp --dport -j DROP -m comment --comment "the bad guy can not online"
iptables -I FORWARD -s ..3. -m string --string "qq.com" -j DROP -m comment --comment "denny go to qq.com"
3.并发连接应用
模块 connlimit 作用:连接限制
--connlimit-above n 限制为多少个
--connlimit-mask n 这组主机的掩码,默认是connlimit-mask ,即每ip.
这个主要可以限制内网用户的网络使用,对服务器而言则可以限制每个ip发起的连接数...比较实用
例如:只允许每个ip同时5个端口转发,超过的丢弃:
iptables -I FORWARD -p tcp --syn --dport -m connlimit --connlimit-above 5 -j DROP
例如:只允许每组ip同时个端口转发:
iptables -I FORWARD -p tcp --syn --dport -m connlimit --connlimit-above --connlimit-mask -j DROP
例如:为了防止DOS太多连接进来,那么可以允许最多个初始连接,超过的丢弃.
/sbin/iptables -A INPUT -s ..1.0/ -p tcp --syn -m connlimit --connlimit-above -j DROP
/sbin/iptables -A INPUT -s ..1.0/ -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
4.ip范围应用
iptables -A FORWARD -m iprange --src-range ..1.5-..1. -j ACCEPT
5.每隔N个匹配
iptables -t mangle -A PREROUTING -m nth --every -j DROP
6.封杀BT类P2P软件
iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP
iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP
iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP
7.配额匹配
iptables -I FORWARD -s ..3. -p tcp --dport -m quota --quota -j DROP
iptables -I FORWARD -s ..3. -p tcp --dport -m quota --quota -j ACCEPT
以上均测试通过,只有geoip的geoipdb.bin没下载到,所以没测试
在此仅为抛个砖头,更多的应用,要根据自己的需要来组合各个规则和模块了.
本来此篇文章和netfilter/iptables模块功能中文介绍;;是写在一起的,由于篇幅太长,所以份成两篇. 如果有更新请见我的blog: /article.php?articleId=blogId=
/forum/viewtopic.php?t= netfilter/iptables模块功能中文介绍
platinum的 /forum/viewtopic.php?t= 如何给iptables添加新的模块v2.2(含视频教程)
hongfengyue的 /jh/4/.html iptables 添加模块 (for kernel 2.6)
官方: filter.org/documentation/HOWTO/netfilter-extensions-HOWTO.html
NodeJS 中 DNS 查询的坑 & DNS cache 分析
在进行 DNS 服务器切换升级演练时,我们遇到使用 NodeJS 中 axios 和默认的源码 dns.lookup 存在的问题,导致响应耗时急剧上升至约 3分钟,源码最终导致 nginx 层出现大量 错误。源码QQ快捷登录源码具体分析参见《node中请求超时的源码一些坑》。 总结所述,源码NodeJS DNS 的“坑”主要涉及以下几点: 1. 优化方案:在不修改 NodeJS 底层源码的情况下,在 JS 层引入 DNS 缓存,这是一个轻量级的优化方案,能一定程度上规避上述问题,php扫码源码但并非完美解决方案。考虑到引入 lookup-dns-cache 作为优化方案。然而,在引入 DNS 查询与缓存时,线上操作前需谨慎确认以下问题:查询与缓存实现细节:lookup-dns-cache 的代码量较少,主要在 dns.resolve* 方法上提供两个优化点:避免额外并行请求与 DNS 缓存。后台登入 源码实现方式为使用 Map 存储当前正在进行的查询以避免重复请求,并在查询结果返回后清除 Map 中对应项。同时,通过设置 ttl: true,返回查询结果的 TTL 值,并在缓存中存储查询结果,宝塔源码安装视频过期后不再返回。
2. dns.resolve* 是否使用 resolv.conf 配置?在 NodeJS 中,dns.resolve* 方法通过 c-ares 库进行 DNS 查询,此库支持 resolv.conf 配置。然而,在具体实现中,NodeJS 层并未直接调用 resolv.conf,而是通过设置操作掩码(opmask)来决定使用的选项。在某些系统上(如苹果系统),c-ares 会使用 resolv 这个库来读取 resolv.conf 文件,获取默认域名和 DNS 服务器地址。 3. DNS 查询的 timeout:在 c-ares 实现中,timeout 的处理取决于编译时选择的分支。在第一种情况下,timeout 设置默认为 5 秒。而在使用 resolv 这个库的第二种情况下,timeout 值则会根据 resolv.conf 文件中的配置进行调整。然而,在 NodeJS 层,用户无法直接控制 timeout 的设置,因此,如果使用 lookup-dns-cache,DNS 查询的超时时间都将落回默认值,无法进行自定义设置。