두 개의 Ubuntu 서버가 있습니다.
서버 1(IP: 192.168.10.11)이 온라인이고 두 개의 네트워크 인터페이스(내부, 공용)에 연결됩니다.
공개 액세스가 없는 서버 2(IP: 192.168.10.10)(내부)
server2의 기본 게이트웨이로 server1을 사용하려고 하는데 다음과 같이 했습니다.
# 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할 수 있지만 server2에서는 Google에 PING을 수행할 수 없습니다.
답변1
데비안 스타일(게으른 방식):
편집하다/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
192.168.0.0/24(1개의 LAN 서브넷, 기본 클래스 C)
192.168.0.0/16(192.168의 모든 서브넷)
172.16.0.0/16(기본 클래스 B)
10.0 등 자신에게 맞는 올바른 LAN을 조정해야 합니다 . 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
주의하세요. ens3
인터넷에 연결된 인터페이스여야 합니다.필요에 맞게 업데이트하세요.