私は 2 台の Ubuntu サーバーを所有しています:
サーバー 1 (IP: 192.168.10.11) はオンラインで、2 つのネットワーク インターフェイス (内部、パブリック) に接続しています。
パブリックアクセスなしのサーバー 2 (IP: 192.168.10.10) (内部)
私は server1 を server2 のデフォルト ゲートウェイとして使用しようとしており、次の操作を実行しました。
# on online server (Jumpbox)
iptables -t nat -A POSTROUTING -s 192.168.10.10 ! -d 192.168.30.1/24 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
# On offline server
route add default gw 192.168.10.11
Dockerは両方にインストールされています(172.17.0.0)
相互に PING することはできますが、サーバー 2 から Google に PING することはできません。
答え1
Debian スタイル (怠惰な方法):
編集/etc/network/interfaces
iface eth0 inet static
address 10.0.0.1
netmask 255.0.0.0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE
怠惰な Crontab の方法:
編集/etc/crontab
@reboot root "echo 1 > /proc/sys/net/ipv4/ip_forward; iptables -t nat -A POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE; iptables -t nat -D POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE"
バッシュスタイル:
nano /root/allow_lan_nat.sh
自分に合った正しい LAN を調整する必要があります。たとえば
、192.168.0.0/24 (1 つの LAN サブネット、デフォルト クラス C)、
192.168.0.0/16 (192.168 のすべてのサブネット)、
172.16.0.0/16 (デフォルト クラス B)、
10.0.0.0/8 (デフォルト クラス A)などです。
#!/bin/bash
#Ajust the LAN, as above shown
MYLANIP=10.0.0.0/8
#The IFACE that has Internet.
MYINETIFACE=eth0
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s $MYLANIP -o $MYINETIFACE -j MASQUERADE
iptables -t nat -D POSTROUTING -s $MYLANIP -o $MYINETIFACE -j MASQUERADE
走るbash /root/allow_lan_nat.sh
あなたの質問に直接答えます
覚えておいてください、私がこの回答を述べた時点では、インターフェースがわからないので、ens3はインターネットに面したインターフェースであると想定しています。そうでない場合は、上記のように更新してください。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s '192.168.10.0/24' -o ens3 -j MASQUERADE
iptables -t nat -D POSTROUTING -s '192.168.10.0/24' -o ens3 -j MASQUERADE
REMINDはens3
インターネットに面したインターフェースである必要があります必要に応じて更新してください。