很長時(shí)間沒有寫博文了,一是懶二是雜沽损。懶不必多說灯节,雜是自己很久沒有做自己本行的活了,忙于公司的網(wǎng)絡(luò)改造、CMMI評測炎疆、后端服務(wù)編碼卡骂、編寫爬蟲...。事情一雜形入,人也容易迷失全跨,不知道自己能干什么、想干什么亿遂、專研什么浓若。但是最近遇到的這個(gè)問題,我覺得有必要記下來蛇数,供以后翻閱及知識傳播挪钓。
需求
大致場景是:在一個(gè)企業(yè)內(nèi),有一臺Kafka服務(wù)器耳舅,負(fù)責(zé)企業(yè)內(nèi)部消息中間件÷瞪希現(xiàn)在需要將該服務(wù)器暴露到互聯(lián)網(wǎng)上,讓企業(yè)外的用戶使用浦徊。
一般企業(yè)會(huì)有一個(gè)出口路由器或是出口防火墻馏予,通過運(yùn)營商分配的固定ip地址連接互聯(lián)網(wǎng)。大致的網(wǎng)絡(luò)拓?fù)淙缦拢?/p>
解決方案
1.通過NAT端口映射辑畦,將Kafka服務(wù)器的端口映射到出口路由上吗蚌。即將Kafka默認(rèn)端口號9092映射出去,確贝砍觯互聯(lián)網(wǎng)上用戶能夠訪問到蚯妇。
通過telnet命令進(jìn)行檢測,例如:telnet 10.10.10.10 9092暂筝,如若telnet成功則說明端口成功暴露箩言。
2.將內(nèi)網(wǎng)Kafka server.properties中的advertised.listeners、advertised.host.name焕襟、advertised.port設(shè)置為外網(wǎng)對應(yīng)的地址及端口好陨收。
例如:
advertised.listeners=PLAINTEXT://10.10.10.10:9092
advertised.host.name=10.10.10.10
advertised.port=9092
3.確保在內(nèi)網(wǎng)中能夠訪問外網(wǎng)地址加端口號。
這是重點(diǎn)鸵赖,因?yàn)槲覀円呀?jīng)將Kafka地址以外網(wǎng)地址注冊到zookeeper上务漩。所以,在內(nèi)網(wǎng)內(nèi)需要能夠訪問到外網(wǎng)地址加端口號它褪,才能在內(nèi)網(wǎng)訂閱消費(fèi)Kafka饵骨。
嘗試在內(nèi)網(wǎng)內(nèi)telnet外網(wǎng)地址和端口號,例如:telnet 10.10.10.10 9092茫打,如若telnet成功則就此結(jié)束居触。如若不成功呢妖混?
如何在內(nèi)網(wǎng)內(nèi)訪問公網(wǎng)地址加端口號
如果你像博主一樣,在內(nèi)網(wǎng)內(nèi)訪問不了自己公司的外網(wǎng)地址和端口號轮洋,也許問題出在這里制市。
博主所在公司剛進(jìn)行網(wǎng)絡(luò)改造,入手一臺H3C MSR3600企業(yè)路由器弊予,在搭建骨架祥楣,配置好L2TP VPN后發(fā)現(xiàn)一個(gè)問題,內(nèi)網(wǎng)無法訪問到外網(wǎng)地址加端口號汉柒。經(jīng)過查詢及論壇詢問荣堰,原來需要在路由器上做NAT hairpin,即NAT回流竭翠。這樣就可以在內(nèi)網(wǎng)訪問到外網(wǎng)地址加端口號了。
配置也很簡單《配置NAT hairpin功能
》
但需要注意的是
NAT hairpin功能需要與內(nèi)部服務(wù)器(nat server)薇搁、
出方向動(dòng)態(tài)地址轉(zhuǎn)換(nat outbound)或
出方向靜態(tài)地址轉(zhuǎn)換(nat static outbound)配合工作斋扰,
且這些配置所在的接口必須在同一個(gè)接口板,否則NAT hairpin功能無法正常工作啃洋。