知識(shí)庫
如何利用iptables實(shí)現(xiàn)端口轉(zhuǎn)發(fā)?最近買了一個(gè)VPS,并在上面搭了DOCKER,然后再DOCKER中安裝Mysql。但只要將網(wǎng)絡(luò)端口映射到宿主機(jī)上,那么外部網(wǎng)絡(luò)就可以直接訪問該數(shù)據(jù)。屬實(shí)嚇人。在Linux中通過設(shè)置Iptables實(shí)現(xiàn)端口轉(zhuǎn)發(fā),采用Ubuntu系統(tǒng),Iptables可以實(shí)現(xiàn)多種三層網(wǎng)絡(luò)協(xié)議的轉(zhuǎn)發(fā),本次主要用于記錄tcp udp gre 三種轉(zhuǎn)發(fā)。
一、iptables是啥
iptables是一個(gè)linux下的防火墻工具,它能幫助我們基于規(guī)則進(jìn)行網(wǎng)絡(luò)流量控制。它可以做到,但不限于以下功能:
? 允許/拒絕某種協(xié)議的鏈接建立,比如TCP,UDP
? 允許/拒絕 來自某個(gè)ip的訪問
? 允許/拒絕某個(gè)端口被訪問
二、如何利用iptables實(shí)現(xiàn)端口轉(zhuǎn)發(fā)?
1、首先安裝iptables:sudo apt-get install iptables
2、開啟系統(tǒng)內(nèi)核轉(zhuǎn)發(fā)功能:vim /etc/sysctl.conf
刪除 #net.ipv4.ip_forward=1 前的#號(hào),開啟ipv4 forward
sudo sysctl –p 若運(yùn)行后顯示 net.ipv4.ip_forward = 1,表示修改生效了
3、開啟系統(tǒng)nat模塊:iptables -t nat -A POSTROUTING -j MASQUERADE
到這一步我們就可以開始設(shè)置 tcp與udp的轉(zhuǎn)發(fā)了,如下示例:
將對(duì)127.0.0.1的53端口的TCP與UDP訪問轉(zhuǎn)發(fā)到對(duì)應(yīng)的119.29.29.29:53端口(127.0.0.1在這里只是一個(gè)示例,實(shí)際操作中建議修改為網(wǎng)卡的IP)
iptables -t nat -A PREROUTING -d 127.0.0.1 -p tcp --dport 53 -j DNAT --to-destination 119.29.29.29:53
iptables -t nat -A PREROUTING -d 127.0.0.1 -p udp --dport 53 -j DNAT --to-destination 119.29.29.29:53
4、接下來我們進(jìn)行GRE協(xié)議的轉(zhuǎn)發(fā),GRE協(xié)議一般用在PPTP的VPN中,GRE是與TCP UDP一樣的平級(jí)協(xié)議,處于網(wǎng)絡(luò)中的第三層
首先加載 ip_nat_pptp,命令如下:modprobe ip_nat_pptp
卸載這個(gè)模塊的命令為 modprobe -r ip_nat_pptp
然后就可以進(jìn)行GRE協(xié)議端口的轉(zhuǎn)發(fā)了,PPTP使用的是GRE 47端口,執(zhí)行如下命令:
iptables -t nat -I PREROUTING -p 47 -j DNAT --to 119.28.82.203
如果想要查看當(dāng)前 iptables中的nat規(guī)則可以使用如下命令:iptables -t nat -nL
iptables的規(guī)則默認(rèn)重啟就失效了所以需要保存在配置文件中,然后再網(wǎng)卡中加載,方法如下:
sudo iptables-save > /etc/iptables-rules
vim /etc/network/interfaces
找到 eth0 那一節(jié),在對(duì) eth0 的設(shè)置最末尾加上下面這句:
pre-up iptables-restore < /etc/iptables-rules
這樣當(dāng)系統(tǒng)重啟后則會(huì)自動(dòng)加載我們?cè)O(shè)置好的轉(zhuǎn)發(fā)規(guī)則
同樣的 ip_nat_pptp 這個(gè)模塊我們也需要配置開機(jī)自動(dòng)加載,/etc/modules 這個(gè)文件用于設(shè)置在系統(tǒng)啟動(dòng)時(shí)自動(dòng)加載的模塊,系統(tǒng)在啟動(dòng)時(shí)會(huì)按照行數(shù)依次加載
vim /etc/modules
添加一行,輸入 ip_nat_pptp 保存退出即可。