溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何配置無公網(wǎng)IP地址的云主機(jī)訪問Internet

發(fā)布時間:2020-07-08 08:44:12 來源:網(wǎng)絡(luò) 閱讀:1651 作者:urey_pp 欄目:網(wǎng)絡(luò)安全

拋開云主機(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--

向AI問一下細(xì)節(jié)

免責(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)容。

AI