Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
我是iptables的新手,现在已经进行了几天的Google搜索,但没有找到解决此问题的好方法。
我的计算机A的公共IP地址为5.6.7.8,可以不受限制地访问Internet。我有另一台计算机B,该计算机B具有只能访问计算机A的私有IP地址1.2.3.4。如何使用iptables将网络流量从B通过A转发到Internet?我需要使用http,ftp和https才能将apt-get与sudo一起使用。
两台计算机都运行Ubuntu Linux。我已经尝试过使用Squid,但我认为对于我需要做的事情来说太复杂了。
(这些显然不是真正的ip地址,但我注意到,如果不了解问题的设置,就无法理解一般的Internet解释。)
现在,您可以将以下内容另存为/etc/init.d/fwscript.sh:
该脚本必须是可执行的(chmod + x fwscript.sh)。现在,您只需键入以下内容即可运行它:./fwscript.sh [start | stop]。
现在让防火墙在启动时运行:
仅在要监视流量或缓存时才需要乌贼。但是,鱿鱼配置需要对fwscript.sh进行一些更改,并且您需要确定要透明代理还是不透明代理。
我现在尝试不用鱿鱼。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
我是iptables的新手,现在已经进行了几天的Google搜索,但没有找到解决此问题的好方法。
我的计算机A的公共IP地址为5.6.7.8,可以不受限制地访问Internet。我有另一台计算机B,该计算机B具有只能访问计算机A的私有IP地址1.2.3.4。如何使用iptables将网络流量从B通过A转发到Internet?我需要使用http,ftp和https才能将apt-get与sudo一起使用。
两台计算机都运行Ubuntu Linux。我已经尝试过使用Squid,但我认为对于我需要做的事情来说太复杂了。
(这些显然不是真正的ip地址,但我注意到,如果不了解问题的设置,就无法理解一般的Internet解释。)
最佳答案
我假设机器A有两个网络接口,例如eth0和eth1。接口eth1(外部)连接到调制解调器,而eth0(内部)连接到交换机或直接连接到计算机B。
首先,您需要在机器A中启用数据包转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
现在,您可以将以下内容另存为/etc/init.d/fwscript.sh:
#!/bin/sh
ipt=/sbin/iptables
extip=5.6.7.8 # replace with your EXTERNAL IP
lan=192.168.0.0/24 # your LAN
# start firewall
start_firwall {
echo "Enabling iptables firewall."
# default policies
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
# NAT
$ipt -t nat -A POSTROUTING -o eth0 -j SNAT --to-source $extip
# INPUT chain
$ipt -A INPUT -i lo -j ACCEPT
$ipt -A INPUT -i eth1 -s $lan -j ACCEPT
$ipt -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A INPUT -p tcp --destination-port 22 -j ACCEPT
# FORWARD chain
$ipt -A FORWARD -i eth1 -s $lan -j ACCEPT
$ipt -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
}
# stop firewall
stop_firwall {
$ipt -P INPUT DROP
$ipt -P OUTPUT DROP
$ipt -P FORWARD DROP
# allow internal traffic
$ipt -A INPUT -i eth1 -j ACCEPT
$ipt -A OUTPUT -o eth1 -j ACCEPT
}
# flushing, removing and zeroing tables
reset_firewall {
chains=`cat /proc/net/ip_tables_names`
for i in $chains; do
$debug $ipt -t $i -F
$debug $ipt -t $i -X
$debug $ipt -t $i -Z
done
}
case "$1" in
start|restart|reload)
reset_firewall
start_firewall
;;
stop)
reset_firewall
stop_firewall
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
;;
esac
exit 0
该脚本必须是可执行的(chmod + x fwscript.sh)。现在,您只需键入以下内容即可运行它:./fwscript.sh [start | stop]。
现在让防火墙在启动时运行:
update-rc.d fwscript.sh defaults 99
仅在要监视流量或缓存时才需要乌贼。但是,鱿鱼配置需要对fwscript.sh进行一些更改,并且您需要确定要透明代理还是不透明代理。
我现在尝试不用鱿鱼。
关于linux - iptables的基本实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24163899/