您好,登錄后才能下訂單哦!
拋開云主機(jī)環(huán)境來說,通常一個辦公網(wǎng)絡(luò)內(nèi)所有的主機(jī)都沒有公網(wǎng)IP地址,但他們都能通過具有IP地址的路由器(網(wǎng)關(guān))設(shè)備訪問Internet,此設(shè)備只需要具備NAT和轉(zhuǎn)發(fā)功能即可。具有這樣功能的設(shè)備當(dāng)然可以用某臺計(jì)算機(jī)代替。
下面是一個最簡單的模型:
主機(jī)A(服務(wù)端):
網(wǎng)卡1:內(nèi)網(wǎng)IP地址1
網(wǎng)卡2:公網(wǎng)IP地址3或者能訪問Internet的某個IP地址3
主機(jī)B(客戶端):
網(wǎng)卡1:內(nèi)網(wǎng)IP地址2
主機(jī)B想通過主機(jī)A訪問Internet,只需要主機(jī)B指定主機(jī)A為網(wǎng)關(guān),主機(jī)A能夠?qū)碜灾鳈C(jī)B的包偽裝成主機(jī)A上的網(wǎng)卡2上的IP即可(sNAT)。
因此云主機(jī)環(huán)境也是一樣,只要保證兩個云主機(jī)間內(nèi)網(wǎng)是連通的,另一臺云主機(jī)能訪問Internet即可。如果某兩個云主機(jī)內(nèi)網(wǎng)不通,但可以通過***連通,也可以實(shí)現(xiàn)。
(一)下面是兩個主機(jī)間通過內(nèi)網(wǎng)IP直接連接模擬訪問Internet的例子。
主機(jī)A(服務(wù)端):
網(wǎng)卡1:10.20.0.128(eth0,無Internet訪問)
網(wǎng)卡2:192.168.1.52(eth2,Internet訪問)
主機(jī)B(客戶端):
網(wǎng)卡1:10.20.0.129(eth0,無Internet訪問)
主機(jī)A操作:
開啟iptables轉(zhuǎn)發(fā)功能:
sysctl -w net.ipv4.conf.default.accept_source_route=1 sysctl -w net.ipv4.conf.default.rp_filter=0 sysctl -w net.ipv4.ip_forward=1
配置iptables NAT規(guī)則:
modprobe iptable_nat iptables -t nat -A POSTROUTING -s 10.20.0.0/24 -o eth2 -j MASQUERADE
刪除iptables拒絕轉(zhuǎn)發(fā)規(guī)則:
iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited
主機(jī)B操作:
將默認(rèn)網(wǎng)關(guān)配置成主機(jī)A的網(wǎng)卡1地址:
route add -host 10.20.0.128/32 dev eth0 route add default gw 10.20.0.128 dev eth0
(二)下面是兩個主機(jī)間通過Open×××連接模擬訪問Internet的例子。
主機(jī)A(服務(wù)端,CentOS6.x):
網(wǎng)卡1:10.20.0.128(eth0,無Internet訪問)
網(wǎng)卡2:192.168.1.52(eth2,Internet訪問)
主機(jī)B(客戶端,CentOS6.x):
網(wǎng)卡1:10.20.0.129(eth0,無Internet訪問)
主機(jī)A操作:
安裝Open×××(安裝Open×××也可以參考《CentOS6.7安裝Open×××服務(wù)端》):
yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum -y install openssl open*** cd /etc/open*** git clone https://github.com/Open×××/easy-rsa.git cd /etc/open***/easy-rsa/ git checkout -b v2.2.1 cp -r easy-rsa/2.0 /etc/open***/easy-rsa/ cd /etc/open***/easy-rsa/2.0/ vim im vars export EASY_RSA="`pwd`" export OPENSSL="openssl" export PKCS11TOOL="pkcs11-tool" export GREP="grep" export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA` export KEY_DIR="$EASY_RSA/keys" echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR export PKCS11_MODULE_PATH="dummy" export PKCS11_PIN="dummy" export KEY_SIZE=2048 export CA_EXPIRE=3650 export KEY_EXPIRE=3650 export KEY_COUNTRY="CN" export KEY_PROVINCE="Shandong" export KEY_CITY="QingDao" export KEY_ORG="51devops" export KEY_EMAIL="uberurey_ups@163.com" export KEY_OU="Ops" export KEY_NAME="51devops"
生成Open××× 證書以及key:
source vars ./clean-all ./pkitool --initca ./pkitool --server node1.51devops.com ./build-dh # ./build-key node1.51devops.com ./build-key node2.51devops.com chmod 400 /etc/open***/easy-rsa/2.0/keys/node1.51devops.com.key
編寫一個Open××× Server端的配置文件:
vim /etc/open***/server.conf
port 1194 proto tcp dev tun ca /etc/open***/easy-rsa/2.0/keys/ca.crt cert /etc/open***/easy-rsa/2.0/keys/node1.51devops.com.crt key /etc/open***/easy-rsa/2.0/keys/node1.51devops.com.key dh /etc/open***/easy-rsa/2.0/keys/dh3048.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist clientiplist.txt client-to-client duplicate-cn keepalive 10 120 comp-lzo persist-key persist-tun status /var/log/open***-status.log log /var/log/open***.log log-append /var/log/open***.log verb 3
啟動Open×××并配置iptables:
service open*** start service open*** status ifconfig tun0 cat /var/log/open***.log cat /var/log/open***-status.log iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 1194 -j ACCEPT # iptables -I INPUT -m state --state NEW -m udp -p udp --dport 1194 -j ACCEPT iptables-save || service iptables status service iptables save
編輯內(nèi)核參數(shù),啟用轉(zhuǎn)發(fā)功能:
vim /etc/sysctl.conf net.ipv4.conf.default.accept_source_route = 1 net.ipv4.conf.default.rp_filter = 0 net.ipv4.ip_forward = 1
或者:
sysctl -w net.ipv4.conf.default.accept_source_route=1 sysctl -w net.ipv4.conf.default.rp_filter=0 sysctl -w net.ipv4.ip_forward=1
配置iptables,配置sNAT和FORWARD規(guī)則:
modprobe iptable_nat iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth2 -j MASQUERADE iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited service iptables save || iptables-save > /etc/sysconfig/iptables
tips:也可以清空iptables所有配置,再添加允許規(guī)則,這樣可以避開一些reject規(guī)則。
可以通過iptables -t nat -nL -v命令查看nat表狀態(tài)。
iptables -t nat -A POSTROUTING -s 10.20.0.0/24 -o eth2 -j MASQUERADE
配置主機(jī)B(客戶端)
安裝Open×××客戶端:
yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum -y install openssl open***
編輯Open××× Client配置文件:
vim /etc/open***/client.conf client dev tun port 1194 proto tcp remote 10.20.0.128 1194 resolv-retry infinite nobind persist-tun ca /etc/open***/ca.crt cert /etc/open***/node2.51devops.com.crt key /etc/open***/node2.51devops.com.key remote-cert-tls server script-security 3 ns-cert-type server comp-lzo adaptive verb 3 mute 20
縮小證書文件的權(quán)限,只允許當(dāng)前用戶訪問,不允許組內(nèi)其他用戶和其他組訪問
chmod 400 /etc/open***/node2.51devops.com.key service open*** restart
配置路由:
route add -host 10.8.0.1/32 dev tun0 route add default gw 10.8.0.1 dev tun0
測試連接:
ping -c4 10.8.0.1 ping -c4 114.114.114.114
在Open×××連接前需要注意證書一定配置正確,時間同步,軟件版本最好保持一致、OpenSSL軟件包升級到最新版本。
tag:Linux網(wǎng)絡(luò),Open×××配置,iptables sNAT
--end--
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。