Iptables
Ubuntu Server 15.04 作為具有多個子網的路由器和 DHCP 伺服器
在我的公司,我被分配建立一個新網路,其中 1 台 ubuntu 伺服器管理 3 個子網的 DHCP,允許這些子網相互通信,並共享與子網的公共連接。所有這些都超過 1 個網卡。DHCP 配置為通過 eth0 進行連接,並且通過虛擬介面 eth0:1 管理與公共的連接。
/etc/network/interfaces 的配置如下所示:
#The local network interface auto eth0 iface eth0 inet static address 10.0.1.1 netmask 255.255.240.0 #The public virtual network interface auto eth0:1 iface eth0:1 inet static address 10.0.0.3 netmask 255.255.255.0 gateway 10.0.0.1 dns-nameservers 10.0.0.1 ##IP-routing table # modem + sonicwall up route add -net 10.0.0.0/24 gw 10.0.0.1 dev eth0:1 up route add -net 10.0.0.0/24 dev eth0:1 # servers up route add -net 10.0.1.0/24 gw 10.0.1.1 dev eth0 up route add -net 10.0.1.0/24 dev eth0 # printers up route add -net 10.0.7.0/24 gw 10.0.1.1 dev eth0 up route add -net 10.0.7.0/24 dev eth0 # workstations up route add -net 10.0.8.0/21 gw 10.0.1.1 dev eth0 up route add -net 10.0.8.0/21 dev eth0
/etc/dhcp/dhcpd.conf:
# Global Configuration authoritative; option domain-name-servers 10.0.0.1; option routers 10.0.0.1; # ---------------------------------------------------------- # Subnetting # ---------------------------------------------------------- # Servers shared-network wonder { subnet 10.0.1.0 netmask 255.255.255.0 { range 10.0.1.1 10.0.1.255; option domain-name "servers.wonder.land.com"; option subnet-mask 255.255.255.0; option broadcast-address 10.0.1.255; option routers 10.0.1.1; default-lease-time 86400; max-lease-time 86400; host FILESERVER { hardware ethernet XX:XX:XX:XX:XX:XX; fixed-address 10.0.1.2; option host-name "FILESERVER"; } host MAILSERVER { hardware ethernet XX:XX:XX:XX:XX:XX; fixed-address 10.0.1.3; option host-name "MAILSERVER"; } } # Printers subnet 10.0.7.0 netmask 255.255.255.0 { range 10.0.7.1 10.0.7.255; option domain-name "printers.wonder.land.com"; option subnet-mask 255.255.255.0; option broadcast-address 10.0.7.255; option routers 10.0.1.1; default-lease-time 86400; max-lease-time 86400; host HP9500 { hardware ethernet XX:XX:XX:XX:XX:XX; fixed-address 10.0.7.1; option host-name "HP5900"; } } # Workstations subnet 10.0.8.0 netmask 255.255.248.0 { range 10.0.8.1 10.0.15.255; option domain-name "workstations.wonder.land.com"; option subnet-mask 255.255.248.0; option broadcast-address 10.0.8.255; option routers 10.0.1.1; default-lease-time 86400; max-lease-time 86400; filename "pxelinux.0"; # XXX host WSXXX001 { hardware ethernet XX:XX:XX:XX:XX:XX; fixed-address 10.0.8.1; option host-name "WSXXX001"; } host WSXXX002 { hardware ethernet XX:XX:XX:XX:XX:XX; fixed-address 10.0.8.2; option host-name "WSXXX002"; } host WSXXX003 { hardware ethernet XX:XX:XX:XX:XX:XX; fixed-address 10.0.8.3; option host-name "WSXXX003"; } # YYY host WSYYY001 { hardware ethernet XX:XX:XX:XX:XX:XX; fixed-address 10.0.8.4; option host-name "WSYYY001"; } } }
最後但並非最不重要的 iptables /etc/rc.local
#Connection between Subnets iptables -I FORWARD -i eth0 -o eth0 -s 10.0.0.0/24 -j ACCEPT iptables -I FORWARD -i eth0 -o eth0 -d 10.0.0.0/24 -j ACCEPT iptables -I FORWARD -i eth0 -o eth0 -s 10.0.1.0/24 -j ACCEPT iptables -I FORWARD -i eth0 -o eth0 -d 10.0.1.0/24 -j ACCEPT iptables -I FORWARD -i eth0 -o eth0 -s 10.0.7.0/24 -j ACCEPT iptables -I FORWARD -i eth0 -o eth0 -d 10.0.7.0/24 -j ACCEPT iptables -I FORWARD -i eth0 -o eth0 -s 10.0.8.0/21 -j ACCEPT iptables -I FORWARD -i eth0 -o eth0 -d 10.0.8.0/21 -j ACCEPT #Connection from local to public iptables -A FORWARD -i eth0 -o eth0:1 -j ACCEPT #Allow established connections iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -m state --state NEW ! -i eth0:1 -j ACCEPT iptables -A FORWARD -i eth0:1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT #Block not established connections from public to local iptables -A FORWARD -i eth0:1 -o eth0 -j REJECT #Masquerade local network iptables -t nat -A POSTROUTING -o eth0:1 -j MASQUERADE
我的問題是客戶端無法在子網之間進行通信,也無法與外部連接。我經歷了很多howtos,閱讀了其他人的問題,這些問題得到了解決方案,並在上週嘗試了很多。從 10.0.8.X 子網中的 Windows 機器,我可以 ping 每個客戶端到調製解調器 10.0.0.1,但沒有連接到網際網路。在 Ubuntu 機器上,我只能在同一個子網中 ping。但是現在我處於一個我不知道更多資訊並且需要幫助來完成這個項目的地步。我希望有人能夠為我指出正確的方向,以使整個網路正常工作。
您的配置有幾個問題:
- 您正在使用單個網路介面。這不會在公共子網和私有子網之間提供任何隔離,並可能導致其他問題。如果可能的話,你真的應該添加第二個網路介面。
- 您想使用多個子網,但在本地網路介面上沒有這些子網的 gw IP 地址。例如,在
10.0.7.0
帶有網路遮罩的子網的 DHCP 配置中,255.255.255.0
您指定了 router10.0.1.1
。這在子網之外,意味著該子網上的客戶端將無法訪問路由器。您應該為本地介面上的每個子網添加一個單獨的路由器 IP - 例如10.0.7.1
:up ip addr add 10.0.7.1/24 dev eth0
在iface eth0
/etc/network/interfaces 部分。- 然後將不需要您在操作中添加的路由
up
- 路由器將已經知道如何到達它們,因為它將具有路由器 IP。- 您是否啟用了 IP 轉發?檢查
cat /proc/sys/net/ipv4/ip_forwarding
- 它應該顯示的輸出1
。如果沒有,請在 /etc/sysctl.conf 中執行echo "1" > /proc/sys/net/ipv4/ip_forwarding
並設置net.ipv4.ip_forward=1
希望有幫助。