我需要通过隐藏/连接在另一个后面的SSH和Samba来访问一个Linux机器。
build立 :-
一个开关BC
| ---- | | --- | | ---- | | ---- |
| eth0的| ---- | | ---- | eth0的| | |
| ---- | | --- | | eth1的| ---- | eth1的|
| ---- | | ---- |
例如,从A到C的SSH / Samba
这个怎么办?
我在想这不能通过IP来完成? 或者可以吗?
B可以说“嗨在eth0,如果你在寻找192.168.0.2,它在eth1这里”?
这是NAT吗? 这是一个很大的私人networking,那么如果另一台PC有这个IP呢?
更可能是PAT?
A会说“嗨192.168.109.15:1234”
B会说“嗨eth0,端口1234的stream量继续在这里eth1”
这怎么可能呢?
而SSH /桑巴恶魔会看到正确的数据包头信息和工作?
IP信息: –
A - eth0 - 192.168.109.2 B-eth0-B1 = 192.168.109.15B2 = 172.24.40.130 - eth1 - 192.168.0.1 C - eth1 - 192.168.0.2
A,B&C是RHEL(RedHat),但Windows电脑可以连接到交换机。 我configuration了192.168.0。* IP,它们是可以改变的。
Eddie回复后更新
几个问题(和机器的IP是不同的!)
从A: –
ssh 172.24.40.130工作正常,(可以到B2)
但ssh 172.24.40.130 -p 2022 -vv超时: –
OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug2: ssh_connect: needpriv 0 debug1: Connecting to 172.24.40.130 [172.24.40.130] port 2022. ...wait ages... debug1: connect to address 172.24.40.130 port 2022: Connection timed out ssh: connect to host 172.24.40.130 port 2022: Connection timed out
从B2: –
$ service iptables status Table: filter Chain INPUT (policy ACCEPT) num target prot opt source destination Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 192.168.0.2 tcp dpt:22 Chain OUTPUT (policy ACCEPT) num target prot opt source destination Table: nat Chain PREROUTING (policy ACCEPT) num target prot opt source destination 1 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2022 to:192.168.0.2:22 Chain POSTROUTING (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination
而从B2到C的ssh工作正常: –
$ ssh 192.168.0.2
路线信息: –
$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 0 0 0 eth1 172.24.40.0 * 255.255.255.0 U 0 0 0 eth0 169.254.0.0 * 255.255.0.0 U 0 0 0 eth1 default 172.24.40.1 0.0.0.0 UG 0 0 0 eth0 $ ip route 192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.1 172.24.40.0/24 dev eth0 proto kernel scope link src 172.24.40.130 169.254.0.0/16 dev eth1 scope link default via 172.24.40.1 dev eth0
所以我只是不知道为什么端口转发不能从A到B2?
你所谓的PAT会起作用。 你需要运行iptables(或者一些可定制的防火墙)。 然后运行以下命令:
iptables -t nat -A PREROUTING -p tcp --dport 22 -p DNAT --to-destination 192.168.0.2 iptables -t nat -A PREROUTING -p tcp --dport 135:139 -p DNAT --to-destination 192.168.0.2 iptables -t nat -A PREROUTING -p tcp --dport 445 -p DNAT --to-destination 192.168.0.2 service iptables save echo 1 > /proc/sys/net/ipv4/ip_forward
在文件/etc/sysctl.conf中,更改下列行:
net.ipv4.ip_forward = 0
至
net.ipv4.ip_forward = 1
对于SSH
在B:
#Arbitrary port SOME_PORT=2022 iptables -t nat -I PREROUTING -p tcp --dport $SOME_PORT -j DNAT --to-destination 192.168.0.2:22 iptables -I FORWARD -p tcp --dport 22 -d 192.168.0.2 -j ACCEPT #On a machine type A: ssh -p $SOME_PORT
对于桑巴
是否有可能在B上通过nfs挂载C共享,然后在B上设置samba? 如果没有,那么你可以redirect的桑巴港口:
iptables -t nat -I PREROUTING -p tcp -m multiport –dports 139,445 -j DNAT --to-destination 192.168.0.2 iptables -t nat -I PREROUTING -p udp –dport 137:138 -j DNAT --to-destination 192.168.0.2
如果Samba已经在B上运行,那么你可以在B上绑定一个额外的IP地址,并转发给C(你也可以通过ssh来保持端口22的存在。对0.0.0.0地址开始的服务保持谨慎):
ifconfig eth0:1 192.168.109.16 netmask 255.255.255.0 iptables -t nat -I PREROUTING -d 192.168.15.109.16 -p tcp --dport 22 -j DNAT --to-destination 192.168.0.2 iptables -t nat -I PREROUTING -d 192.168.15.109.16 -p tcp -m multiport –dports 139,445 -j DNAT --to-destination 192.168.0.2 iptables -t nat -I PREROUTING -d 192.168.15.109.16 -p udp –dport 137:138 -j DNAT --to-destination 192.168.0.2
编辑我看你还有问题; 确保:
机器C有通过机器B回到用户的路由。如果没有,则在机器B上设置伪装规则:
iptables -t nat -I POSTROUTING -d 192.168.0.2 -p tcp –dport 22 -j MASQUERADE
tcpdump可以用于排除故障。 在机器B上:
#capture and display packets heading to 192.168.0.2 tcpdump -i any -p tcp ip host 192.168.0.2 and port 22
嗯。 那么,假设交换机始终将stream量路由到机器B,则可以执行以下操作:
route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1
这应该告诉机器B,如果stream量来自192.168.0.0/24,则将其发送出eth1。
这应该工作,这比build立一个NAT更容易。 您需要确保交换机知道将192.168.0.0/24的stream量路由到192.168.109.15(B上的Eth 0)。
@伊恩:路由不一定容易,但也不是那么难。 这就是路由器所做的。 假设你的交换机只是一个交换机,没有路由function,你不能用它来设置路由,但你必须有一个路由器或你的networking纯粹是一个本地局域网,没有互联网接入。
检查你的机器,并找出默认网关的位置(在linux的机器上,你可以只inputroute ,不带任何参数。你的默认网关路由是这样的:
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
这是你的“核心”路由器。 那就是所有的机器都在寻找其他子网上的机器。 这就是您需要添加指向B机器的路由作为192.168.0.0/24子网的网关路由器的位置。
如果你可以在路由器上给我一些信息,我可以告诉你如何添加路由。