以下设置:
客户端(Outlook)<-----> |eth1 代理 eth0 | <-------> 互联网
我该如何做到这一点?将所有过滤表的标准策略设置为“接受”不会改变任何事情,那么预路由是可行的方法吗?
你好,Kai
答案1
您可以为此使用 SOCKS 代理服务器或 iptables 和 NAT。
我假设您的客户端主机位于本地网络内,并使用私有 IP 地址,例如 10.0.0.0/8、172.28.0.0/12 或 192.168.0.0/16。
先决条件:
- 你可以从你的Linux机器访问你的客户端主机
- 你可以从你的 Linux 机器访问互联网
第一步是启用 IP 转发:
# set kernel flag to allow IP forwarding from one to another network device
echo 1 > /proc/sys/net/ipv4/ip_forward
下一步是使用 iptables 激活 NAT:
# enable NAT for Internet device (here eth0)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# accept incoming Internet traffic, which is related to established outgoing connection
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# enable forwarding from internal device eth1 to external device eth0
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
这是一个非常简单的设置,我建议仔细研究 iptables,以便为您的 LAN 提供安全性以及为您的 LAN 提供对 Internet 的访问。
要限制仅对某些协议(此处为 SMTP、POP3、IMAP)的访问,您可以使用以下设置:
# enable NAT for Internet device (here eth0)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# accept incoming Internet traffic, which is related to established outgoing connection
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# enable forwarding from internal device eth1 to external device eth0
iptables -A FORWARD -i eth1 --dport 25 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth1 --dport 110 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth1 --dport 143 -o eth0 -j ACCEPT